From 35992a1b9079ffa08cda30246125bf3cdaf2876f Mon Sep 17 00:00:00 2001 From: Mark Striemer Date: Wed, 31 Jan 2018 15:48:32 -0600 Subject: [PATCH 01/41] Bug 1421811 - Part 1: Support commands.update() to modify a command r=mixedpuppy MozReview-Commit-ID: 5A6ZmvNT294 --HG-- extra : rebase_source : fb8461900000fbf461eaabfc662051940b8de16a --- .../components/extensions/ext-browser.json | 1 + browser/components/extensions/ext-commands.js | 122 ++++++++-- .../extensions/schemas/commands.json | 28 +++ .../test/browser/browser-common.ini | 1 + .../browser/browser_ext_commands_update.js | 229 ++++++++++++++++++ 5 files changed, 365 insertions(+), 16 deletions(-) create mode 100644 browser/components/extensions/test/browser/browser_ext_commands_update.js diff --git a/browser/components/extensions/ext-browser.json b/browser/components/extensions/ext-browser.json index 1a4735fd150f..07ddb4370412 100644 --- a/browser/components/extensions/ext-browser.json +++ b/browser/components/extensions/ext-browser.json @@ -35,6 +35,7 @@ "url": "chrome://browser/content/ext-commands.js", "schema": "chrome://browser/content/schemas/commands.json", "scopes": ["addon_parent"], + "events": ["uninstall"], "manifest": ["commands"], "paths": [ ["commands"] diff --git a/browser/components/extensions/ext-commands.js b/browser/components/extensions/ext-commands.js index a01fa9b91b91..373275529e8a 100644 --- a/browser/components/extensions/ext-commands.js +++ b/browser/components/extensions/ext-commands.js @@ -8,41 +8,87 @@ ChromeUtils.defineModuleGetter(this, "ExtensionParent", "resource://gre/modules/ExtensionParent.jsm"); +ChromeUtils.defineModuleGetter(this, "ExtensionSettingsStore", + "resource://gre/modules/ExtensionSettingsStore.jsm"); var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; +function normalizeShortcut(shortcut) { + return shortcut ? shortcut.replace(/\s+/g, "") : null; +} + this.commands = class extends ExtensionAPI { - onManifestEntry(entryName) { + static async onUninstall(extensionId) { + // Cleanup the updated commands. In some cases the extension is installed + // and uninstalled so quickly that `this.commands` hasn't loaded yet. To + // handle that we need to make sure ExtensionSettingsStore is initialized + // before we clean it up. + await ExtensionSettingsStore.initialize(); + ExtensionSettingsStore + .getAllForExtension(extensionId, "commands") + .forEach(key => { + ExtensionSettingsStore.removeSetting(extensionId, "commands", key); + }); + } + + async onManifestEntry(entryName) { let {extension} = this; this.id = makeWidgetId(extension.id); this.windowOpenListener = null; // Map[{String} commandName -> {Object} commandProperties] - this.commands = this.loadCommandsFromManifest(this.extension.manifest); + this.manifestCommands = this.loadCommandsFromManifest(extension.manifest); + + this.commands = new Promise(async (resolve) => { + // Deep copy the manifest commands to commands so we can keep the original + // manifest commands and update commands as needed. + let commands = new Map(); + this.manifestCommands.forEach((command, name) => { + commands.set(name, {...command}); + }); + + // Update the manifest commands with the persisted updates from + // browser.commands.update(). + let savedCommands = await this.loadCommandsFromStorage(extension.id); + savedCommands.forEach((update, name) => { + let command = commands.get(name); + if (command) { + // We will only update commands, not add them. + Object.assign(command, update); + } + }); + + resolve(commands); + }); // WeakMap[Window -> ] this.keysetsMap = new WeakMap(); - this.register(); + await this.register(); } onShutdown(reason) { this.unregister(); } + registerKeys(commands) { + for (let window of windowTracker.browserWindows()) { + this.registerKeysToDocument(window, commands); + } + } + /** * Registers the commands to all open windows and to any which * are later created. */ - register() { - for (let window of windowTracker.browserWindows()) { - this.registerKeysToDocument(window); - } + async register() { + let commands = await this.commands; + this.registerKeys(commands); this.windowOpenListener = (window) => { if (!this.keysetsMap.has(window)) { - this.registerKeysToDocument(window); + this.registerKeysToDocument(window, commands); } }; @@ -77,8 +123,7 @@ this.commands = class extends ExtensionAPI { let os = PlatformInfo.os == "win" ? "windows" : PlatformInfo.os; for (let [name, command] of Object.entries(manifest.commands)) { let suggested_key = command.suggested_key || {}; - let shortcut = suggested_key[os] || suggested_key.default; - shortcut = shortcut ? shortcut.replace(/\s+/g, "") : null; + let shortcut = normalizeShortcut(suggested_key[os] || suggested_key.default); commands.set(name, { description: command.description, shortcut, @@ -87,15 +132,29 @@ this.commands = class extends ExtensionAPI { return commands; } + async loadCommandsFromStorage(extensionId) { + await ExtensionSettingsStore.initialize(); + let names = ExtensionSettingsStore.getAllForExtension(extensionId, "commands"); + return names.reduce((map, name) => { + let command = ExtensionSettingsStore.getSetting( + "commands", name, extensionId).value; + return map.set(name, command); + }, new Map()); + } + /** * Registers the commands to a document. * @param {ChromeWindow} window The XUL window to insert the Keyset. + * @param {Map} commands The commands to be set. */ - registerKeysToDocument(window) { + registerKeysToDocument(window, commands) { let doc = window.document; let keyset = doc.createElementNS(XUL_NS, "keyset"); keyset.id = `ext-keyset-id-${this.id}`; - this.commands.forEach((command, name) => { + if (this.keysetsMap.has(window)) { + this.keysetsMap.get(window).remove(); + } + commands.forEach((command, name) => { if (command.shortcut) { let keyElement = this.buildKey(doc, name, command.shortcut); keyset.appendChild(keyElement); @@ -235,15 +294,46 @@ this.commands = class extends ExtensionAPI { getAPI(context) { return { commands: { - getAll: () => { - let commands = this.commands; - return Promise.resolve(Array.from(commands, ([name, command]) => { + getAll: async () => { + let commands = await this.commands; + return Array.from(commands, ([name, command]) => { return ({ name, description: command.description, shortcut: command.shortcut, }); - })); + }); + }, + update: async ({name, description, shortcut}) => { + let {extension} = this; + let commands = await this.commands; + let command = commands.get(name); + + if (!command) { + throw new ExtensionError(`Unknown command "${name}"`); + } + + // Only store the updates so manifest changes can take precedence + // later. + let previousUpdates = await ExtensionSettingsStore.getSetting( + "commands", name, extension.id); + let commandUpdates = (previousUpdates && previousUpdates.value) || {}; + + if (description && description != command.description) { + commandUpdates.description = description; + command.description = description; + } + + if (shortcut && shortcut != command.shortcut) { + shortcut = normalizeShortcut(shortcut); + commandUpdates.shortcut = shortcut; + command.shortcut = shortcut; + } + + await ExtensionSettingsStore.addSetting( + extension.id, "commands", name, commandUpdates); + + this.registerKeys(commands); }, onCommand: new EventManager(context, "commands.onCommand", fire => { let listener = (eventName, commandName) => { diff --git a/browser/components/extensions/schemas/commands.json b/browser/components/extensions/schemas/commands.json index 9dbaf43ee1b6..fe02ba485b30 100644 --- a/browser/components/extensions/schemas/commands.json +++ b/browser/components/extensions/schemas/commands.json @@ -124,6 +124,34 @@ } ], "functions": [ + { + "name": "update", + "type": "function", + "async": true, + "description": "Update the details of an already defined command.", + "parameters": [ + { + "type": "object", + "name": "detail", + "description": "The new description for the command.", + "properties": { + "name": { + "type": "string", + "description": "The name of the command." + }, + "description": { + "type": "string", + "optional": true, + "description": "The new description for the command." + }, + "shortcut": { + "$ref": "manifest.KeyName", + "optional": true + } + } + } + ] + }, { "name": "getAll", "type": "function", diff --git a/browser/components/extensions/test/browser/browser-common.ini b/browser/components/extensions/test/browser/browser-common.ini index 62ce63fd4cac..2300768b001c 100644 --- a/browser/components/extensions/test/browser/browser-common.ini +++ b/browser/components/extensions/test/browser/browser-common.ini @@ -66,6 +66,7 @@ skip-if = (os == 'win' && !debug) # bug 1352668 [browser_ext_commands_execute_sidebar_action.js] [browser_ext_commands_getAll.js] [browser_ext_commands_onCommand.js] +[browser_ext_commands_update.js] [browser_ext_contentscript_connect.js] [browser_ext_contextMenus.js] [browser_ext_contextMenus_checkboxes.js] diff --git a/browser/components/extensions/test/browser/browser_ext_commands_update.js b/browser/components/extensions/test/browser/browser_ext_commands_update.js new file mode 100644 index 000000000000..717bd0d72e2a --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_commands_update.js @@ -0,0 +1,229 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +ChromeUtils.defineModuleGetter(this, "ExtensionSettingsStore", + "resource://gre/modules/ExtensionSettingsStore.jsm"); +ChromeUtils.defineModuleGetter(this, "AddonManager", + "resource://gre/modules/AddonManager.jsm"); + +function enableAddon(addon) { + return new Promise(resolve => { + AddonManager.addAddonListener({ + onEnabled(enabledAddon) { + if (enabledAddon.id == addon.id) { + resolve(); + AddonManager.removeAddonListener(this); + } + }, + }); + addon.userDisabled = false; + }); +} + +function disableAddon(addon) { + return new Promise(resolve => { + AddonManager.addAddonListener({ + onDisabled(disabledAddon) { + if (disabledAddon.id == addon.id) { + resolve(); + AddonManager.removeAddonListener(this); + } + }, + }); + addon.userDisabled = true; + }); +} + +add_task(async function test_update_defined_command() { + let extension; + let updatedExtension; + + registerCleanupFunction(async () => { + await extension.unload(); + + // updatedExtension might not have started up if we didn't make it that far. + if (updatedExtension) { + await updatedExtension.unload(); + } + + // Check that ESS is cleaned up on uninstall. + let storedCommands = ExtensionSettingsStore.getAllForExtension( + extension.id, "commands"); + is(storedCommands.length, 0, "There are no stored commands after unload"); + }); + + extension = ExtensionTestUtils.loadExtension({ + useAddonManager: "permanent", + manifest: { + version: "1.0", + applications: {gecko: {id: "commands@mochi.test"}}, + commands: { + foo: { + suggested_key: { + default: "Ctrl+Shift+I", + }, + description: "The foo command", + }, + }, + }, + background() { + browser.test.onMessage.addListener(async (msg, data) => { + if (msg == "update") { + await browser.commands.update(data); + return browser.test.sendMessage("updateDone"); + } else if (msg != "run") { + return; + } + // Test initial manifest command. + let commands = await browser.commands.getAll(); + browser.test.assertEq(1, commands.length, "There is 1 command"); + let command = commands[0]; + browser.test.assertEq("foo", command.name, "The name is right"); + browser.test.assertEq("The foo command", command.description, "The description is right"); + browser.test.assertEq("Ctrl+Shift+I", command.shortcut, "The shortcut is right"); + + // Update the shortcut. + await browser.commands.update({name: "foo", shortcut: "Ctrl+Shift+L"}); + + // Test the updated shortcut. + commands = await browser.commands.getAll(); + browser.test.assertEq(1, commands.length, "There is still 1 command"); + command = commands[0]; + browser.test.assertEq("foo", command.name, "The name is unchanged"); + browser.test.assertEq("The foo command", command.description, "The description is unchanged"); + browser.test.assertEq("Ctrl+Shift+L", command.shortcut, "The shortcut is updated"); + + // Update the description. + await browser.commands.update({name: "foo", description: "The only command"}); + + // Test the updated shortcut. + commands = await browser.commands.getAll(); + browser.test.assertEq(1, commands.length, "There is still 1 command"); + command = commands[0]; + browser.test.assertEq("foo", command.name, "The name is unchanged"); + browser.test.assertEq("The only command", command.description, "The description is updated"); + browser.test.assertEq("Ctrl+Shift+L", command.shortcut, "The shortcut is unchanged"); + + // Update the description and shortcut. + await browser.commands.update({ + name: "foo", + description: "The new command", + shortcut: " Alt+ Shift +P", + }); + + // Test the updated shortcut. + commands = await browser.commands.getAll(); + browser.test.assertEq(1, commands.length, "There is still 1 command"); + command = commands[0]; + browser.test.assertEq("foo", command.name, "The name is unchanged"); + browser.test.assertEq("The new command", command.description, "The description is updated"); + browser.test.assertEq("Alt+Shift+P", command.shortcut, "The shortcut is updated"); + + // Test a bad shortcut update. + browser.test.assertThrows( + () => browser.commands.update({name: "foo", shortcut: "Ctl+Shift+L"}), + /Type error for parameter detail/, + "It rejects for a bad shortcut"); + + // Try to update a command that doesn't exist. + await browser.test.assertRejects( + browser.commands.update({name: "bar", shortcut: "Ctrl+Shift+L"}), + 'Unknown command "bar"', + "It rejects for an unknown command"); + + browser.test.notifyPass("commands"); + }); + browser.test.sendMessage("ready"); + }, + }); + + await extension.startup(); + + function extensionKeyset(extensionId) { + return document.getElementById(makeWidgetId(`ext-keyset-id-${extensionId}`)); + } + + function checkKey(extensionId, shortcutKey, modifiers) { + let keyset = extensionKeyset(extensionId); + is(keyset.children.length, 1, "There is 1 key in the keyset"); + let key = keyset.children[0]; + is(key.getAttribute("key"), shortcutKey, "The key is correct"); + is(key.getAttribute("modifiers"), modifiers, "The modifiers are correct"); + } + + // Check that the is set for the original shortcut. + checkKey(extension.id, "I", "accel shift"); + + await extension.awaitMessage("ready"); + extension.sendMessage("run"); + await extension.awaitFinish("commands"); + + // Check that the has been updated. + checkKey(extension.id, "P", "alt shift"); + + // Check that the updated command is stored in ExtensionSettingsStore. + let storedCommands = ExtensionSettingsStore.getAllForExtension( + extension.id, "commands"); + is(storedCommands.length, 1, "There is only one stored command"); + let command = ExtensionSettingsStore.getSetting("commands", "foo", extension.id).value; + is(command.description, "The new command", "The description is stored"); + is(command.shortcut, "Alt+Shift+P", "The shortcut is stored"); + + // Check that the key is updated immediately. + extension.sendMessage("update", {name: "foo", shortcut: "Ctrl+Shift+M"}); + await extension.awaitMessage("updateDone"); + checkKey(extension.id, "M", "accel shift"); + + // Ensure all successive updates are stored. + // Force the command to only have a description saved. + await ExtensionSettingsStore.addSetting( + extension.id, "commands", "foo", {description: "description only"}); + // This command now only has a description set in storage, also update the shortcut. + extension.sendMessage("update", {name: "foo", shortcut: "Alt+Shift+P"}); + await extension.awaitMessage("updateDone"); + let storedCommand = await ExtensionSettingsStore.getSetting( + "commands", "foo", extension.id); + is(storedCommand.value.shortcut, "Alt+Shift+P", "The shortcut is saved correctly"); + is(storedCommand.value.description, "description only", "The description is saved correctly"); + + // Check that enable/disable removes the keyset and reloads the saved command. + let addon = await AddonManager.getAddonByID(extension.id); + await disableAddon(addon); + let keyset = extensionKeyset(extension.id); + is(keyset, null, "The extension keyset is removed when disabled"); + // Add some commands to storage, only "foo" should get loaded. + await ExtensionSettingsStore.addSetting( + extension.id, "commands", "foo", {shortcut: "Alt+Shift+P"}); + await ExtensionSettingsStore.addSetting( + extension.id, "commands", "unknown", {shortcut: "Ctrl+Shift+P"}); + storedCommands = ExtensionSettingsStore.getAllForExtension(extension.id, "commands"); + is(storedCommands.length, 2, "There are now 2 commands stored"); + await enableAddon(addon); + // Wait for the keyset to appear (it's async on enable). + await TestUtils.waitForCondition(() => extensionKeyset(extension.id)); + // The keyset is back with the value from ExtensionSettingsStore. + checkKey(extension.id, "P", "alt shift"); + + // Check that an update to a shortcut in the manifest is mapped correctly. + updatedExtension = ExtensionTestUtils.loadExtension({ + useAddonManager: "permanent", + manifest: { + version: "1.0", + applications: {gecko: {id: "commands@mochi.test"}}, + commands: { + foo: { + suggested_key: { + default: "Ctrl+Shift+L", + }, + description: "The foo command", + }, + }, + }, + }); + await updatedExtension.startup(); + + await TestUtils.waitForCondition(() => extensionKeyset(extension.id)); + // Shortcut is unchanged since it was previously updated. + checkKey(extension.id, "P", "alt shift"); +}); From 8c26de1d7cd6268d6cc23e3f35afe37e04e727b4 Mon Sep 17 00:00:00 2001 From: Mark Striemer Date: Wed, 31 Jan 2018 15:49:20 -0600 Subject: [PATCH 02/41] Bug 1421811 - Part 2: Support commands.reset() to reset a command's updates r=mixedpuppy MozReview-Commit-ID: 4hWGo1ZH6tn --HG-- extra : rebase_source : afa5b3dff8f77b5d5f87e71aa63918e1a4d31bfd --- browser/components/extensions/ext-commands.js | 18 ++++++++++++++++++ .../extensions/schemas/commands.json | 13 +++++++++++++ .../browser/browser_ext_commands_update.js | 9 +++++++++ 3 files changed, 40 insertions(+) diff --git a/browser/components/extensions/ext-commands.js b/browser/components/extensions/ext-commands.js index 373275529e8a..1ba3cc634759 100644 --- a/browser/components/extensions/ext-commands.js +++ b/browser/components/extensions/ext-commands.js @@ -335,6 +335,24 @@ this.commands = class extends ExtensionAPI { this.registerKeys(commands); }, + reset: async (name) => { + let {extension, manifestCommands} = this; + let commands = await this.commands; + let command = commands.get(name); + + if (!command) { + throw new ExtensionError(`Unknown command "${name}"`); + } + + let storedCommand = ExtensionSettingsStore.getSetting( + "commands", name, extension.id); + + if (storedCommand && storedCommand.value) { + commands.set(name, {...manifestCommands.get(name)}); + ExtensionSettingsStore.removeSetting(extension.id, "commands", name); + this.registerKeys(commands); + } + }, onCommand: new EventManager(context, "commands.onCommand", fire => { let listener = (eventName, commandName) => { fire.async(commandName); diff --git a/browser/components/extensions/schemas/commands.json b/browser/components/extensions/schemas/commands.json index fe02ba485b30..803299b00c7c 100644 --- a/browser/components/extensions/schemas/commands.json +++ b/browser/components/extensions/schemas/commands.json @@ -152,6 +152,19 @@ } ] }, + { + "name": "reset", + "type": "function", + "async": true, + "description": "Reset a command's details to what is specified in the manifest.", + "parameters": [ + { + "type": "string", + "name": "name", + "description": "The name of the command." + } + ] + }, { "name": "getAll", "type": "function", diff --git a/browser/components/extensions/test/browser/browser_ext_commands_update.js b/browser/components/extensions/test/browser/browser_ext_commands_update.js index 717bd0d72e2a..03578340c20e 100644 --- a/browser/components/extensions/test/browser/browser_ext_commands_update.js +++ b/browser/components/extensions/test/browser/browser_ext_commands_update.js @@ -72,6 +72,9 @@ add_task(async function test_update_defined_command() { if (msg == "update") { await browser.commands.update(data); return browser.test.sendMessage("updateDone"); + } else if (msg == "reset") { + await browser.commands.reset(data); + return browser.test.sendMessage("resetDone"); } else if (msg != "run") { return; } @@ -187,6 +190,12 @@ add_task(async function test_update_defined_command() { is(storedCommand.value.shortcut, "Alt+Shift+P", "The shortcut is saved correctly"); is(storedCommand.value.description, "description only", "The description is saved correctly"); + // Calling browser.commands.reset("foo") should reset to manifest version. + extension.sendMessage("reset", "foo"); + await extension.awaitMessage("resetDone"); + + checkKey(extension.id, "I", "accel shift"); + // Check that enable/disable removes the keyset and reloads the saved command. let addon = await AddonManager.getAddonByID(extension.id); await disableAddon(addon); From 5b4239522f27e3f5e6883a7405f522e472026ec0 Mon Sep 17 00:00:00 2001 From: Mark Striemer Date: Tue, 6 Feb 2018 12:55:40 -0600 Subject: [PATCH 03/41] Bug 1421811 - Part 3: Update shortcut in sidebar on update r=Gijs,mixedpuppy MozReview-Commit-ID: 4y02mCqwacg --HG-- extra : rebase_source : c0a0334d46037793faf3c6797903df70f8de0e51 --- browser/base/content/browser-sidebar.js | 26 +++-- browser/components/extensions/ext-commands.js | 19 +++- .../extensions/ext-sidebarAction.js | 3 +- .../browser/browser_ext_commands_update.js | 69 ++++++++++++++ .../test/browser/browser_ext_sidebarAction.js | 94 +++++++++++++++---- 5 files changed, 181 insertions(+), 30 deletions(-) diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js index 8de6b6f96329..8c35dddae008 100644 --- a/browser/base/content/browser-sidebar.js +++ b/browser/base/content/browser-sidebar.js @@ -119,6 +119,25 @@ var SidebarUI = { this._switcherTarget.classList.add("active"); }, + updateShortcut({button, key}) { + // If the shortcuts haven't been rendered yet then it will be set correctly + // on the first render so there's nothing to do now. + if (!this._addedShortcuts) { + return; + } + if (key) { + let keyId = key.getAttribute("id"); + button = this._switcherPanel.querySelector(`[key="${keyId}"]`); + } else if (button) { + let keyId = button.getAttribute("key"); + key = document.getElementById(keyId); + } + if (!button || !key) { + return; + } + button.setAttribute("shortcut", ShortcutUtils.prettifyShortcut(key)); + }, + _addedShortcuts: false, _ensureShortcutsShown() { if (this._addedShortcuts) { @@ -126,12 +145,7 @@ var SidebarUI = { } this._addedShortcuts = true; for (let button of this._switcherPanel.querySelectorAll("toolbarbutton[key]")) { - let keyId = button.getAttribute("key"); - let key = document.getElementById(keyId); - if (!key) { - continue; - } - button.setAttribute("shortcut", ShortcutUtils.prettifyShortcut(key)); + this.updateShortcut({button}); } }, diff --git a/browser/components/extensions/ext-commands.js b/browser/components/extensions/ext-commands.js index 1ba3cc634759..f2e03c13034c 100644 --- a/browser/components/extensions/ext-commands.js +++ b/browser/components/extensions/ext-commands.js @@ -13,6 +13,10 @@ ChromeUtils.defineModuleGetter(this, "ExtensionSettingsStore", var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; +const EXECUTE_PAGE_ACTION = "_execute_page_action"; +const EXECUTE_BROWSER_ACTION = "_execute_browser_action"; +const EXECUTE_SIDEBAR_ACTION = "_execute_sidebar_action"; + function normalizeShortcut(shortcut) { return shortcut ? shortcut.replace(/\s+/g, "") : null; } @@ -154,13 +158,20 @@ this.commands = class extends ExtensionAPI { if (this.keysetsMap.has(window)) { this.keysetsMap.get(window).remove(); } + let sidebarKey; commands.forEach((command, name) => { if (command.shortcut) { let keyElement = this.buildKey(doc, name, command.shortcut); keyset.appendChild(keyElement); + if (name == EXECUTE_SIDEBAR_ACTION) { + sidebarKey = keyElement; + } } }); doc.documentElement.appendChild(keyset); + if (sidebarKey) { + window.SidebarUI.updateShortcut({key: sidebarKey}); + } this.keysetsMap.set(window, keyset); } @@ -187,11 +198,11 @@ this.commands = class extends ExtensionAPI { // therefore the listeners for these elements will be garbage collected. keyElement.addEventListener("command", (event) => { let action; - if (name == "_execute_page_action") { + if (name == EXECUTE_PAGE_ACTION) { action = pageActionFor(this.extension); - } else if (name == "_execute_browser_action") { + } else if (name == EXECUTE_BROWSER_ACTION) { action = browserActionFor(this.extension); - } else if (name == "_execute_sidebar_action") { + } else if (name == EXECUTE_SIDEBAR_ACTION) { action = sidebarActionFor(this.extension); } else { this.extension.tabManager @@ -229,7 +240,7 @@ this.commands = class extends ExtensionAPI { // The modifiers are the remaining elements. keyElement.setAttribute("modifiers", this.getModifiersAttribute(parts)); - if (name == "_execute_sidebar_action") { + if (name == EXECUTE_SIDEBAR_ACTION) { let id = `ext-key-id-${this.id}-sidebar-action`; keyElement.setAttribute("id", id); } diff --git a/browser/components/extensions/ext-sidebarAction.js b/browser/components/extensions/ext-sidebarAction.js index 0b7abe82cab5..535fc37506f8 100644 --- a/browser/components/extensions/ext-sidebarAction.js +++ b/browser/components/extensions/ext-sidebarAction.js @@ -151,7 +151,7 @@ this.sidebarAction = class extends ExtensionAPI { } createMenuItem(window, details) { - let {document} = window; + let {document, SidebarUI} = window; // Use of the broadcaster allows browser-sidebar.js to properly manage the // checkmarks in the menus. @@ -190,6 +190,7 @@ this.sidebarAction = class extends ExtensionAPI { document.getElementById("viewSidebarMenu").appendChild(menuitem); let separator = document.getElementById("sidebar-extensions-separator"); separator.parentNode.insertBefore(toolbarbutton, separator); + SidebarUI.updateShortcut({button: toolbarbutton}); return menuitem; } diff --git a/browser/components/extensions/test/browser/browser_ext_commands_update.js b/browser/components/extensions/test/browser/browser_ext_commands_update.js index 03578340c20e..1c9cb574f2f6 100644 --- a/browser/components/extensions/test/browser/browser_ext_commands_update.js +++ b/browser/components/extensions/test/browser/browser_ext_commands_update.js @@ -236,3 +236,72 @@ add_task(async function test_update_defined_command() { // Shortcut is unchanged since it was previously updated. checkKey(extension.id, "P", "alt shift"); }); + +add_task(async function updateSidebarCommand() { + let extension = ExtensionTestUtils.loadExtension({ + useAddonManager: "temporary", + manifest: { + commands: { + _execute_sidebar_action: { + suggested_key: { + default: "Ctrl+Shift+E", + }, + }, + }, + sidebar_action: { + default_panel: "sidebar.html", + }, + }, + background() { + browser.test.onMessage.addListener(async (msg, data) => { + if (msg == "updateShortcut") { + await browser.commands.update(data); + return browser.test.sendMessage("done"); + } + throw new Error("Unknown message"); + }); + }, + files: { + "sidebar.html": ` + + + + + + + A Test Sidebar + + `, + + "sidebar.js": function() { + window.onload = () => { + browser.test.sendMessage("sidebar"); + }; + }, + }, + }); + await extension.startup(); + await extension.awaitMessage("sidebar"); + + // Show and hide the switcher panel to generate the initial shortcuts. + let switcherShown = promisePopupShown(SidebarUI._switcherPanel); + SidebarUI.showSwitcherPanel(); + await switcherShown; + let switcherHidden = promisePopupHidden(SidebarUI._switcherPanel); + SidebarUI.hideSwitcherPanel(); + await switcherHidden; + + let buttonId = `button_${makeWidgetId(extension.id)}-sidebar-action`; + let button = document.getElementById(buttonId); + let shortcut = button.getAttribute("shortcut"); + ok(shortcut.endsWith("E"), "The button has the shortcut set"); + + extension.sendMessage( + "updateShortcut", {name: "_execute_sidebar_action", shortcut: "Ctrl+Shift+M"}); + await extension.awaitMessage("done"); + + shortcut = button.getAttribute("shortcut"); + ok(shortcut.endsWith("M"), "The button shortcut has been updated"); + + await extension.unload(); +}); diff --git a/browser/components/extensions/test/browser/browser_ext_sidebarAction.js b/browser/components/extensions/test/browser/browser_ext_sidebarAction.js index 404301cd1b9c..0375533adfa9 100644 --- a/browser/components/extensions/test/browser/browser_ext_sidebarAction.js +++ b/browser/components/extensions/test/browser/browser_ext_sidebarAction.js @@ -6,13 +6,6 @@ requestLongerTimeout(2); let extData = { manifest: { - commands: { - _execute_sidebar_action: { - suggested_key: { - default: "Ctrl+Shift+I", - }, - }, - }, sidebar_action: { default_panel: "sidebar.html", }, @@ -57,6 +50,17 @@ let extData = { }, }; +function getExtData(manifestUpdates = {}) { + return { + ...extData, + manifest: { + ...extData.manifest, + ...manifestUpdates, + }, + }; +} + + async function sendMessage(ext, msg, data = undefined) { ext.sendMessage({msg, data}); await ext.awaitMessage("done"); @@ -64,7 +68,7 @@ async function sendMessage(ext, msg, data = undefined) { add_task(async function sidebar_initial_install() { ok(document.getElementById("sidebar-box").hidden, "sidebar box is not visible"); - let extension = ExtensionTestUtils.loadExtension(extData); + let extension = ExtensionTestUtils.loadExtension(getExtData()); await extension.startup(); // Test sidebar is opened on install await extension.awaitMessage("sidebar"); @@ -77,14 +81,14 @@ add_task(async function sidebar_initial_install() { add_task(async function sidebar_two_sidebar_addons() { - let extension2 = ExtensionTestUtils.loadExtension(extData); + let extension2 = ExtensionTestUtils.loadExtension(getExtData()); await extension2.startup(); // Test sidebar is opened on install await extension2.awaitMessage("sidebar"); ok(!document.getElementById("sidebar-box").hidden, "sidebar box is visible"); // Test second sidebar install opens new sidebar - let extension3 = ExtensionTestUtils.loadExtension(extData); + let extension3 = ExtensionTestUtils.loadExtension(getExtData()); await extension3.startup(); // Test sidebar is opened on install await extension3.awaitMessage("sidebar"); @@ -98,7 +102,7 @@ add_task(async function sidebar_two_sidebar_addons() { }); add_task(async function sidebar_empty_panel() { - let extension = ExtensionTestUtils.loadExtension(extData); + let extension = ExtensionTestUtils.loadExtension(getExtData()); await extension.startup(); // Test sidebar is opened on install await extension.awaitMessage("sidebar"); @@ -109,7 +113,7 @@ add_task(async function sidebar_empty_panel() { add_task(async function sidebar_isOpen() { info("Load extension1"); - let extension1 = ExtensionTestUtils.loadExtension(extData); + let extension1 = ExtensionTestUtils.loadExtension(getExtData()); await extension1.startup(); info("Test extension1's sidebar is opened on install"); @@ -117,14 +121,8 @@ add_task(async function sidebar_isOpen() { await sendMessage(extension1, "isOpen", {result: true}); let sidebar1ID = SidebarUI.currentID; - // Test that the key is set for the extension. - let button = document.getElementById(`button_${makeWidgetId(extension1.id)}-sidebar-action`); - ok(button.hasAttribute("key"), "The menu item has a key specified"); - let key = document.getElementById(button.getAttribute("key")); - ok(key, "The key attribute finds the related key element"); - info("Load extension2"); - let extension2 = ExtensionTestUtils.loadExtension(extData); + let extension2 = ExtensionTestUtils.loadExtension(getExtData()); await extension2.startup(); info("Test extension2's sidebar is opened on install"); @@ -168,3 +166,61 @@ add_task(async function sidebar_isOpen() { await extension1.unload(); await extension2.unload(); }); + +add_task(async function testShortcuts() { + function verifyShortcut(id, commandKey) { + // We're just testing the command key since the modifiers have different + // icons on different platforms. + let button = document.getElementById(`button_${makeWidgetId(id)}-sidebar-action`); + ok(button.hasAttribute("key"), "The menu item has a key specified"); + let key = document.getElementById(button.getAttribute("key")); + ok(key, "The key attribute finds the related key element"); + ok(button.getAttribute("shortcut").endsWith(commandKey), + "The shortcut has the right key"); + } + + let extension1 = ExtensionTestUtils.loadExtension( + getExtData({ + commands: { + _execute_sidebar_action: { + suggested_key: { + default: "Ctrl+Shift+I", + }, + }, + }, + })); + let extension2 = ExtensionTestUtils.loadExtension( + getExtData({ + commands: { + _execute_sidebar_action: { + suggested_key: { + default: "Ctrl+Shift+E", + }, + }, + }, + })); + + await extension1.startup(); + await extension1.awaitMessage("sidebar"); + + // Open and close the switcher panel to trigger shortcut content rendering. + let switcherPanelShown = promisePopupShown(SidebarUI._switcherPanel); + SidebarUI.showSwitcherPanel(); + await switcherPanelShown; + let switcherPanelHidden = promisePopupHidden(SidebarUI._switcherPanel); + SidebarUI.hideSwitcherPanel(); + await switcherPanelHidden; + + // Test that the key is set for the extension after the shortcuts are rendered. + verifyShortcut(extension1.id, "I"); + + await extension2.startup(); + await extension2.awaitMessage("sidebar"); + + // Once the switcher panel has been opened new shortcuts should be added + // automatically. + verifyShortcut(extension2.id, "E"); + + await extension1.unload(); + await extension2.unload(); +}); From 962c6d6974a12d3d9c21650bbc8c7ec54c371249 Mon Sep 17 00:00:00 2001 From: Adrian Wielgosik Date: Fri, 9 Feb 2018 19:25:02 +0100 Subject: [PATCH 04/41] Bug 1437135 - Remove nsIDOMValidityState. r=bz MozReview-Commit-ID: AlRrLxSiIre --HG-- extra : rebase_source : 93e6d2b4e84b3a1e1781e00e611336508aef8dc5 --- dom/html/ValidityState.cpp | 78 ------------------- dom/html/ValidityState.h | 4 +- dom/html/nsIConstraintValidation.cpp | 10 --- dom/html/nsIConstraintValidation.h | 3 - dom/interfaces/html/moz.build | 1 - .../html/nsIDOMHTMLInputElement.idl | 1 - dom/interfaces/html/nsIDOMValidityState.idl | 30 ------- xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp | 3 - 8 files changed, 1 insertion(+), 129 deletions(-) delete mode 100644 dom/interfaces/html/nsIDOMValidityState.idl diff --git a/dom/html/ValidityState.cpp b/dom/html/ValidityState.cpp index b23eb6daa421..017c340de6be 100644 --- a/dom/html/ValidityState.cpp +++ b/dom/html/ValidityState.cpp @@ -18,7 +18,6 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(ValidityState) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ValidityState) NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY(nsIDOMValidityState) NS_INTERFACE_MAP_ENTRY(nsISupports) NS_INTERFACE_MAP_END @@ -27,83 +26,6 @@ ValidityState::ValidityState(nsIConstraintValidation* aConstraintValidation) { } -NS_IMETHODIMP -ValidityState::GetValueMissing(bool* aValueMissing) -{ - *aValueMissing = ValueMissing(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetTypeMismatch(bool* aTypeMismatch) -{ - *aTypeMismatch = TypeMismatch(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetPatternMismatch(bool* aPatternMismatch) -{ - *aPatternMismatch = PatternMismatch(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetTooLong(bool* aTooLong) -{ - *aTooLong = TooLong(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetTooShort(bool* aTooShort) -{ - *aTooShort = TooShort(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetRangeUnderflow(bool* aRangeUnderflow) -{ - *aRangeUnderflow = RangeUnderflow(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetRangeOverflow(bool* aRangeOverflow) -{ - *aRangeOverflow = RangeOverflow(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetStepMismatch(bool* aStepMismatch) -{ - *aStepMismatch = StepMismatch(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetBadInput(bool* aBadInput) -{ - *aBadInput = BadInput(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetCustomError(bool* aCustomError) -{ - *aCustomError = CustomError(); - return NS_OK; -} - -NS_IMETHODIMP -ValidityState::GetValid(bool* aValid) -{ - *aValid = Valid(); - return NS_OK; -} - JSObject* ValidityState::WrapObject(JSContext* aCx, JS::Handle aGivenProto) { diff --git a/dom/html/ValidityState.h b/dom/html/ValidityState.h index 4dbb94aada8c..04995905eaf8 100644 --- a/dom/html/ValidityState.h +++ b/dom/html/ValidityState.h @@ -7,7 +7,6 @@ #ifndef mozilla_dom_ValidityState_h #define mozilla_dom_ValidityState_h -#include "nsIDOMValidityState.h" #include "nsIConstraintValidation.h" #include "nsWrapperCache.h" #include "js/TypeDecls.h" @@ -15,7 +14,7 @@ namespace mozilla { namespace dom { -class ValidityState final : public nsIDOMValidityState, +class ValidityState final : public nsISupports, public nsWrapperCache { ~ValidityState() {} @@ -23,7 +22,6 @@ class ValidityState final : public nsIDOMValidityState, public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ValidityState) - NS_DECL_NSIDOMVALIDITYSTATE friend class ::nsIConstraintValidation; diff --git a/dom/html/nsIConstraintValidation.cpp b/dom/html/nsIConstraintValidation.cpp index df0cf92f788c..d982ad0d5e44 100644 --- a/dom/html/nsIConstraintValidation.cpp +++ b/dom/html/nsIConstraintValidation.cpp @@ -45,16 +45,6 @@ nsIConstraintValidation::Validity() return mValidity; } -nsresult -nsIConstraintValidation::GetValidity(nsIDOMValidityState** aValidity) -{ - NS_ENSURE_ARG_POINTER(aValidity); - - NS_ADDREF(*aValidity = Validity()); - - return NS_OK; -} - void nsIConstraintValidation::GetValidationMessage(nsAString& aValidationMessage, ErrorResult& aError) diff --git a/dom/html/nsIConstraintValidation.h b/dom/html/nsIConstraintValidation.h index b8231fa05437..3c472af7167e 100644 --- a/dom/html/nsIConstraintValidation.h +++ b/dom/html/nsIConstraintValidation.h @@ -10,8 +10,6 @@ #include "nsISupports.h" #include "nsString.h" -class nsIDOMValidityState; - namespace mozilla { class ErrorResult; namespace dom { @@ -81,7 +79,6 @@ protected: // You can't instantiate an object from that class. nsIConstraintValidation(); - nsresult GetValidity(nsIDOMValidityState** aValidity); nsresult CheckValidity(bool* aValidity); void SetCustomValidity(const nsAString& aError); diff --git a/dom/interfaces/html/moz.build b/dom/interfaces/html/moz.build index f0d055fee54a..5e5b81637e8e 100644 --- a/dom/interfaces/html/moz.build +++ b/dom/interfaces/html/moz.build @@ -13,7 +13,6 @@ XPIDL_SOURCES += [ 'nsIDOMHTMLMediaElement.idl', 'nsIDOMMozBrowserFrame.idl', 'nsIDOMTimeRanges.idl', - 'nsIDOMValidityState.idl', 'nsIMozBrowserFrame.idl', ] diff --git a/dom/interfaces/html/nsIDOMHTMLInputElement.idl b/dom/interfaces/html/nsIDOMHTMLInputElement.idl index 681544c07d4c..0d59312054a2 100644 --- a/dom/interfaces/html/nsIDOMHTMLInputElement.idl +++ b/dom/interfaces/html/nsIDOMHTMLInputElement.idl @@ -7,7 +7,6 @@ interface nsIControllers; interface nsIDOMFileList; -interface nsIDOMValidityState; interface nsIDOMHTMLFormElement; /** diff --git a/dom/interfaces/html/nsIDOMValidityState.idl b/dom/interfaces/html/nsIDOMValidityState.idl deleted file mode 100644 index fdd24a6fb69f..000000000000 --- a/dom/interfaces/html/nsIDOMValidityState.idl +++ /dev/null @@ -1,30 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "domstubs.idl" - -/** - * The nsIDOMValidityState interface is the interface to a ValidityState - * object which represents the validity states of an element. - * - * For more information on this interface please see - * http://www.whatwg.org/specs/web-apps/current-work/#validitystate - */ - -[uuid(00bed276-f1f7-492f-a039-dbd9b9efc10b)] -interface nsIDOMValidityState : nsISupports -{ - readonly attribute boolean valueMissing; - readonly attribute boolean typeMismatch; - readonly attribute boolean patternMismatch; - readonly attribute boolean tooLong; - readonly attribute boolean tooShort; - readonly attribute boolean rangeUnderflow; - readonly attribute boolean rangeOverflow; - readonly attribute boolean stepMismatch; - readonly attribute boolean badInput; - readonly attribute boolean customError; - readonly attribute boolean valid; -}; diff --git a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp index 7b4bbfe7e336..4a2418f6e613 100644 --- a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp +++ b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp @@ -60,7 +60,6 @@ #include "nsIDOMTimeRanges.h" #include "nsIDOMTransitionEvent.h" #include "nsIDOMUIEvent.h" -#include "nsIDOMValidityState.h" #include "nsIDOMWheelEvent.h" #include "nsIDOMXMLDocument.h" #include "nsIDOMXULCommandEvent.h" @@ -150,7 +149,6 @@ #include "mozilla/dom/TransitionEventBinding.h" #include "mozilla/dom/TreeBoxObjectBinding.h" #include "mozilla/dom/UIEventBinding.h" -#include "mozilla/dom/ValidityStateBinding.h" #include "mozilla/dom/WheelEventBinding.h" #include "mozilla/dom/XMLDocumentBinding.h" #include "mozilla/dom/XMLHttpRequestEventTargetBinding.h" @@ -273,7 +271,6 @@ const ComponentsInterfaceShimEntry kComponentsInterfaceShimMap[] = DEFINE_SHIM(TransitionEvent), DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsITreeBoxObject, TreeBoxObject), DEFINE_SHIM(UIEvent), - DEFINE_SHIM(ValidityState), DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIWebBrowserPersistable, FrameLoader), DEFINE_SHIM(WheelEvent), DEFINE_SHIM(XMLDocument), From d2bb22650d92c2620f66222ad41483bc2fa192d1 Mon Sep 17 00:00:00 2001 From: Tim Nguyen Date: Fri, 9 Feb 2018 19:23:56 +0000 Subject: [PATCH 05/41] Bug 1429573 - Use input[type=number] in textbox[type=number] implementation. r=Paolo,surkov * The number is no longer selected on number input focus MozReview-Commit-ID: EoXNqhXwK95 --HG-- extra : rebase_source : b5a522e11796ec42c87019f6c3955e6c40eb21d0 --- .../tests/mochitest/tree/test_txtctrl.xul | 8 +- editor/reftests/xul/input.css | 14 --- .../tests/chrome/test_textbox_number.xul | 88 +------------------ toolkit/content/widgets/numberbox.xml | 80 +---------------- toolkit/content/widgets/textbox.xml | 50 ++++++----- .../themes/linux/global/in-content/common.css | 4 - toolkit/themes/linux/global/numberbox.css | 19 +--- .../themes/osx/global/in-content/common.css | 24 +---- toolkit/themes/osx/global/numberbox.css | 14 +-- .../themes/shared/in-content/common.inc.css | 45 ++++------ toolkit/themes/shared/non-mac.jar.inc.mn | 2 - toolkit/themes/windows/global/jar.mn | 2 + toolkit/themes/windows/global/numberbox.css | 10 +-- 13 files changed, 68 insertions(+), 292 deletions(-) diff --git a/accessible/tests/mochitest/tree/test_txtctrl.xul b/accessible/tests/mochitest/tree/test_txtctrl.xul index 9a85d4603a33..d2b9da99a653 100644 --- a/accessible/tests/mochitest/tree/test_txtctrl.xul +++ b/accessible/tests/mochitest/tree/test_txtctrl.xul @@ -75,10 +75,12 @@ accTree = { SECTION: [ - { ENTRY: [ { TEXT_LEAF: [] } ] }, + { SPINBUTTON: [ + { ENTRY: [ { TEXT_LEAF: [] } ] }, + { PUSHBUTTON: [ ] }, + { PUSHBUTTON: [ ] } + ] }, { MENUPOPUP: [] }, - { PUSHBUTTON: [] }, - { PUSHBUTTON: [] } ] }; testAccessibleTree("txc_number", accTree); diff --git a/editor/reftests/xul/input.css b/editor/reftests/xul/input.css index 96063edefd07..26125b849b79 100644 --- a/editor/reftests/xul/input.css +++ b/editor/reftests/xul/input.css @@ -39,21 +39,7 @@ html|input.num { text-align: end; } -#mac html|input.num { - margin-inline-end: 8px; -} - -#win html|input.num { - padding: 0 !important; -} - -#linux html|input.num { - margin-inline-end: 3px; - padding: 3px 4px; -} - html|div.plainfield { color: -moz-fieldtext; white-space: pre; } - diff --git a/toolkit/content/tests/chrome/test_textbox_number.xul b/toolkit/content/tests/chrome/test_textbox_number.xul index fba395b864a7..6fc9e0115c67 100644 --- a/toolkit/content/tests/chrome/test_textbox_number.xul +++ b/toolkit/content/tests/chrome/test_textbox_number.xul @@ -6,8 +6,8 @@ --> - - + + @@ -48,8 +48,6 @@ function doTests() { testValsMinMax(n5, "initial n5", -10, -10, -3); testValsMinMax(n6, "initial n6", 12, 12, 12); - ok(n1.spinButtons != null && n1.spinButtons.localName == "spinbuttons", "spinButtons set"); - // test changing the value n1.value = "1700"; testVals(n1, "set value,", 1700); @@ -93,67 +91,19 @@ function doTests() { n1.max = 22; testValsMinMax(n1, "set integer max,", 22, 8, 22); - // test increase and decrease via the keyboard and the spinbuttons - testIncreaseDecrease(n1, "integer", 1, 0, 8, 22); - - // UI tests - n1.min = 5; - n1.max = 15; - n1.value = 5; - n1.focus(); - - var sb = n1.spinButtons; - var sbbottom = sb.getBoundingClientRect().bottom - sb.getBoundingClientRect().top - 2; - - synthesizeKey("VK_UP", {}); - testVals(n1, "key up", 6); - - synthesizeKey("VK_DOWN", {}); - testVals(n1, "key down", 5); - - synthesizeMouse(sb, 2, 2, {}); - testVals(n1, "spinbuttons up", 6); - synthesizeMouse(sb, 2, sbbottom, {}); - testVals(n1, "spinbuttons down", 5); - - n1.value = 15; - synthesizeKey("VK_UP", {}); - testVals(n1, "key up at max", 15); - synthesizeMouse(sb, 2, 2, {}); - testVals(n1, "spinbuttons up at max", 15); - - n1.value = 5; - synthesizeKey("VK_DOWN", {}); - testVals(n1, "key down at min", 5); - synthesizeMouse(sb, 2, sbbottom, {}); - testVals(n1, "spinbuttons down at min", 5); - // check read only state n1.readOnly = true; n1.min = -10; n1.max = 15; n1.value = 12; + n1.inputField.focus(); // no events should fire and no changes should occur when the field is read only synthesizeKeyExpectEvent("VK_UP", { }, n1, "!change", "key up read only"); is(n1.value, "12", "key up read only value"); synthesizeKeyExpectEvent("VK_DOWN", { }, n1, "!change", "key down read only"); is(n1.value, "12", "key down read only value"); - synthesizeMouseExpectEvent(sb, 2, 2, { }, n1, "!change", "mouse up read only"); - is(n1.value, "12", "mouse up read only value"); - synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, n1, "!change", "mouse down read only"); - is(n1.value, "12", "mouse down read only value"); - n1.readOnly = false; - n1.disabled = true; - synthesizeMouseExpectEvent(sb, 2, 2, { }, n1, "!change", "mouse up disabled"); - is(n1.value, "12", "mouse up disabled value"); - synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, n1, "!change", "mouse down disabled"); - is(n1.value, "12", "mouse down disabled value"); - - var nsbrect = $("n8").spinButtons.getBoundingClientRect(); - ok(nsbrect.left == 0 && nsbrect.top == 0 && nsbrect.right == 0, nsbrect.bottom == 0, - "hidespinbuttons"); var n9 = $("n9"); is(n9.value, "0", "initial value"); @@ -202,38 +152,6 @@ function testValsMinMax(nb, name, valueNumber, min, max, valueFieldNumber) { SimpleTest.is(nb.max, max, name + " max is " + max); } -function testIncreaseDecrease(nb, testid, increment, fixedCount, min, max) { - testid += " "; - - nb.focus(); - nb.value = min; - - // pressing the cursor up and down keys should adjust the value - synthesizeKeyExpectEvent("VK_UP", { }, nb, "change", testid + "key up"); - is(nb.value, String(min + increment), testid + "key up"); - nb.value = max; - synthesizeKeyExpectEvent("VK_UP", { }, nb, "!change", testid + "key up at max"); - is(nb.value, String(max), testid + "key up at max"); - synthesizeKeyExpectEvent("VK_DOWN", { }, nb, "change", testid + "key down"); - is(nb.value, String(max - increment), testid + "key down"); - nb.value = min; - synthesizeKeyExpectEvent("VK_DOWN", { }, nb, "!change", testid + "key down at min"); - is(nb.value, String(min), testid + "key down at min"); - - // check pressing the spinbutton arrows - var sb = nb.spinButtons; - var sbbottom = sb.getBoundingClientRect().bottom - sb.getBoundingClientRect().top - 2; - nb.value = min; - synthesizeMouseExpectEvent(sb, 2, 2, { }, nb, "change", testid + "mouse up"); - is(nb.value, String(min + increment), testid + "mouse up"); - nb.value = max; - synthesizeMouseExpectEvent(sb, 2, 2, { }, nb, "!change", testid + "mouse up at max"); - synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, nb, "change", testid + "mouse down"); - is(nb.value, String(max - increment), testid + "mouse down"); - nb.value = min; - synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, nb, "!change", testid + "mouse down at min"); -} - SimpleTest.waitForFocus(doTests); ]]> diff --git a/toolkit/content/widgets/numberbox.xml b/toolkit/content/widgets/numberbox.xml index cc1a8d3d188f..d0bcfab04a23 100644 --- a/toolkit/content/widgets/numberbox.xml +++ b/toolkit/content/widgets/numberbox.xml @@ -19,28 +19,16 @@ - + - false - null 0 - - - - - - - @@ -93,47 +81,6 @@ - - - - - - - - - - - - - - = this.max); - } - ]]> - - - @@ -152,8 +99,6 @@ this._value = Number(aValue); this.inputField.value = aValue; - this._enableDisableButtons(); - return aValue; ]]> @@ -194,26 +139,9 @@ ]]> - - this._modifyUp(); - - - - this._modifyDown(); - - - - this._modifyUp(); - - - - this._modifyDown(); - - if (event.originalTarget == this.inputField) { - var newval = this.inputField.value; - this._validateValue(newval); + this._validateValue(this.inputField.value); } diff --git a/toolkit/content/widgets/textbox.xml b/toolkit/content/widgets/textbox.xml index 08148d4e22e1..ed43a20fd4c1 100644 --- a/toolkit/content/widgets/textbox.xml +++ b/toolkit/content/widgets/textbox.xml @@ -127,7 +127,12 @@ - this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd ); + // According to https://html.spec.whatwg.org/#do-not-apply, + // setSelectionRange() is only available on a limited set of input types. + if (this.inputField.type == "text" || + this.inputField.tagName == "html:textarea") { + this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd ); + } @@ -188,26 +193,29 @@ if (this.hasAttribute("focused")) return; - switch (event.originalTarget) { - case this: - // Forward focus to actual HTML input - this.inputField.focus(); - break; - case this.inputField: - if (this.mIgnoreFocus) { - this.mIgnoreFocus = false; - } else if (this.clickSelectsAll) { - try { - if (!this.editor || !this.editor.composing) - this.editor.selectAll(); - } catch (e) {} - } - break; - default: - // Allow other children (e.g. URL bar buttons) to get focus - return; + let { originalTarget } = event; + if (originalTarget == this) { + // Forward focus to actual HTML input + this.inputField.focus(); + this.setAttribute("focused", "true"); + return; } - this.setAttribute("focused", "true"); + + // We check for the parent nodes to support input[type=number] where originalTarget may be an + // anonymous child input. + if (originalTarget == this.inputField || + originalTarget.localName == "input" && originalTarget.parentNode.parentNode == this.inputField) { + if (this.mIgnoreFocus) { + this.mIgnoreFocus = false; + } else if (this.clickSelectsAll) { + try { + if (!this.editor || !this.editor.composing) + this.editor.selectAll(); + } catch (e) {} + } + this.setAttribute("focused", "true"); + } + // Otherwise, allow other children (e.g. URL bar buttons) to get focus ]]> @@ -229,7 +237,7 @@ if (!this.mIgnoreClick) { this.mIgnoreFocus = true; - this.inputField.setSelectionRange(0, 0); + this.setSelectionRange(0, 0); if (event.originalTarget == this || event.originalTarget == this.inputField.parentNode) this.inputField.focus(); diff --git a/toolkit/themes/linux/global/in-content/common.css b/toolkit/themes/linux/global/in-content/common.css index c82331c9a2f9..3f6e10f5500c 100644 --- a/toolkit/themes/linux/global/in-content/common.css +++ b/toolkit/themes/linux/global/in-content/common.css @@ -81,10 +81,6 @@ html|input[type="checkbox"]:-moz-focusring + html|label:before { outline: 1px dotted; } -xul|spinbuttons { - -moz-appearance: none; -} - xul|treechildren::-moz-tree-row(multicol, odd) { background-color: var(--in-content-box-background-odd); } diff --git a/toolkit/themes/linux/global/numberbox.css b/toolkit/themes/linux/global/numberbox.css index 0b60d952fd1c..a8037f8c9310 100644 --- a/toolkit/themes/linux/global/numberbox.css +++ b/toolkit/themes/linux/global/numberbox.css @@ -9,25 +9,10 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @namespace html url("http://www.w3.org/1999/xhtml"); -textbox[type="number"] { - -moz-appearance: none; - padding: 0 !important; - border: none; - cursor: default; - background-color: transparent; -} - html|*.numberbox-input { text-align: right; } -.numberbox-input-box { - -moz-box-align: center; - -moz-appearance: spinner-textfield; - margin-right: -1px; - padding: 3px; -} - -textbox[hidespinbuttons="true"] > .numberbox-input-box { - -moz-appearance: textfield; +textbox[type="number"][hidespinbuttons="true"] html|*.numberbox-input { + -moz-appearance: textfield !important; } diff --git a/toolkit/themes/osx/global/in-content/common.css b/toolkit/themes/osx/global/in-content/common.css index 99471334c2ce..ba1b24208145 100644 --- a/toolkit/themes/osx/global/in-content/common.css +++ b/toolkit/themes/osx/global/in-content/common.css @@ -57,11 +57,6 @@ xul|*.radio-icon { margin-inline-end: 0; } -xul|*.numberbox-input-box { - -moz-appearance: none; - border-width: 0; -} - xul|*.text-link:-moz-focusring { color: var(--in-content-link-highlight); text-decoration: underline; @@ -83,29 +78,14 @@ xul|radio[focused="true"] > .radio-check { -moz-outline-radius: 100%; } -xul|spinbuttons { - -moz-appearance: none; -} - -xul|*.spinbuttons-up { - margin-top: 0 !important; +html|*.numberbox-input::-moz-number-spin-up { border-radius: 4px 4px 0 0; } -xul|*.spinbuttons-down { - margin-bottom: 0 !important; +html|*.numberbox-input::-moz-number-spin-down { border-radius: 0 0 4px 4px; } -xul|*.spinbuttons-button > xul|*.button-box { - padding-inline-start: 2px !important; - padding-inline-end: 3px !important; -} - -xul|*.spinbuttons-button > xul|*.button-box > xul|*.button-text { - display: none; -} - xul|textbox[type="search"]:not([searchbutton]) > .textbox-input-box > .textbox-search-sign { list-style-image: url(chrome://global/skin/icons/search-textbox.svg); margin-inline-end: 5px; diff --git a/toolkit/themes/osx/global/numberbox.css b/toolkit/themes/osx/global/numberbox.css index 73db12495948..ede7765456a1 100644 --- a/toolkit/themes/osx/global/numberbox.css +++ b/toolkit/themes/osx/global/numberbox.css @@ -5,21 +5,11 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @namespace html url("http://www.w3.org/1999/xhtml"); -textbox[type="number"] { - -moz-appearance: none; - -moz-box-align: center; - padding: 0 !important; - border: none; - background-color: transparent; - cursor: default; -} - html|*.numberbox-input { text-align: right; padding: 0 1px !important; } -.numberbox-input-box { - -moz-appearance: textfield; - margin-right: 4px; +textbox[type="number"][hidespinbuttons="true"] html|*.numberbox-input { + -moz-appearance: textfield !important; } diff --git a/toolkit/themes/shared/in-content/common.inc.css b/toolkit/themes/shared/in-content/common.inc.css index 081b67c0837b..157cd707014a 100644 --- a/toolkit/themes/shared/in-content/common.inc.css +++ b/toolkit/themes/shared/in-content/common.inc.css @@ -165,7 +165,9 @@ html|button { *|button, html|select, xul|colorpicker[type="button"], -xul|menulist { +xul|menulist, +html|*.numberbox-input::-moz-number-spin-up, +html|*.numberbox-input::-moz-number-spin-down { -moz-appearance: none; min-height: 30px; color: var(--in-content-text-color); @@ -201,6 +203,8 @@ html|select:not([size]):not([multiple]):dir(rtl){ html|button:enabled:hover, html|select:not([size]):not([multiple]):enabled:hover, +html|*.numberbox-input::-moz-number-spin-up:hover, +html|*.numberbox-input::-moz-number-spin-down:hover, xul|button:not([disabled="true"]):hover, xul|colorpicker[type="button"]:not([disabled="true"]):hover, xul|menulist:not([disabled="true"]):hover { @@ -209,6 +213,8 @@ xul|menulist:not([disabled="true"]):hover { html|button:enabled:hover:active, html|select:not([size]):not([multiple]):enabled:hover:active, +html|*.numberbox-input::-moz-number-spin-up:hover:active, +html|*.numberbox-input::-moz-number-spin-down:hover:active, xul|button:not([disabled="true"]):hover:active, xul|colorpicker[type="button"]:not([disabled="true"]):hover:active, xul|menulist[open="true"]:not([disabled="true"]) { @@ -217,6 +223,7 @@ xul|menulist[open="true"]:not([disabled="true"]) { html|button:disabled, html|select:disabled, +html|*.numberbox-input:disabled::-moz-number-spin-box, xul|button[disabled="true"], xul|colorpicker[type="button"][disabled="true"], xul|menulist[disabled="true"], @@ -347,40 +354,22 @@ html|*.help-button:hover:active { background-color: var(--in-content-category-background-active); } -xul|*.spinbuttons-button { +html|*.numberbox-input::-moz-number-spin-up, +html|*.numberbox-input::-moz-number-spin-down { + padding: 5px 8px; + margin: 1px; + margin-inline-start: 10px; min-height: initial; - margin-inline-start: 10px !important; - margin-inline-end: 2px !important; } -xul|*.spinbuttons-up { - margin-top: 2px !important; +html|*.numberbox-input::-moz-number-spin-up { border-radius: 1px 1px 0 0; + background-image: url("chrome://global/skin/arrow/arrow-up.gif"); } -xul|*.spinbuttons-down { - margin-bottom: 2px !important; +html|*.numberbox-input::-moz-number-spin-down { border-radius: 0 0 1px 1px; -} - -xul|*.spinbuttons-button > xul|*.button-box { - padding: 1px 5px 2px !important; -} - -xul|*.spinbuttons-up > xul|*.button-box > xul|*.button-icon { - list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); -} - -xul|*.spinbuttons-up[disabled="true"] > xul|*.button-box > xul|*.button-icon { - list-style-image: url("chrome://global/skin/arrow/arrow-up-dis.gif"); -} - -xul|*.spinbuttons-down > xul|*.button-box > xul|*.button-icon { - list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); -} - -xul|*.spinbuttons-down[disabled="true"] > xul|*.button-box > xul|*.button-icon { - list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif"); + background-image: url("chrome://global/skin/arrow/arrow-dn.gif"); } xul|menulist:not([editable="true"]) > xul|*.menulist-dropmarker { diff --git a/toolkit/themes/shared/non-mac.jar.inc.mn b/toolkit/themes/shared/non-mac.jar.inc.mn index 584b7ef9c992..f5809ca5ba1c 100644 --- a/toolkit/themes/shared/non-mac.jar.inc.mn +++ b/toolkit/themes/shared/non-mac.jar.inc.mn @@ -21,9 +21,7 @@ skin/classic/global/wizard.css (../../windows/global/wizard.css) skin/classic/global/arrow/arrow-dn.gif (../../windows/global/arrow/arrow-dn.gif) - skin/classic/global/arrow/arrow-dn-dis.gif (../../windows/global/arrow/arrow-dn-dis.gif) skin/classic/global/arrow/arrow-up.gif (../../windows/global/arrow/arrow-up.gif) - skin/classic/global/arrow/arrow-up-dis.gif (../../windows/global/arrow/arrow-up-dis.gif) skin/classic/global/arrow/panelarrow-horizontal.svg (../../windows/global/arrow/panelarrow-horizontal.svg) skin/classic/global/arrow/panelarrow-vertical.svg (../../windows/global/arrow/panelarrow-vertical.svg) diff --git a/toolkit/themes/windows/global/jar.mn b/toolkit/themes/windows/global/jar.mn index 317332cfcf4b..52d30807f2c0 100644 --- a/toolkit/themes/windows/global/jar.mn +++ b/toolkit/themes/windows/global/jar.mn @@ -36,6 +36,8 @@ toolkit.jar: skin/classic/global/arrow/arrow-lft-dis.gif (arrow/arrow-lft-dis.gif) skin/classic/global/arrow/arrow-rit.gif (arrow/arrow-rit.gif) skin/classic/global/arrow/arrow-rit-dis.gif (arrow/arrow-rit-dis.gif) + skin/classic/global/arrow/arrow-up-dis.gif (arrow/arrow-up-dis.gif) + skin/classic/global/arrow/arrow-dn-dis.gif (arrow/arrow-dn-dis.gif) skin/classic/global/dirListing/folder.png (dirListing/folder.png) skin/classic/global/dirListing/up.png (dirListing/up.png) skin/classic/global/icons/blacklist_favicon.png (icons/blacklist_favicon.png) diff --git a/toolkit/themes/windows/global/numberbox.css b/toolkit/themes/windows/global/numberbox.css index b5289c4d8237..a8037f8c9310 100644 --- a/toolkit/themes/windows/global/numberbox.css +++ b/toolkit/themes/windows/global/numberbox.css @@ -9,16 +9,10 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @namespace html url("http://www.w3.org/1999/xhtml"); -textbox[type="number"] { - padding: 0 !important; - cursor: default; -} - html|*.numberbox-input { text-align: right; } -.numberbox-input-box { - -moz-box-align: center; +textbox[type="number"][hidespinbuttons="true"] html|*.numberbox-input { + -moz-appearance: textfield !important; } - From 9235487cb3e489ed2ffde0fab0cbda77b8a18eab Mon Sep 17 00:00:00 2001 From: Tim Nguyen Date: Fri, 9 Feb 2018 19:24:11 +0000 Subject: [PATCH 06/41] Bug 1429573 - Remove spinbuttons.xml bindings now that they are unused. r=Paolo MozReview-Commit-ID: D7cMQyriekm --HG-- extra : rebase_source : 189fe22d8b9619707753773b92f83bbdef3a247a --- accessible/base/Role.h | 2 +- accessible/interfaces/nsIAccessibleRole.idl | 2 +- browser/installer/allowed-dupes.mn | 1 - mobile/android/installer/allowed-dupes.mn | 1 - toolkit/content/jar.mn | 1 - toolkit/content/widgets/spinbuttons.xml | 96 ------------------- toolkit/content/xul.css | 10 -- toolkit/themes/mobile/jar.mn | 1 - toolkit/themes/osx/global/jar.mn | 1 - toolkit/themes/osx/global/spinbuttons.css | 31 ------ toolkit/themes/shared/non-mac.jar.inc.mn | 1 - toolkit/themes/windows/global/spinbuttons.css | 24 ----- 12 files changed, 2 insertions(+), 169 deletions(-) delete mode 100644 toolkit/content/widgets/spinbuttons.xml delete mode 100644 toolkit/themes/osx/global/spinbuttons.css delete mode 100644 toolkit/themes/windows/global/spinbuttons.css diff --git a/accessible/base/Role.h b/accessible/base/Role.h index 2e4a2ff54df9..509de9f392da 100644 --- a/accessible/base/Role.h +++ b/accessible/base/Role.h @@ -345,7 +345,7 @@ enum Role { /** * Represents a spin box, which is a control that allows the user to increment * or decrement the value displayed in a separate "buddy" control associated - * with the spin box. It is used for xul:spinbuttons. + * with the spin box. It is used for input[type=number] spin buttons. */ SPINBUTTON = 52, diff --git a/accessible/interfaces/nsIAccessibleRole.idl b/accessible/interfaces/nsIAccessibleRole.idl index 0cded53abb6a..ac41b865be48 100644 --- a/accessible/interfaces/nsIAccessibleRole.idl +++ b/accessible/interfaces/nsIAccessibleRole.idl @@ -338,7 +338,7 @@ interface nsIAccessibleRole : nsISupports /** * Represents a spin box, which is a control that allows the user to increment * or decrement the value displayed in a separate "buddy" control associated - * with the spin box. It is used for xul:spinbuttons. + * with the spin box. It is used for input[type=number] spin buttons. */ const unsigned long ROLE_SPINBUTTON = 52; diff --git a/browser/installer/allowed-dupes.mn b/browser/installer/allowed-dupes.mn index 0b67197fbcb4..2a8ebd3afb64 100644 --- a/browser/installer/allowed-dupes.mn +++ b/browser/installer/allowed-dupes.mn @@ -113,7 +113,6 @@ chrome/toolkit/skin/classic/global/richlistbox.css chrome/toolkit/skin/classic/global/scale.css chrome/toolkit/skin/classic/global/scrollbars.css chrome/toolkit/skin/classic/global/scrollbox.css -chrome/toolkit/skin/classic/global/spinbuttons.css chrome/toolkit/skin/classic/global/splitter.css chrome/toolkit/skin/classic/global/tabbox.css chrome/toolkit/skin/classic/global/textbox.css diff --git a/mobile/android/installer/allowed-dupes.mn b/mobile/android/installer/allowed-dupes.mn index f8a2210740ee..9959d00e5e27 100644 --- a/mobile/android/installer/allowed-dupes.mn +++ b/mobile/android/installer/allowed-dupes.mn @@ -25,7 +25,6 @@ chrome/toolkit/skin/classic/global/richlistbox.css chrome/toolkit/skin/classic/global/scale.css chrome/toolkit/skin/classic/global/scrollbars.css chrome/toolkit/skin/classic/global/scrollbox.css -chrome/toolkit/skin/classic/global/spinbuttons.css chrome/toolkit/skin/classic/global/splitter.css chrome/toolkit/skin/classic/global/tabbox.css chrome/toolkit/skin/classic/global/textbox.css diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn index 6e52f7577c33..f13f8fa43bf8 100644 --- a/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn @@ -94,7 +94,6 @@ toolkit.jar: content/global/bindings/scrollbox.xml (widgets/scrollbox.xml) content/global/bindings/spinner.js (widgets/spinner.js) content/global/bindings/splitter.xml (widgets/splitter.xml) - content/global/bindings/spinbuttons.xml (widgets/spinbuttons.xml) content/global/bindings/stringbundle.xml (widgets/stringbundle.xml) * content/global/bindings/tabbox.xml (widgets/tabbox.xml) content/global/bindings/text.xml (widgets/text.xml) diff --git a/toolkit/content/widgets/spinbuttons.xml b/toolkit/content/widgets/spinbuttons.xml deleted file mode 100644 index 3a695beacffb..000000000000 --- a/toolkit/content/widgets/spinbuttons.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - return document.getAnonymousElementByAttribute(this, "anonid", "increaseButton"); - - - - - return document.getAnonymousElementByAttribute(this, "anonid", "decreaseButton"); - - - - - - - - - - - - - - this.removeAttribute("state"); - - - this.removeAttribute("state"); - - - - - - - - - - diff --git a/toolkit/content/xul.css b/toolkit/content/xul.css index 0831195eb2d6..5d8662b6286a 100644 --- a/toolkit/content/xul.css +++ b/toolkit/content/xul.css @@ -919,16 +919,6 @@ autorepeatbutton { -moz-binding: url("chrome://global/content/bindings/scrollbox.xml#autorepeatbutton"); } -/********** spinbuttons ***********/ - -spinbuttons { - -moz-binding: url("chrome://global/content/bindings/spinbuttons.xml#spinbuttons"); -} - -.spinbuttons-button { - -moz-user-focus: ignore; -} - /********** stringbundle **********/ stringbundleset { diff --git a/toolkit/themes/mobile/jar.mn b/toolkit/themes/mobile/jar.mn index 1e3c9e1e0a13..c3fe3ded869c 100644 --- a/toolkit/themes/mobile/jar.mn +++ b/toolkit/themes/mobile/jar.mn @@ -23,7 +23,6 @@ toolkit.jar: skin/classic/global/richlistbox.css (global/empty.css) skin/classic/global/scale.css (global/empty.css) skin/classic/global/scrollbox.css (global/empty.css) - skin/classic/global/spinbuttons.css (global/empty.css) skin/classic/global/splitter.css (global/empty.css) skin/classic/global/tabbox.css (global/empty.css) skin/classic/global/textbox.css (global/empty.css) diff --git a/toolkit/themes/osx/global/jar.mn b/toolkit/themes/osx/global/jar.mn index 8c249332d2d8..0f4e5fd4dac6 100644 --- a/toolkit/themes/osx/global/jar.mn +++ b/toolkit/themes/osx/global/jar.mn @@ -30,7 +30,6 @@ toolkit.jar: skin/classic/global/richlistbox.css skin/classic/global/scrollbars.css (nativescrollbars.css) skin/classic/global/scrollbox.css - skin/classic/global/spinbuttons.css skin/classic/global/splitter.css skin/classic/global/tabprompts.css skin/classic/global/tabbox.css diff --git a/toolkit/themes/osx/global/spinbuttons.css b/toolkit/themes/osx/global/spinbuttons.css deleted file mode 100644 index bf89520f6812..000000000000 --- a/toolkit/themes/osx/global/spinbuttons.css +++ /dev/null @@ -1,31 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -spinbuttons { - height: 24px; - min-height: 24px; - -moz-appearance: spinner; - cursor: default; -} - -.spinbuttons-up { - -moz-appearance: none; - -moz-box-flex: 1; - min-width: 1px; - min-height: 1px; - margin: 0; - padding: 0; -} - -.spinbuttons-down { - -moz-appearance: none; - -moz-box-flex: 1; - min-width: 1px; - min-height: 1px; - margin: 0; - padding: 0; -} - diff --git a/toolkit/themes/shared/non-mac.jar.inc.mn b/toolkit/themes/shared/non-mac.jar.inc.mn index f5809ca5ba1c..4fc04384e6e1 100644 --- a/toolkit/themes/shared/non-mac.jar.inc.mn +++ b/toolkit/themes/shared/non-mac.jar.inc.mn @@ -16,7 +16,6 @@ skin/classic/global/resizer.css (../../windows/global/resizer.css) skin/classic/global/richlistbox.css (../../windows/global/richlistbox.css) skin/classic/global/scrollbars.css (../../windows/global/xulscrollbars.css) - skin/classic/global/spinbuttons.css (../../windows/global/spinbuttons.css) skin/classic/global/tabprompts.css (../../windows/global/tabprompts.css) skin/classic/global/wizard.css (../../windows/global/wizard.css) diff --git a/toolkit/themes/windows/global/spinbuttons.css b/toolkit/themes/windows/global/spinbuttons.css deleted file mode 100644 index 3e333bb47480..000000000000 --- a/toolkit/themes/windows/global/spinbuttons.css +++ /dev/null @@ -1,24 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); - -spinbuttons { - -moz-appearance: spinner; - cursor: default; -} - -.spinbuttons-button { - min-width: 13px; - min-height: 11px; - margin: 0 !important; -} - -.spinbuttons-up { - -moz-appearance: spinner-upbutton; -} - -.spinbuttons-down { - -moz-appearance: spinner-downbutton; -} From 1e1b47f60a2a4639a3dd7d2b625a4280d4f3e25e Mon Sep 17 00:00:00 2001 From: "Nils Ohlmeier [:drno]" Date: Wed, 7 Feb 2018 22:50:55 -0800 Subject: [PATCH 07/41] Bug 1435025: don't parse padding on SRTP packets r=bwc,jesup MozReview-Commit-ID: HNW2BTRoJp2 --HG-- extra : rebase_source : b61dfd0fee200045beaa60b9a4ed12c979ae6dc5 --- .../webrtc/signaling/src/mediapipeline/MediaPipeline.cpp | 2 +- .../webrtc/modules/rtp_rtcp/include/rtp_header_parser.h | 3 ++- .../webrtc/modules/rtp_rtcp/source/rtp_header_parser.cc | 8 +++++--- .../trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc | 6 ++++-- .../trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.h | 3 ++- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp b/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp index 5a8f61b29726..f71d3493f940 100644 --- a/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp +++ b/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp @@ -1106,7 +1106,7 @@ MediaPipeline::RtpPacketReceived(TransportLayer* aLayer, } webrtc::RTPHeader header; - if (!mRtpParser->Parse(aData, aLen, &header)) { + if (!mRtpParser->Parse(aData, aLen, &header, true)) { return; } diff --git a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/include/rtp_header_parser.h b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/include/rtp_header_parser.h index 329de3261120..58ebb063f979 100644 --- a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/include/rtp_header_parser.h +++ b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/include/rtp_header_parser.h @@ -31,7 +31,8 @@ class RtpHeaderParser { // at once. virtual bool Parse(const uint8_t* packet, size_t length, - RTPHeader* header) const = 0; + RTPHeader* header, + bool secured = false) const = 0; // Registers an RTP header extension and binds it to |id|. virtual bool RegisterRtpHeaderExtension(RTPExtensionType type, diff --git a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_header_parser.cc b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_header_parser.cc index ac0aeb176833..c94b97f29dba 100644 --- a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_header_parser.cc +++ b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_header_parser.cc @@ -22,7 +22,8 @@ class RtpHeaderParserImpl : public RtpHeaderParser { bool Parse(const uint8_t* packet, size_t length, - RTPHeader* header) const override; + RTPHeader* header, + bool secured) const override; bool RegisterRtpHeaderExtension(RTPExtensionType type, uint8_t id) override; @@ -46,7 +47,8 @@ bool RtpHeaderParser::IsRtcp(const uint8_t* packet, size_t length) { bool RtpHeaderParserImpl::Parse(const uint8_t* packet, size_t length, - RTPHeader* header) const { + RTPHeader* header, + bool secured) const { RtpUtility::RtpHeaderParser rtp_parser(packet, length); memset(header, 0, sizeof(*header)); @@ -56,7 +58,7 @@ bool RtpHeaderParserImpl::Parse(const uint8_t* packet, map = rtp_header_extension_map_; } - const bool valid_rtpheader = rtp_parser.Parse(header, &map); + const bool valid_rtpheader = rtp_parser.Parse(header, &map, secured); if (!valid_rtpheader) { return false; } diff --git a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc index 8889a43df1c1..526675be2f8e 100644 --- a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc +++ b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc @@ -180,7 +180,8 @@ bool RtpHeaderParser::ParseRtcp(RTPHeader* header) const { } bool RtpHeaderParser::Parse(RTPHeader* header, - RtpHeaderExtensionMap* ptrExtensionMap) const { + RtpHeaderExtensionMap* ptrExtensionMap, + bool secured) const { const ptrdiff_t length = _ptrRTPDataEnd - _ptrRTPDataBegin; if (length < kRtpMinParseLength) { return false; @@ -224,7 +225,8 @@ bool RtpHeaderParser::Parse(RTPHeader* header, header->headerLength = 12 + (CC * 4); // not a full validation, just safety against underflow. Padding must // start after the header. We can have 0 payload bytes left, note. - if (header->paddingLength + header->headerLength > (size_t) length) { + if (!secured && + (header->paddingLength + header->headerLength > (size_t) length)) { return false; } diff --git a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.h b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.h index 0e1d6610b980..ce8458b89cdc 100644 --- a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.h +++ b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.h @@ -49,7 +49,8 @@ class RtpHeaderParser { bool RTCP() const; bool ParseRtcp(RTPHeader* header) const; bool Parse(RTPHeader* parsedPacket, - RtpHeaderExtensionMap* ptrExtensionMap = nullptr) const; + RtpHeaderExtensionMap* ptrExtensionMap = nullptr, + bool secured = false) const; private: void ParseOneByteExtensionHeader(RTPHeader* parsedPacket, From 7ced76c9e1794c2e61813a9c55a0ea98b168bf94 Mon Sep 17 00:00:00 2001 From: "Dan Mosedale ext:(%3E)" Date: Thu, 21 Dec 2017 09:11:32 -0800 Subject: [PATCH 08/41] Bug 1426705 - update license.html to include React MIT license from React 16, r=gerv MozReview-Commit-ID: 6VgxWNbS3Xl --HG-- extra : rebase_source : 2d3d0155f5d25533f22b80b0a8d796cbe8e21472 --- toolkit/content/license.html | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/toolkit/content/license.html b/toolkit/content/license.html index 17019c53c429..9a5c5c8656ae 100644 --- a/toolkit/content/license.html +++ b/toolkit/content/license.html @@ -154,6 +154,7 @@
  • QR Code Generator License
  • Raven.js License
  • React License
  • +
  • React MIT License
  • React Intl License
  • React-Redux License
  • Red Hat xdg_user_dir_lookup License
  • @@ -5533,6 +5534,37 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +

    + React MIT License

    + +

    This license applies to various files in the Mozilla codebase.

    + +
    +MIT License
    +
    +Copyright (c) 2013-present, Facebook, Inc.
    +
    +Permission is hereby granted, free of charge, to any person obtaining a copy of
    +this software and associated documentation files (the "Software"), to deal in
    +the Software without restriction, including without limitation the rights to
    +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    +of the Software, and to permit persons to whom the Software is furnished to do
    +so, subject to the following conditions:
    +
    +The above copyright notice and this permission notice shall be included in all
    +copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +SOFTWARE.
    +  
    + +
    +

    React Intl License

    This license applies to the files From e5643f4ea60cb232161d06e1f7f15dbc59d3b9b4 Mon Sep 17 00:00:00 2001 From: Ed Lee Date: Fri, 9 Feb 2018 11:23:51 -0800 Subject: [PATCH 09/41] Bug 1426705 - Add responsive layout, React 16 and bug fixes to Activity Stream. r=ursula MozReview-Commit-ID: KHwIWAlAXnC --HG-- extra : rebase_source : a3023806191f32906e8e74cd507b874aef838d77 --- .../activity-stream/common/Reducers.jsm | 4 +- .../css/activity-stream-linux.css | 124 +- .../css/activity-stream-linux.css.map | 44 + .../css/activity-stream-mac.css | 124 +- .../css/activity-stream-mac.css.map | 44 + .../css/activity-stream-windows.css | 124 +- .../css/activity-stream-windows.css.map | 44 + .../data/content/activity-stream.bundle.js | 1921 +- .../content/activity-stream.bundle.js.map | 1 + .../extensions/activity-stream/install.rdf.in | 2 +- browser/extensions/activity-stream/jar.mn | 16 +- .../activity-stream/lib/ActivityStream.jsm | 6 +- .../activity-stream/lib/TelemetryFeed.jsm | 21 +- .../activity-stream/lib/TopSitesFeed.jsm | 6 +- .../activity-stream/lib/UTEventReporting.jsm | 59 + .../ach/activity-stream-prerendered.html | 2 +- .../locales/ach/activity-stream-strings.js | 4 +- .../ar/activity-stream-prerendered.html | 2 +- .../locales/ar/activity-stream-strings.js | 8 +- .../ast/activity-stream-prerendered.html | 2 +- .../locales/ast/activity-stream-strings.js | 4 +- .../az/activity-stream-prerendered.html | 2 +- .../locales/az/activity-stream-strings.js | 4 +- .../be/activity-stream-prerendered.html | 2 +- .../locales/be/activity-stream-strings.js | 4 +- .../bg/activity-stream-prerendered.html | 2 +- .../locales/bg/activity-stream-strings.js | 4 +- .../bn-BD/activity-stream-prerendered.html | 2 +- .../locales/bn-BD/activity-stream-strings.js | 4 +- .../bn-IN/activity-stream-prerendered.html | 2 +- .../locales/bn-IN/activity-stream-strings.js | 4 +- .../br/activity-stream-prerendered.html | 2 +- .../locales/br/activity-stream-strings.js | 4 +- .../bs/activity-stream-prerendered.html | 2 +- .../locales/bs/activity-stream-strings.js | 4 +- .../ca/activity-stream-prerendered.html | 2 +- .../locales/ca/activity-stream-strings.js | 4 +- .../cak/activity-stream-prerendered.html | 2 +- .../locales/cak/activity-stream-strings.js | 4 +- .../cs/activity-stream-prerendered.html | 2 +- .../locales/cs/activity-stream-strings.js | 8 +- .../cy/activity-stream-prerendered.html | 2 +- .../locales/cy/activity-stream-strings.js | 4 +- .../da/activity-stream-prerendered.html | 2 +- .../locales/da/activity-stream-strings.js | 4 +- .../de/activity-stream-prerendered.html | 2 +- .../locales/de/activity-stream-strings.js | 4 +- .../dsb/activity-stream-prerendered.html | 2 +- .../locales/dsb/activity-stream-strings.js | 4 +- .../el/activity-stream-prerendered.html | 2 +- .../locales/el/activity-stream-strings.js | 4 +- .../en-GB/activity-stream-prerendered.html | 2 +- .../locales/en-GB/activity-stream-strings.js | 4 +- .../en-US/activity-stream-prerendered.html | 2 +- .../locales/en-US/activity-stream-strings.js | 4 +- .../eo/activity-stream-prerendered.html | 2 +- .../locales/eo/activity-stream-strings.js | 4 +- .../es-AR/activity-stream-prerendered.html | 2 +- .../locales/es-AR/activity-stream-strings.js | 4 +- .../es-CL/activity-stream-prerendered.html | 2 +- .../locales/es-CL/activity-stream-strings.js | 4 +- .../es-ES/activity-stream-prerendered.html | 2 +- .../locales/es-ES/activity-stream-strings.js | 4 +- .../es-MX/activity-stream-prerendered.html | 2 +- .../locales/es-MX/activity-stream-strings.js | 4 +- .../et/activity-stream-prerendered.html | 2 +- .../locales/et/activity-stream-strings.js | 4 +- .../eu/activity-stream-prerendered.html | 2 +- .../locales/eu/activity-stream-strings.js | 4 +- .../fa/activity-stream-prerendered.html | 2 +- .../locales/fa/activity-stream-strings.js | 4 +- .../ff/activity-stream-prerendered.html | 2 +- .../locales/ff/activity-stream-strings.js | 4 +- .../fi/activity-stream-prerendered.html | 2 +- .../locales/fi/activity-stream-strings.js | 4 +- .../fr/activity-stream-prerendered.html | 2 +- .../locales/fr/activity-stream-strings.js | 4 +- .../fy-NL/activity-stream-prerendered.html | 2 +- .../locales/fy-NL/activity-stream-strings.js | 4 +- .../ga-IE/activity-stream-prerendered.html | 2 +- .../locales/ga-IE/activity-stream-strings.js | 2 + .../gd/activity-stream-prerendered.html | 2 +- .../locales/gd/activity-stream-strings.js | 4 +- .../gl/activity-stream-prerendered.html | 2 +- .../locales/gl/activity-stream-strings.js | 4 +- .../gn/activity-stream-prerendered.html | 2 +- .../locales/gn/activity-stream-strings.js | 4 +- .../gu-IN/activity-stream-prerendered.html | 2 +- .../locales/gu-IN/activity-stream-strings.js | 4 +- .../he/activity-stream-prerendered.html | 2 +- .../locales/he/activity-stream-strings.js | 4 +- .../hi-IN/activity-stream-prerendered.html | 2 +- .../locales/hi-IN/activity-stream-strings.js | 4 +- .../hr/activity-stream-prerendered.html | 2 +- .../locales/hr/activity-stream-strings.js | 4 +- .../hsb/activity-stream-prerendered.html | 2 +- .../locales/hsb/activity-stream-strings.js | 4 +- .../hu/activity-stream-prerendered.html | 2 +- .../locales/hu/activity-stream-strings.js | 4 +- .../hy-AM/activity-stream-prerendered.html | 2 +- .../locales/hy-AM/activity-stream-strings.js | 4 +- .../ia/activity-stream-prerendered.html | 2 +- .../locales/ia/activity-stream-strings.js | 4 +- .../id/activity-stream-prerendered.html | 2 +- .../locales/id/activity-stream-strings.js | 4 +- .../it/activity-stream-prerendered.html | 2 +- .../locales/it/activity-stream-strings.js | 4 +- .../ja/activity-stream-prerendered.html | 2 +- .../locales/ja/activity-stream-strings.js | 4 +- .../ka/activity-stream-prerendered.html | 2 +- .../locales/ka/activity-stream-strings.js | 4 +- .../kab/activity-stream-prerendered.html | 2 +- .../locales/kab/activity-stream-strings.js | 4 +- .../kk/activity-stream-prerendered.html | 2 +- .../locales/kk/activity-stream-strings.js | 4 +- .../km/activity-stream-prerendered.html | 2 +- .../locales/km/activity-stream-strings.js | 4 +- .../kn/activity-stream-prerendered.html | 2 +- .../locales/kn/activity-stream-strings.js | 4 +- .../ko/activity-stream-prerendered.html | 2 +- .../locales/ko/activity-stream-strings.js | 4 +- .../lij/activity-stream-prerendered.html | 2 +- .../locales/lij/activity-stream-strings.js | 2 + .../lo/activity-stream-prerendered.html | 2 +- .../locales/lo/activity-stream-strings.js | 4 +- .../lt/activity-stream-prerendered.html | 2 +- .../locales/lt/activity-stream-strings.js | 4 +- .../ltg/activity-stream-prerendered.html | 2 +- .../locales/ltg/activity-stream-strings.js | 4 +- .../lv/activity-stream-prerendered.html | 2 +- .../locales/lv/activity-stream-strings.js | 4 +- .../mk/activity-stream-prerendered.html | 2 +- .../locales/mk/activity-stream-strings.js | 4 +- .../ml/activity-stream-prerendered.html | 2 +- .../locales/ml/activity-stream-strings.js | 4 +- .../mr/activity-stream-prerendered.html | 2 +- .../locales/mr/activity-stream-strings.js | 2 + .../ms/activity-stream-prerendered.html | 2 +- .../locales/ms/activity-stream-strings.js | 4 +- .../my/activity-stream-prerendered.html | 2 +- .../locales/my/activity-stream-strings.js | 4 +- .../nb-NO/activity-stream-prerendered.html | 2 +- .../locales/nb-NO/activity-stream-strings.js | 4 +- .../ne-NP/activity-stream-prerendered.html | 2 +- .../locales/ne-NP/activity-stream-strings.js | 4 +- .../nl/activity-stream-prerendered.html | 2 +- .../locales/nl/activity-stream-strings.js | 4 +- .../nn-NO/activity-stream-prerendered.html | 2 +- .../locales/nn-NO/activity-stream-strings.js | 4 +- .../pa-IN/activity-stream-prerendered.html | 2 +- .../locales/pa-IN/activity-stream-strings.js | 4 +- .../pl/activity-stream-prerendered.html | 2 +- .../locales/pl/activity-stream-strings.js | 4 +- .../pt-BR/activity-stream-prerendered.html | 2 +- .../locales/pt-BR/activity-stream-strings.js | 4 +- .../pt-PT/activity-stream-prerendered.html | 2 +- .../locales/pt-PT/activity-stream-strings.js | 4 +- .../rm/activity-stream-prerendered.html | 2 +- .../locales/rm/activity-stream-strings.js | 4 +- .../ro/activity-stream-prerendered.html | 2 +- .../locales/ro/activity-stream-strings.js | 4 +- .../ru/activity-stream-prerendered.html | 2 +- .../locales/ru/activity-stream-strings.js | 4 +- .../si/activity-stream-prerendered.html | 2 +- .../locales/si/activity-stream-strings.js | 4 +- .../sk/activity-stream-prerendered.html | 2 +- .../locales/sk/activity-stream-strings.js | 4 +- .../sl/activity-stream-prerendered.html | 2 +- .../locales/sl/activity-stream-strings.js | 4 +- .../sq/activity-stream-prerendered.html | 2 +- .../locales/sq/activity-stream-strings.js | 8 +- .../sr/activity-stream-prerendered.html | 2 +- .../locales/sr/activity-stream-strings.js | 4 +- .../sv-SE/activity-stream-prerendered.html | 2 +- .../locales/sv-SE/activity-stream-strings.js | 4 +- .../ta/activity-stream-prerendered.html | 2 +- .../locales/ta/activity-stream-strings.js | 4 +- .../te/activity-stream-prerendered.html | 2 +- .../locales/te/activity-stream-strings.js | 4 +- .../th/activity-stream-prerendered.html | 2 +- .../locales/th/activity-stream-strings.js | 6 +- .../tl/activity-stream-prerendered.html | 2 +- .../locales/tl/activity-stream-strings.js | 4 +- .../tr/activity-stream-prerendered.html | 2 +- .../locales/tr/activity-stream-strings.js | 4 +- .../uk/activity-stream-prerendered.html | 2 +- .../locales/uk/activity-stream-strings.js | 4 +- .../ur/activity-stream-prerendered.html | 2 +- .../locales/ur/activity-stream-strings.js | 4 +- .../uz/activity-stream-prerendered.html | 2 +- .../locales/uz/activity-stream-strings.js | 4 +- .../vi/activity-stream-prerendered.html | 2 +- .../locales/vi/activity-stream-strings.js | 4 +- .../zh-CN/activity-stream-prerendered.html | 2 +- .../locales/zh-CN/activity-stream-strings.js | 4 +- .../zh-TW/activity-stream-prerendered.html | 2 +- .../locales/zh-TW/activity-stream-strings.js | 4 +- .../activity-stream-prerendered-debug.html | 2 +- .../activity-stream/test/schemas/pings.js | 41 + .../unit/activity-stream-prerender.test.jsx | 12 + .../lib/ActivityStreamMessageChannel.test.js | 6 +- .../test/unit/lib/FilterAdult.test.js | 2 +- .../test/unit/lib/PlacesFeed.test.js | 8 +- .../test/unit/lib/SectionsManager.test.js | 8 +- .../test/unit/lib/TelemetryFeed.test.js | 29 +- .../test/unit/lib/TopSitesFeed.test.js | 12 +- .../test/unit/lib/TopStoriesFeed.test.js | 16 +- .../test/unit/lib/UTEventReporting.test.js | 92 + .../lib/UserDomainAffinityProvider.test.js | 2 +- .../activity-stream/test/unit/unit-entry.js | 26 +- .../vendor/REACT_AND_REACT_DOM_LICENSE | 21 + .../activity-stream/vendor/react-dev.js | 5329 +-- .../activity-stream/vendor/react-dom-dev.js | 31523 +++++++--------- .../activity-stream/vendor/react-dom.js | 203 +- .../activity-stream/vendor/react.js | 27 +- 215 files changed, 18250 insertions(+), 22203 deletions(-) create mode 100644 browser/extensions/activity-stream/css/activity-stream-linux.css.map create mode 100644 browser/extensions/activity-stream/css/activity-stream-mac.css.map create mode 100644 browser/extensions/activity-stream/css/activity-stream-windows.css.map create mode 100644 browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map create mode 100644 browser/extensions/activity-stream/lib/UTEventReporting.jsm create mode 100644 browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js create mode 100644 browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE diff --git a/browser/extensions/activity-stream/common/Reducers.jsm b/browser/extensions/activity-stream/common/Reducers.jsm index e258968c339b..964c66696487 100644 --- a/browser/extensions/activity-stream/common/Reducers.jsm +++ b/browser/extensions/activity-stream/common/Reducers.jsm @@ -6,8 +6,8 @@ const {actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {}); const {Dedupe} = ChromeUtils.import("resource://activity-stream/common/Dedupe.jsm", {}); -const TOP_SITES_DEFAULT_ROWS = 2; -const TOP_SITES_MAX_SITES_PER_ROW = 6; +const TOP_SITES_DEFAULT_ROWS = 1; +const TOP_SITES_MAX_SITES_PER_ROW = 8; const dedupe = new Dedupe(site => site && site.url); diff --git a/browser/extensions/activity-stream/css/activity-stream-linux.css b/browser/extensions/activity-stream/css/activity-stream-linux.css index 63c9b18b39be..f98350c64568 100644 --- a/browser/extensions/activity-stream/css/activity-stream-linux.css +++ b/browser/extensions/activity-stream/css/activity-stream-linux.css @@ -210,19 +210,23 @@ main { margin: auto; padding-bottom: 48px; width: 224px; } - @media (min-width: 416px) { + @media (min-width: 432px) { main { width: 352px; } } - @media (min-width: 544px) { + @media (min-width: 560px) { main { width: 480px; } } - @media (min-width: 800px) { + @media (min-width: 816px) { main { width: 736px; } } main section { margin-bottom: 40px; position: relative; } +@media (min-width: 1072px) { + .wide-layout-enabled main { + width: 992px; } } + .section-top-bar { height: 16px; margin-bottom: 16px; } @@ -236,6 +240,9 @@ main { fill: #737373; vertical-align: middle; } +.base-content-fallback { + height: 100vh; } + .body-wrapper .section-title, .body-wrapper .sections-list .section:last-of-type, @@ -248,12 +255,27 @@ main { .body-wrapper.on .topic { opacity: 1; } +.as-error-fallback { + align-items: center; + border-radius: 3px; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + color: #4A4A4F; + display: flex; + flex-direction: column; + font-size: 12px; + justify-content: center; + justify-items: center; + line-height: 1.5; } + .as-error-fallback a { + color: #4A4A4F; + text-decoration: underline; } + .top-sites-list { list-style: none; margin: 0 -16px; margin-bottom: -18px; padding: 0; } - @media (max-width: 416px) { + @media (max-width: 432px) { .top-sites-list :nth-child(2n+1) .context-menu { margin-inline-end: auto; margin-inline-start: auto; @@ -264,32 +286,32 @@ main { margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 416px) and (max-width: 544px) { + @media (min-width: 432px) and (max-width: 560px) { .top-sites-list :nth-child(3n+2) .context-menu, .top-sites-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 800px) { + @media (min-width: 560px) and (max-width: 816px) { .top-sites-list :nth-child(4n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 768px) { + @media (min-width: 560px) and (max-width: 784px) { .top-sites-list :nth-child(4n+3) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1248px) { + @media (min-width: 816px) and (max-width: 1264px) { .top-sites-list :nth-child(6n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1024px) { + @media (min-width: 816px) and (max-width: 1040px) { .top-sites-list :nth-child(6n+5) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -412,6 +434,13 @@ main { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .top-sites-list .top-site-outer.placeholder .screenshot { display: none; } + .top-sites-list .top-site-outer.dragged .tile { + background: #EDEDF0; + box-shadow: none; } + .top-sites-list .top-site-outer.dragged .tile * { + display: none; } + .top-sites-list .top-site-outer.dragged .title { + visibility: hidden; } .top-sites-list:not(.dnd-active) .top-site-outer:-moz-any(.active, :focus, :hover) .tile { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -419,6 +448,27 @@ main { opacity: 1; transform: scale(1); } +.wide-layout-disabled .top-sites-list .hide-for-narrow { + display: none; } + +@media (min-width: 1072px) and (max-width: 1520px) { + .wide-layout-enabled .top-sites-list :nth-child(8n) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media (min-width: 1072px) and (max-width: 1296px) { + .wide-layout-enabled .top-sites-list :nth-child(8n+7) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media not all and (min-width: 1072px) { + .wide-layout-enabled .top-sites-list .hide-for-narrow { + display: none; } } + .edit-topsites-wrapper .add-topsites-button { border-right: 1px solid #D7D7DB; line-height: 13px; @@ -525,19 +575,19 @@ main { grid-gap: 32px; grid-template-columns: repeat(auto-fit, 224px); margin: 0; } - @media (max-width: 544px) { + @media (max-width: 560px) { .sections-list .section-list .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 800px) { + @media (min-width: 560px) and (max-width: 816px) { .sections-list .section-list :nth-child(2n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1248px) { + @media (min-width: 816px) and (max-width: 1264px) { .sections-list .section-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -569,18 +619,29 @@ main { margin-bottom: 0; text-align: center; } +@media (min-width: 1072px) and (max-width: 1520px) { + .wide-layout-enabled .sections-list .section-list :nth-child(3n) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media (min-width: 1072px) { + .wide-layout-enabled .sections-list .section-list { + grid-template-columns: repeat(auto-fit, 309px); } } + .topic { color: #737373; font-size: 12px; line-height: 1.6; margin-top: 12px; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic { line-height: 16px; } } .topic ul { margin: 0; padding: 0; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic ul { display: inline; padding-inline-start: 12px; } } @@ -595,7 +656,7 @@ main { color: #008EA4; } .topic .topic-read-more { color: #008EA4; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic .topic-read-more { float: right; } .topic .topic-read-more:dir(rtl) { @@ -910,7 +971,7 @@ main { height: 266px; margin-inline-end: 32px; position: relative; - width: 224px; } + width: 100%; } .card-outer .context-menu-button { background-clip: padding-box; background-color: #FFF; @@ -947,7 +1008,7 @@ main { height: 100%; outline: none; position: absolute; - width: 224px; } + width: 100%; } .card-outer > a:-moz-any(.active, :focus) .card { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -1041,27 +1102,35 @@ main { text-overflow: ellipsis; white-space: nowrap; } +@media (min-width: 1072px) { + .wide-layout-enabled .card-outer { + height: 370px; } + .wide-layout-enabled .card-outer .card-preview-image-outer { + height: 155px; } + .wide-layout-enabled .card-outer .card-text { + max-height: 135px; } } + .manual-migration-container { color: #4A4A4F; font-size: 13px; line-height: 15px; margin-bottom: 40px; text-align: center; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container { display: flex; justify-content: space-between; text-align: left; } } .manual-migration-container p { margin: 0; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container p { align-self: center; display: flex; justify-content: space-between; } } .manual-migration-container .icon { display: none; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container .icon { align-self: center; display: block; @@ -1072,7 +1141,7 @@ main { border: 0; display: block; flex-wrap: nowrap; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-actions { display: flex; justify-content: space-between; @@ -1206,13 +1275,13 @@ main { position: relative; } .collapsible-section .section-disclaimer .section-disclaimer-text { display: inline-block; } - @media (min-width: 416px) { + @media (min-width: 432px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 224px; } } - @media (min-width: 544px) { + @media (min-width: 560px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 340px; } } - @media (min-width: 800px) { + @media (min-width: 816px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 610px; } } .collapsible-section .section-disclaimer a { @@ -1230,10 +1299,13 @@ main { .collapsible-section .section-disclaimer button:hover:not(.dismiss) { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } - @media (min-width: 416px) { + @media (min-width: 432px) { .collapsible-section .section-disclaimer button { position: absolute; } } +.collapsible-section .section-body-fallback { + height: 266px; } + .collapsible-section .section-body { margin: 0 -7px; padding: 0 7px; } @@ -1257,3 +1329,5 @@ main { .collapsible-section:not(.collapsed):hover .info-option-icon { opacity: 1; } + +/*# sourceMappingURL=activity-stream-linux.css.map */ \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-linux.css.map b/browser/extensions/activity-stream/css/activity-stream-linux.css.map new file mode 100644 index 000000000000..f6dc0c738c64 --- /dev/null +++ b/browser/extensions/activity-stream/css/activity-stream-linux.css.map @@ -0,0 +1,44 @@ +{ + "version": 3, + "file": "activity-stream-linux.css", + "sources": [ + "../content-src/styles/activity-stream-linux.scss", + "../content-src/styles/_activity-stream.scss", + "../content-src/styles/_normalize.scss", + "../content-src/styles/_variables.scss", + "../content-src/styles/_icons.scss", + "../content-src/components/Base/_Base.scss", + "../content-src/components/ErrorBoundary/_ErrorBoundary.scss", + "../content-src/components/TopSites/_TopSites.scss", + "../content-src/components/Sections/_Sections.scss", + "../content-src/components/Topics/_Topics.scss", + "../content-src/components/Search/_Search.scss", + "../content-src/components/ContextMenu/_ContextMenu.scss", + "../content-src/components/PreferencesPane/_PreferencesPane.scss", + "../content-src/components/ConfirmDialog/_ConfirmDialog.scss", + "../content-src/components/Card/_Card.scss", + "../content-src/components/ManualMigration/_ManualMigration.scss", + "../content-src/components/CollapsibleSection/_CollapsibleSection.scss" + ], + "sourcesContent": [ + "/* This is the linux variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 6px;\n$os-infopanel-arrow-width: 20px;\n$os-search-focus-shadow-radius: 3px;\n\n@import './activity-stream';\n", + "@import './normalize';\n@import './variables';\n@import './icons';\n\nhtml,\nbody,\n#root { // sass-lint:disable-line no-ids\n height: 100%;\n}\n\nbody {\n background: $background-primary;\n color: $text-primary;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n overflow-y: scroll;\n}\n\nh1,\nh2 {\n font-weight: normal;\n}\n\na {\n color: $link-primary;\n text-decoration: none;\n\n &:hover {\n color: $link-secondary;\n }\n}\n\n// For screen readers\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.inner-border {\n border: $border-secondary;\n border-radius: $border-radius;\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.show-on-init {\n opacity: 0;\n transition: opacity 0.2s ease-in;\n\n &.on {\n animation: fadeIn 0.2s;\n opacity: 1;\n }\n}\n\n.actions {\n border-top: $border-secondary;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin: 0;\n padding: 15px 25px 0;\n\n button {\n background-color: $input-secondary;\n border: $border-primary;\n border-radius: 4px;\n color: inherit;\n cursor: pointer;\n margin-bottom: 15px;\n padding: 10px 30px;\n white-space: nowrap;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n &.dismiss {\n border: 0;\n padding: 0;\n text-decoration: underline;\n }\n\n &.done {\n background: $input-primary;\n border: solid 1px $blue-60;\n color: $white;\n margin-inline-start: auto;\n }\n }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/PreferencesPane/PreferencesPane';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n", + "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n border: 0;\n}\n\nbody {\n margin: 0;\n}\n\nbutton,\ninput {\n font-family: inherit;\n font-size: inherit;\n}\n\n[hidden] {\n display: none !important; // sass-lint:disable-line no-important\n}\n", + "// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n// Aliases and derived styles based on Photon colors for common usage\n$background-primary: $grey-10;\n$background-secondary: $grey-20;\n$border-primary: 1px solid $grey-40;\n$border-secondary: 1px solid $grey-30;\n$fill-primary: $grey-90-80;\n$fill-secondary: $grey-90-60;\n$fill-tertiary: $grey-30;\n$input-primary: $blue-60;\n$input-secondary: $grey-10;\n$link-primary: $blue-60;\n$link-secondary: $teal-70;\n$shadow-primary: 0 0 0 5px $grey-30;\n$shadow-secondary: 0 1px 4px 0 $grey-90-10;\n$text-primary: $grey-90;\n$text-conditional: $grey-60;\n$text-secondary: $grey-50;\n$input-border: solid 1px $grey-90-20;\n$input-border-active: solid 1px $grey-90-40;\n$input-error-border: solid 1px $red-60;\n$input-error-boxshadow: 0 0 0 2px rgba($red-60, 0.35);\n\n$white: #FFF;\n$border-radius: 3px;\n\n$base-gutter: 32px;\n$section-spacing: 40px;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-border-color: $black-20;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $context-menu-border-color;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$inner-box-shadow: 0 0 0 1px $black-10;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n@mixin fade-in {\n box-shadow: inset $inner-box-shadow, $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n .context-menu-button {\n background-clip: padding-box;\n background-color: $white;\n background-image: url('chrome://browser/skin/page-action.svg');\n background-position: 55%;\n border: $border-primary;\n border-radius: 100%;\n box-shadow: $context-menu-button-boxshadow;\n cursor: pointer;\n fill: $fill-primary;\n height: $context-menu-button-size;\n offset-inline-end: -($context-menu-button-size / 2);\n opacity: 0;\n position: absolute;\n top: -($context-menu-button-size / 2);\n transform: scale(0.25);\n transition-duration: 200ms;\n transition-property: transform, opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n@mixin context-menu-button-hover {\n .context-menu-button {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@mixin context-menu-open-middle {\n .context-menu {\n margin-inline-end: auto;\n margin-inline-start: auto;\n offset-inline-end: auto;\n offset-inline-start: -$base-gutter;\n }\n}\n\n@mixin context-menu-open-left {\n .context-menu {\n margin-inline-end: 5px;\n margin-inline-start: auto;\n offset-inline-end: 0;\n offset-inline-start: auto;\n }\n}\n\n@mixin flip-icon {\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n}\n", + ".icon {\n background-position: center center;\n background-repeat: no-repeat;\n background-size: $icon-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-primary;\n height: $icon-size;\n vertical-align: middle;\n width: $icon-size;\n\n &.icon-spacer {\n margin-inline-end: 8px;\n }\n\n &.icon-small-spacer {\n margin-inline-end: 6px;\n }\n\n &.icon-bookmark-added {\n background-image: url('chrome://browser/skin/bookmark.svg');\n }\n\n &.icon-bookmark-hollow {\n background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n }\n\n &.icon-delete {\n background-image: url('#{$image-path}glyph-delete-16.svg');\n }\n\n &.icon-modal-delete {\n background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n background-size: $larger-icon-size;\n height: $larger-icon-size;\n width: $larger-icon-size;\n }\n\n &.icon-dismiss {\n background-image: url('#{$image-path}glyph-dismiss-16.svg');\n }\n\n &.icon-info {\n background-image: url('#{$image-path}glyph-info-16.svg');\n }\n\n &.icon-import {\n background-image: url('#{$image-path}glyph-import-16.svg');\n }\n\n &.icon-new-window {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-newWindow-16.svg');\n }\n\n &.icon-new-window-private {\n background-image: url('chrome://browser/skin/privateBrowsing.svg');\n }\n\n &.icon-settings {\n background-image: url('chrome://browser/skin/settings.svg');\n }\n\n &.icon-pin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-16.svg');\n }\n\n &.icon-unpin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-unpin-16.svg');\n }\n\n &.icon-edit {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.icon-pocket {\n background-image: url('#{$image-path}glyph-pocket-16.svg');\n }\n\n &.icon-historyItem { // sass-lint:disable-line class-name-format\n background-image: url('#{$image-path}glyph-historyItem-16.svg');\n }\n\n &.icon-trending {\n background-image: url('#{$image-path}glyph-trending-16.svg');\n transform: translateY(2px); // trending bolt is visually top heavy\n }\n\n &.icon-now {\n background-image: url('chrome://browser/skin/history.svg');\n }\n\n &.icon-topsites {\n background-image: url('#{$image-path}glyph-topsites-16.svg');\n }\n\n &.icon-pin-small {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-check {\n background-image: url('chrome://browser/skin/check.svg');\n }\n\n &.icon-webextension {\n background-image: url('#{$image-path}glyph-webextension-16.svg');\n }\n\n &.icon-highlights {\n background-image: url('#{$image-path}glyph-highlights-16.svg');\n }\n\n &.icon-arrowhead-down {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-arrowhead-forward {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n transform: rotate(-90deg);\n width: $smaller-icon-size;\n\n &:dir(rtl) {\n transform: rotate(90deg);\n }\n }\n}\n", + ".outer-wrapper {\n display: flex;\n flex-grow: 1;\n height: 100%;\n padding: $section-spacing $base-gutter $base-gutter;\n\n &.fixed-to-top {\n height: auto;\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets / onboarding are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-small) {\n width: $wrapper-max-width-small;\n }\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n}\n\n.wide-layout-enabled {\n main {\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n }\n}\n\n.section-top-bar {\n height: 16px;\n margin-bottom: 16px;\n}\n\n.section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n text-transform: uppercase;\n\n span {\n color: $text-secondary;\n fill: $text-secondary;\n vertical-align: middle;\n }\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topic\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n", + ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: $text-conditional;\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: $text-conditional;\n text-decoration: underline;\n }\n}\n\n", + ".top-sites-list {\n $top-sites-size: $grid-unit;\n $top-sites-border-radius: 6px;\n $top-sites-title-height: 30px;\n $top-sites-vertical-space: 8px;\n $screenshot-size: cover;\n $rich-icon-size: 96px;\n $default-icon-wrapper-size: 42px;\n $default-icon-size: 32px;\n $default-icon-offset: 6px;\n $half-base-gutter: $base-gutter / 2;\n\n list-style: none;\n margin: 0 (-$half-base-gutter);\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: -($top-sites-vertical-space + $top-sites-title-height / 3);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-small) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Three columns\n @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n :nth-child(3n+2),\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n li {\n display: inline-block;\n margin: 0 0 $top-sites-vertical-space;\n }\n\n // container for drop zone\n .top-site-outer {\n padding: 0 $half-base-gutter;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, $shadow-secondary;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: $text-secondary;\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: $background-primary;\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n position: absolute;\n }\n\n .rich-icon {\n background-size: $rich-icon-size;\n height: 100%;\n offset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon { // sass-lint:disable block property-sort-order\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n offset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .title {\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: $fill-tertiary;\n offset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n * {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// Always hide .hide-for-narrow if wide layout is disabled\n.wide-layout-disabled {\n .top-sites-list {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n\n.wide-layout-enabled {\n .top-sites-list {\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n }\n}\n\n.edit-topsites-wrapper {\n .add-topsites-button {\n border-right: $border-secondary;\n line-height: 13px;\n offset-inline-end: 24px;\n opacity: 0;\n padding: 0 10px;\n pointer-events: none;\n position: absolute;\n top: 2px;\n transition: opacity 0.2s $photon-easing;\n\n &:dir(rtl) {\n border-left: $border-secondary;\n border-right: 0;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n\n button {\n background: none;\n border: 0;\n color: $text-secondary;\n cursor: pointer;\n font-size: 12px;\n padding: 0;\n\n &:focus {\n background: $background-secondary;\n border-bottom: dotted 1px $text-secondary;\n }\n }\n }\n\n .modal {\n offset-inline-start: -31px;\n position: absolute;\n top: -29px;\n width: calc(100% + 62px);\n box-shadow: $shadow-secondary;\n }\n\n .edit-topsites-inner-wrapper {\n margin: 0;\n padding: 15px 30px;\n }\n}\n\n.top-sites:not(.collapsed):hover {\n .add-topsites-button {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.topsite-form {\n .form-wrapper {\n margin: auto;\n max-width: 350px;\n padding: 15px 0;\n\n .field {\n position: relative;\n }\n\n .url input:not(:placeholder-shown):dir(rtl) {\n direction: ltr;\n text-align: right;\n }\n\n .section-title {\n margin-bottom: 5px;\n }\n\n input {\n &[type='text'] {\n border: $input-border;\n border-radius: 2px;\n margin: 5px 0;\n padding: 7px;\n width: 100%;\n\n &:focus {\n border: $input-border-active;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n offset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n offset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", + ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: $fill-secondary;\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: $text-secondary;\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n }\n}\n\n.wide-layout-enabled {\n .sections-list {\n .section-list {\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", + ".topic {\n color: $text-secondary;\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n\n .topic-link {\n color: $link-secondary;\n }\n\n .topic-read-more {\n color: $link-secondary;\n\n @media (min-width: $break-point-large) {\n // This is floating to accomodate a very large number of topics and/or\n // very long topic names due to l10n.\n float: right;\n\n &:dir(rtl) {\n float: left;\n }\n }\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-secondary;\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n\n // This is a clearfix to for the topics-read-more link which is floating and causes\n // some jank when we set overflow:hidden for the animation.\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n}\n", + ".search-wrapper {\n $search-border-radius: 3px;\n $search-focus-color: $blue-50;\n $search-height: 35px;\n $search-input-left-label-width: 35px;\n $search-button-width: 36px;\n $search-glyph-image: url('chrome://browser/skin/search-glass.svg');\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n $search-glyph-size: 16px;\n $search-glyph-fill: $grey-90-40;\n // This is positioned so it is visually (not metrically) centered. r=abenson\n $search-glyph-left-position: 12px;\n\n cursor: default;\n display: flex;\n height: $search-height;\n // The extra 1px is to account for the box-shadow being outside of the element\n // instead of inside. It needs to be like that to not overlap the inner background\n // color of the hover state of the submit button.\n margin: 1px 1px $section-spacing;\n position: relative;\n width: 100%;\n\n input {\n border: 0;\n border-radius: $search-border-radius;\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n color: inherit;\n font-size: 15px;\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-input-left-label-width;\n width: 100%;\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n &:active input,\n input:focus {\n box-shadow: 0 0 0 $os-search-focus-shadow-radius $search-focus-color;\n }\n\n .search-label {\n background: $search-glyph-image no-repeat $search-glyph-left-position center / $search-glyph-size;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-start: 0;\n position: absolute;\n width: $search-input-left-label-width;\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable { // sass-lint:disable-line class-name-format\n border: 0;\n transform: translateY(2px);\n }\n}\n", + ".context-menu {\n background: $background-primary;\n border-radius: $context-menu-border-radius;\n box-shadow: $context-menu-shadow;\n display: block;\n font-size: $context-menu-font-size;\n margin-inline-start: 5px;\n offset-inline-start: 100%;\n position: absolute;\n top: ($context-menu-button-size / 4);\n z-index: 10000;\n\n > ul {\n list-style: none;\n margin: 0;\n padding: $context-menu-outer-padding 0;\n\n > li {\n margin: 0;\n width: 100%;\n\n &.separator {\n border-bottom: 1px solid $context-menu-border-color;\n margin: $context-menu-outer-padding 0;\n }\n\n > a {\n align-items: center;\n color: inherit;\n cursor: pointer;\n display: flex;\n line-height: 16px;\n outline: none;\n padding: $context-menu-item-padding;\n white-space: nowrap;\n\n &:-moz-any(:focus, :hover) {\n background: $input-primary;\n color: $white;\n\n a {\n color: $grey-90;\n }\n\n .icon {\n fill: $white;\n }\n\n &:-moz-any(:focus, :hover) {\n color: $white;\n }\n }\n }\n }\n }\n}\n", + ".prefs-pane {\n $options-spacing: 10px;\n $prefs-spacing: 20px;\n $prefs-width: 400px;\n\n color: $text-conditional;\n font-size: 14px;\n line-height: 21px;\n\n .sidebar {\n background: $white;\n border-left: $border-secondary;\n box-shadow: $shadow-secondary;\n height: 100%;\n offset-inline-end: 0;\n overflow-y: auto;\n padding: 40px;\n position: fixed;\n top: 0;\n transition: 0.1s cubic-bezier(0, 0, 0, 1);\n transition-property: transform;\n width: $prefs-width;\n z-index: 12000;\n\n &.hidden {\n transform: translateX(100%);\n\n &:dir(rtl) {\n transform: translateX(-100%);\n }\n }\n\n h1 {\n font-size: 21px;\n margin: 0;\n padding-top: $prefs-spacing;\n }\n }\n\n hr {\n border: 0;\n border-bottom: $border-secondary;\n margin: 20px 0;\n }\n\n .prefs-modal-inner-wrapper {\n padding-bottom: 100px;\n\n section {\n margin: $prefs-spacing 0;\n\n p {\n margin: 5px 0 20px 30px;\n }\n\n label {\n display: inline-block;\n position: relative;\n width: 100%;\n\n input {\n offset-inline-start: -30px;\n position: absolute;\n top: 0;\n }\n }\n\n > label {\n font-size: 16px;\n font-weight: bold;\n line-height: 19px;\n }\n }\n\n .options {\n background: $background-primary;\n border: $border-secondary;\n border-radius: 2px;\n margin: -$options-spacing 0 $prefs-spacing;\n margin-inline-start: 30px;\n padding: $options-spacing;\n\n &.disabled {\n opacity: 0.5;\n }\n\n label {\n $icon-offset-start: 35px;\n background-position-x: $icon-offset-start;\n background-position-y: 2.5px;\n background-repeat: no-repeat;\n display: inline-block;\n font-size: 14px;\n font-weight: normal;\n height: auto;\n line-height: 21px;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $icon-offset-start;\n }\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n padding-inline-start: 63px;\n }\n\n section {\n margin: 0;\n }\n }\n }\n\n .actions {\n background-color: $background-primary;\n border-left: $border-secondary;\n bottom: 0;\n offset-inline-end: 0;\n position: fixed;\n width: $prefs-width;\n\n button {\n margin-inline-end: $prefs-spacing;\n }\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n offset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:disabled):not(:checked) + label,\n [type='checkbox']:not(:disabled):checked + label {\n cursor: pointer;\n padding: 0 30px;\n position: relative;\n }\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: $white;\n border: $border-primary;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n top: 0;\n width: 21px;\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/in-content/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n -moz-context-properties: fill, stroke;\n fill: $input-primary;\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n stroke: none;\n top: 0;\n width: 21px;\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // hover\n [type='checkbox']:not(:disabled) + label:hover::before {\n border: 1px solid $input-primary;\n }\n\n // accessibility\n [type='checkbox']:not(:disabled):checked:focus + label::before,\n [type='checkbox']:not(:disabled):not(:checked):focus + label::before {\n border: 1px dotted $input-primary;\n }\n}\n\n.prefs-pane-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: $fill-secondary;\n offset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 12001;\n\n &:hover {\n background-color: $background-secondary;\n }\n\n &:active {\n background-color: $background-primary;\n }\n }\n}\n", + ".confirmation-dialog {\n .modal {\n box-shadow: 0 2px 2px 0 $black-10;\n left: 50%;\n margin-left: -200px;\n position: fixed;\n top: 20%;\n width: 400px;\n }\n\n section {\n margin: 0;\n }\n\n .modal-message {\n display: flex;\n padding: 16px;\n padding-bottom: 0;\n\n p {\n margin: 0;\n margin-bottom: 16px;\n }\n }\n\n .actions {\n border: 0;\n display: flex;\n flex-wrap: nowrap;\n padding: 0 16px;\n\n button {\n margin-inline-end: 16px;\n padding-inline-end: 18px;\n padding-inline-start: 18px;\n white-space: normal;\n width: 50%;\n\n &.done {\n margin-inline-end: 0;\n margin-inline-start: 0;\n }\n }\n }\n\n .icon {\n margin-inline-end: 16px;\n }\n}\n\n.modal-overlay {\n background: $background-secondary;\n height: 100%;\n left: 0;\n opacity: 0.8;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 11001;\n}\n\n.modal {\n background: $white;\n border: $border-secondary;\n border-radius: 5px;\n font-size: 15px;\n z-index: 11002;\n}\n", + ".card-outer {\n @include context-menu-button;\n background: $white;\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: $link-primary;\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: $link-primary;\n }\n }\n\n .card-preview-image-outer {\n background-color: $background-primary;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n &::after {\n border-bottom: 1px solid $black-5;\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n\n &.no-image {\n padding-top: 16px;\n }\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-image {\n max-height: 10 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name,\n &.no-image.no-context {\n max-height: 11 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name.no-context {\n max-height: 12 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: $text-secondary;\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase;\n }\n\n .card-title {\n font-size: 14px;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: $text-secondary;\n display: flex;\n font-size: 11px;\n left: 0;\n padding: 12px 16px 12px 14px;\n position: absolute;\n right: 0;\n }\n\n .card-context-icon {\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: $icon-size;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.wide-layout-enabled {\n .card-outer {\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-text {\n max-height: 7 * $card-text-line-height + $card-title-margin;\n }\n }\n }\n}\n", + ".manual-migration-container {\n color: $text-conditional;\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", + ".collapsible-section {\n .section-title {\n\n .click-target {\n cursor: pointer;\n vertical-align: top;\n white-space: nowrap;\n }\n\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n $info-active-color: $grey-90-10;\n position: relative;\n\n .section-info-option {\n offset-inline-end: 0;\n position: absolute;\n top: 0;\n }\n\n .info-option-icon {\n background-image: url('#{$image-path}glyph-info-option-12.svg');\n background-position: center;\n background-repeat: no-repeat;\n background-size: 12px 12px;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-secondary;\n height: 16px;\n margin-bottom: -2px; // Specific styling for the particuar icon. r=abenson\n opacity: 0;\n transition: opacity 0.2s $photon-easing;\n width: 16px;\n\n &[aria-expanded='true'] {\n background-color: $info-active-color;\n border-radius: 1px; // The shadow below makes this the desired larger radius\n box-shadow: 0 0 0 5px $info-active-color;\n fill: $fill-primary;\n\n + .info-option {\n opacity: 1;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: visible;\n }\n }\n\n &:not([aria-expanded='true']) + .info-option {\n pointer-events: none;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n }\n\n .section-info-option .info-option {\n opacity: 0;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: hidden;\n\n &::after,\n &::before {\n content: '';\n offset-inline-end: 0;\n position: absolute;\n }\n\n &::before {\n $before-height: 32px;\n background-image: url('chrome://global/skin/arrow/panelarrow-vertical.svg');\n background-position: right $os-infopanel-arrow-offset-end bottom;\n background-repeat: no-repeat;\n background-size: $os-infopanel-arrow-width $os-infopanel-arrow-height;\n -moz-context-properties: fill, stroke;\n fill: $white;\n height: $before-height;\n stroke: $grey-30;\n top: -$before-height;\n width: 43px;\n }\n\n &:dir(rtl)::before {\n background-position-x: $os-infopanel-arrow-offset-end;\n }\n\n &::after {\n height: $os-infopanel-arrow-height;\n offset-inline-start: 0;\n top: -$os-infopanel-arrow-height;\n }\n }\n\n .info-option {\n background: $white;\n border: $border-secondary;\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n font-size: 13px;\n line-height: 120%;\n margin-inline-end: -9px;\n offset-inline-end: 0;\n padding: 24px;\n position: absolute;\n top: 26px;\n -moz-user-select: none;\n width: 320px;\n z-index: 9999;\n }\n\n .info-option-header {\n font-size: 15px;\n font-weight: 600;\n }\n\n .info-option-body {\n margin: 0;\n margin-top: 12px;\n }\n\n .info-option-link {\n color: $link-primary;\n margin-left: 7px;\n }\n\n .info-option-manage {\n margin-top: 24px;\n\n button {\n background: 0;\n border: 0;\n color: $link-primary;\n cursor: pointer;\n margin: 0;\n padding: 0;\n\n &::after {\n background-image: url('#{$image-path}topic-show-more-12.svg');\n background-repeat: no-repeat;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-primary;\n height: 16px;\n margin-inline-start: 5px;\n margin-top: 1px;\n vertical-align: middle;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n }\n }\n\n .section-disclaimer {\n color: $grey-60;\n font-size: 13px;\n margin-bottom: 16px;\n position: relative;\n\n .section-disclaimer-text {\n display: inline-block;\n\n @media (min-width: $break-point-small) {\n width: $card-width;\n }\n\n @media (min-width: $break-point-medium) {\n width: 340px;\n }\n\n @media (min-width: $break-point-large) {\n width: 610px;\n }\n }\n\n a {\n color: $link-secondary;\n padding-left: 3px;\n }\n\n button {\n background: $grey-10;\n border: 1px solid $grey-40;\n border-radius: 4px;\n cursor: pointer;\n margin-top: 2px;\n max-width: 130px;\n min-height: 26px;\n offset-inline-end: 0;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n @media (min-width: $break-point-small) {\n position: absolute;\n }\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n\n .section-info-option {\n pointer-events: none;\n }\n }\n\n &:not(.collapsed):hover {\n .info-option-icon {\n opacity: 1;\n }\n }\n}\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-mac.css b/browser/extensions/activity-stream/css/activity-stream-mac.css index 2a070e19a9f3..d7946a33b5dd 100644 --- a/browser/extensions/activity-stream/css/activity-stream-mac.css +++ b/browser/extensions/activity-stream/css/activity-stream-mac.css @@ -210,19 +210,23 @@ main { margin: auto; padding-bottom: 48px; width: 224px; } - @media (min-width: 416px) { + @media (min-width: 432px) { main { width: 352px; } } - @media (min-width: 544px) { + @media (min-width: 560px) { main { width: 480px; } } - @media (min-width: 800px) { + @media (min-width: 816px) { main { width: 736px; } } main section { margin-bottom: 40px; position: relative; } +@media (min-width: 1072px) { + .wide-layout-enabled main { + width: 992px; } } + .section-top-bar { height: 16px; margin-bottom: 16px; } @@ -236,6 +240,9 @@ main { fill: #737373; vertical-align: middle; } +.base-content-fallback { + height: 100vh; } + .body-wrapper .section-title, .body-wrapper .sections-list .section:last-of-type, @@ -248,12 +255,27 @@ main { .body-wrapper.on .topic { opacity: 1; } +.as-error-fallback { + align-items: center; + border-radius: 3px; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + color: #4A4A4F; + display: flex; + flex-direction: column; + font-size: 12px; + justify-content: center; + justify-items: center; + line-height: 1.5; } + .as-error-fallback a { + color: #4A4A4F; + text-decoration: underline; } + .top-sites-list { list-style: none; margin: 0 -16px; margin-bottom: -18px; padding: 0; } - @media (max-width: 416px) { + @media (max-width: 432px) { .top-sites-list :nth-child(2n+1) .context-menu { margin-inline-end: auto; margin-inline-start: auto; @@ -264,32 +286,32 @@ main { margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 416px) and (max-width: 544px) { + @media (min-width: 432px) and (max-width: 560px) { .top-sites-list :nth-child(3n+2) .context-menu, .top-sites-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 800px) { + @media (min-width: 560px) and (max-width: 816px) { .top-sites-list :nth-child(4n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 768px) { + @media (min-width: 560px) and (max-width: 784px) { .top-sites-list :nth-child(4n+3) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1248px) { + @media (min-width: 816px) and (max-width: 1264px) { .top-sites-list :nth-child(6n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1024px) { + @media (min-width: 816px) and (max-width: 1040px) { .top-sites-list :nth-child(6n+5) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -412,6 +434,13 @@ main { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .top-sites-list .top-site-outer.placeholder .screenshot { display: none; } + .top-sites-list .top-site-outer.dragged .tile { + background: #EDEDF0; + box-shadow: none; } + .top-sites-list .top-site-outer.dragged .tile * { + display: none; } + .top-sites-list .top-site-outer.dragged .title { + visibility: hidden; } .top-sites-list:not(.dnd-active) .top-site-outer:-moz-any(.active, :focus, :hover) .tile { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -419,6 +448,27 @@ main { opacity: 1; transform: scale(1); } +.wide-layout-disabled .top-sites-list .hide-for-narrow { + display: none; } + +@media (min-width: 1072px) and (max-width: 1520px) { + .wide-layout-enabled .top-sites-list :nth-child(8n) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media (min-width: 1072px) and (max-width: 1296px) { + .wide-layout-enabled .top-sites-list :nth-child(8n+7) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media not all and (min-width: 1072px) { + .wide-layout-enabled .top-sites-list .hide-for-narrow { + display: none; } } + .edit-topsites-wrapper .add-topsites-button { border-right: 1px solid #D7D7DB; line-height: 13px; @@ -525,19 +575,19 @@ main { grid-gap: 32px; grid-template-columns: repeat(auto-fit, 224px); margin: 0; } - @media (max-width: 544px) { + @media (max-width: 560px) { .sections-list .section-list .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 800px) { + @media (min-width: 560px) and (max-width: 816px) { .sections-list .section-list :nth-child(2n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1248px) { + @media (min-width: 816px) and (max-width: 1264px) { .sections-list .section-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -569,18 +619,29 @@ main { margin-bottom: 0; text-align: center; } +@media (min-width: 1072px) and (max-width: 1520px) { + .wide-layout-enabled .sections-list .section-list :nth-child(3n) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media (min-width: 1072px) { + .wide-layout-enabled .sections-list .section-list { + grid-template-columns: repeat(auto-fit, 309px); } } + .topic { color: #737373; font-size: 12px; line-height: 1.6; margin-top: 12px; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic { line-height: 16px; } } .topic ul { margin: 0; padding: 0; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic ul { display: inline; padding-inline-start: 12px; } } @@ -595,7 +656,7 @@ main { color: #008EA4; } .topic .topic-read-more { color: #008EA4; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic .topic-read-more { float: right; } .topic .topic-read-more:dir(rtl) { @@ -910,7 +971,7 @@ main { height: 266px; margin-inline-end: 32px; position: relative; - width: 224px; } + width: 100%; } .card-outer .context-menu-button { background-clip: padding-box; background-color: #FFF; @@ -947,7 +1008,7 @@ main { height: 100%; outline: none; position: absolute; - width: 224px; } + width: 100%; } .card-outer > a:-moz-any(.active, :focus) .card { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -1041,27 +1102,35 @@ main { text-overflow: ellipsis; white-space: nowrap; } +@media (min-width: 1072px) { + .wide-layout-enabled .card-outer { + height: 370px; } + .wide-layout-enabled .card-outer .card-preview-image-outer { + height: 155px; } + .wide-layout-enabled .card-outer .card-text { + max-height: 135px; } } + .manual-migration-container { color: #4A4A4F; font-size: 13px; line-height: 15px; margin-bottom: 40px; text-align: center; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container { display: flex; justify-content: space-between; text-align: left; } } .manual-migration-container p { margin: 0; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container p { align-self: center; display: flex; justify-content: space-between; } } .manual-migration-container .icon { display: none; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container .icon { align-self: center; display: block; @@ -1072,7 +1141,7 @@ main { border: 0; display: block; flex-wrap: nowrap; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-actions { display: flex; justify-content: space-between; @@ -1206,13 +1275,13 @@ main { position: relative; } .collapsible-section .section-disclaimer .section-disclaimer-text { display: inline-block; } - @media (min-width: 416px) { + @media (min-width: 432px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 224px; } } - @media (min-width: 544px) { + @media (min-width: 560px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 340px; } } - @media (min-width: 800px) { + @media (min-width: 816px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 610px; } } .collapsible-section .section-disclaimer a { @@ -1230,10 +1299,13 @@ main { .collapsible-section .section-disclaimer button:hover:not(.dismiss) { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } - @media (min-width: 416px) { + @media (min-width: 432px) { .collapsible-section .section-disclaimer button { position: absolute; } } +.collapsible-section .section-body-fallback { + height: 266px; } + .collapsible-section .section-body { margin: 0 -7px; padding: 0 7px; } @@ -1257,3 +1329,5 @@ main { .collapsible-section:not(.collapsed):hover .info-option-icon { opacity: 1; } + +/*# sourceMappingURL=activity-stream-mac.css.map */ \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-mac.css.map b/browser/extensions/activity-stream/css/activity-stream-mac.css.map new file mode 100644 index 000000000000..bde924efc37a --- /dev/null +++ b/browser/extensions/activity-stream/css/activity-stream-mac.css.map @@ -0,0 +1,44 @@ +{ + "version": 3, + "file": "activity-stream-mac.css", + "sources": [ + "../content-src/styles/activity-stream-mac.scss", + "../content-src/styles/_activity-stream.scss", + "../content-src/styles/_normalize.scss", + "../content-src/styles/_variables.scss", + "../content-src/styles/_icons.scss", + "../content-src/components/Base/_Base.scss", + "../content-src/components/ErrorBoundary/_ErrorBoundary.scss", + "../content-src/components/TopSites/_TopSites.scss", + "../content-src/components/Sections/_Sections.scss", + "../content-src/components/Topics/_Topics.scss", + "../content-src/components/Search/_Search.scss", + "../content-src/components/ContextMenu/_ContextMenu.scss", + "../content-src/components/PreferencesPane/_PreferencesPane.scss", + "../content-src/components/ConfirmDialog/_ConfirmDialog.scss", + "../content-src/components/Card/_Card.scss", + "../content-src/components/ManualMigration/_ManualMigration.scss", + "../content-src/components/CollapsibleSection/_CollapsibleSection.scss" + ], + "sourcesContent": [ + "/* This is the mac variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 7px;\n$os-infopanel-arrow-width: 18px;\n$os-search-focus-shadow-radius: 3px;\n\n@import './activity-stream';\n", + "@import './normalize';\n@import './variables';\n@import './icons';\n\nhtml,\nbody,\n#root { // sass-lint:disable-line no-ids\n height: 100%;\n}\n\nbody {\n background: $background-primary;\n color: $text-primary;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n overflow-y: scroll;\n}\n\nh1,\nh2 {\n font-weight: normal;\n}\n\na {\n color: $link-primary;\n text-decoration: none;\n\n &:hover {\n color: $link-secondary;\n }\n}\n\n// For screen readers\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.inner-border {\n border: $border-secondary;\n border-radius: $border-radius;\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.show-on-init {\n opacity: 0;\n transition: opacity 0.2s ease-in;\n\n &.on {\n animation: fadeIn 0.2s;\n opacity: 1;\n }\n}\n\n.actions {\n border-top: $border-secondary;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin: 0;\n padding: 15px 25px 0;\n\n button {\n background-color: $input-secondary;\n border: $border-primary;\n border-radius: 4px;\n color: inherit;\n cursor: pointer;\n margin-bottom: 15px;\n padding: 10px 30px;\n white-space: nowrap;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n &.dismiss {\n border: 0;\n padding: 0;\n text-decoration: underline;\n }\n\n &.done {\n background: $input-primary;\n border: solid 1px $blue-60;\n color: $white;\n margin-inline-start: auto;\n }\n }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/PreferencesPane/PreferencesPane';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n", + "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n border: 0;\n}\n\nbody {\n margin: 0;\n}\n\nbutton,\ninput {\n font-family: inherit;\n font-size: inherit;\n}\n\n[hidden] {\n display: none !important; // sass-lint:disable-line no-important\n}\n", + "// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n// Aliases and derived styles based on Photon colors for common usage\n$background-primary: $grey-10;\n$background-secondary: $grey-20;\n$border-primary: 1px solid $grey-40;\n$border-secondary: 1px solid $grey-30;\n$fill-primary: $grey-90-80;\n$fill-secondary: $grey-90-60;\n$fill-tertiary: $grey-30;\n$input-primary: $blue-60;\n$input-secondary: $grey-10;\n$link-primary: $blue-60;\n$link-secondary: $teal-70;\n$shadow-primary: 0 0 0 5px $grey-30;\n$shadow-secondary: 0 1px 4px 0 $grey-90-10;\n$text-primary: $grey-90;\n$text-conditional: $grey-60;\n$text-secondary: $grey-50;\n$input-border: solid 1px $grey-90-20;\n$input-border-active: solid 1px $grey-90-40;\n$input-error-border: solid 1px $red-60;\n$input-error-boxshadow: 0 0 0 2px rgba($red-60, 0.35);\n\n$white: #FFF;\n$border-radius: 3px;\n\n$base-gutter: 32px;\n$section-spacing: 40px;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-border-color: $black-20;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $context-menu-border-color;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$inner-box-shadow: 0 0 0 1px $black-10;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n@mixin fade-in {\n box-shadow: inset $inner-box-shadow, $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n .context-menu-button {\n background-clip: padding-box;\n background-color: $white;\n background-image: url('chrome://browser/skin/page-action.svg');\n background-position: 55%;\n border: $border-primary;\n border-radius: 100%;\n box-shadow: $context-menu-button-boxshadow;\n cursor: pointer;\n fill: $fill-primary;\n height: $context-menu-button-size;\n offset-inline-end: -($context-menu-button-size / 2);\n opacity: 0;\n position: absolute;\n top: -($context-menu-button-size / 2);\n transform: scale(0.25);\n transition-duration: 200ms;\n transition-property: transform, opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n@mixin context-menu-button-hover {\n .context-menu-button {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@mixin context-menu-open-middle {\n .context-menu {\n margin-inline-end: auto;\n margin-inline-start: auto;\n offset-inline-end: auto;\n offset-inline-start: -$base-gutter;\n }\n}\n\n@mixin context-menu-open-left {\n .context-menu {\n margin-inline-end: 5px;\n margin-inline-start: auto;\n offset-inline-end: 0;\n offset-inline-start: auto;\n }\n}\n\n@mixin flip-icon {\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n}\n", + ".icon {\n background-position: center center;\n background-repeat: no-repeat;\n background-size: $icon-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-primary;\n height: $icon-size;\n vertical-align: middle;\n width: $icon-size;\n\n &.icon-spacer {\n margin-inline-end: 8px;\n }\n\n &.icon-small-spacer {\n margin-inline-end: 6px;\n }\n\n &.icon-bookmark-added {\n background-image: url('chrome://browser/skin/bookmark.svg');\n }\n\n &.icon-bookmark-hollow {\n background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n }\n\n &.icon-delete {\n background-image: url('#{$image-path}glyph-delete-16.svg');\n }\n\n &.icon-modal-delete {\n background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n background-size: $larger-icon-size;\n height: $larger-icon-size;\n width: $larger-icon-size;\n }\n\n &.icon-dismiss {\n background-image: url('#{$image-path}glyph-dismiss-16.svg');\n }\n\n &.icon-info {\n background-image: url('#{$image-path}glyph-info-16.svg');\n }\n\n &.icon-import {\n background-image: url('#{$image-path}glyph-import-16.svg');\n }\n\n &.icon-new-window {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-newWindow-16.svg');\n }\n\n &.icon-new-window-private {\n background-image: url('chrome://browser/skin/privateBrowsing.svg');\n }\n\n &.icon-settings {\n background-image: url('chrome://browser/skin/settings.svg');\n }\n\n &.icon-pin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-16.svg');\n }\n\n &.icon-unpin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-unpin-16.svg');\n }\n\n &.icon-edit {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.icon-pocket {\n background-image: url('#{$image-path}glyph-pocket-16.svg');\n }\n\n &.icon-historyItem { // sass-lint:disable-line class-name-format\n background-image: url('#{$image-path}glyph-historyItem-16.svg');\n }\n\n &.icon-trending {\n background-image: url('#{$image-path}glyph-trending-16.svg');\n transform: translateY(2px); // trending bolt is visually top heavy\n }\n\n &.icon-now {\n background-image: url('chrome://browser/skin/history.svg');\n }\n\n &.icon-topsites {\n background-image: url('#{$image-path}glyph-topsites-16.svg');\n }\n\n &.icon-pin-small {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-check {\n background-image: url('chrome://browser/skin/check.svg');\n }\n\n &.icon-webextension {\n background-image: url('#{$image-path}glyph-webextension-16.svg');\n }\n\n &.icon-highlights {\n background-image: url('#{$image-path}glyph-highlights-16.svg');\n }\n\n &.icon-arrowhead-down {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-arrowhead-forward {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n transform: rotate(-90deg);\n width: $smaller-icon-size;\n\n &:dir(rtl) {\n transform: rotate(90deg);\n }\n }\n}\n", + ".outer-wrapper {\n display: flex;\n flex-grow: 1;\n height: 100%;\n padding: $section-spacing $base-gutter $base-gutter;\n\n &.fixed-to-top {\n height: auto;\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets / onboarding are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-small) {\n width: $wrapper-max-width-small;\n }\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n}\n\n.wide-layout-enabled {\n main {\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n }\n}\n\n.section-top-bar {\n height: 16px;\n margin-bottom: 16px;\n}\n\n.section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n text-transform: uppercase;\n\n span {\n color: $text-secondary;\n fill: $text-secondary;\n vertical-align: middle;\n }\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topic\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n", + ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: $text-conditional;\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: $text-conditional;\n text-decoration: underline;\n }\n}\n\n", + ".top-sites-list {\n $top-sites-size: $grid-unit;\n $top-sites-border-radius: 6px;\n $top-sites-title-height: 30px;\n $top-sites-vertical-space: 8px;\n $screenshot-size: cover;\n $rich-icon-size: 96px;\n $default-icon-wrapper-size: 42px;\n $default-icon-size: 32px;\n $default-icon-offset: 6px;\n $half-base-gutter: $base-gutter / 2;\n\n list-style: none;\n margin: 0 (-$half-base-gutter);\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: -($top-sites-vertical-space + $top-sites-title-height / 3);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-small) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Three columns\n @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n :nth-child(3n+2),\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n li {\n display: inline-block;\n margin: 0 0 $top-sites-vertical-space;\n }\n\n // container for drop zone\n .top-site-outer {\n padding: 0 $half-base-gutter;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, $shadow-secondary;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: $text-secondary;\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: $background-primary;\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n position: absolute;\n }\n\n .rich-icon {\n background-size: $rich-icon-size;\n height: 100%;\n offset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon { // sass-lint:disable block property-sort-order\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n offset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .title {\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: $fill-tertiary;\n offset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n * {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// Always hide .hide-for-narrow if wide layout is disabled\n.wide-layout-disabled {\n .top-sites-list {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n\n.wide-layout-enabled {\n .top-sites-list {\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n }\n}\n\n.edit-topsites-wrapper {\n .add-topsites-button {\n border-right: $border-secondary;\n line-height: 13px;\n offset-inline-end: 24px;\n opacity: 0;\n padding: 0 10px;\n pointer-events: none;\n position: absolute;\n top: 2px;\n transition: opacity 0.2s $photon-easing;\n\n &:dir(rtl) {\n border-left: $border-secondary;\n border-right: 0;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n\n button {\n background: none;\n border: 0;\n color: $text-secondary;\n cursor: pointer;\n font-size: 12px;\n padding: 0;\n\n &:focus {\n background: $background-secondary;\n border-bottom: dotted 1px $text-secondary;\n }\n }\n }\n\n .modal {\n offset-inline-start: -31px;\n position: absolute;\n top: -29px;\n width: calc(100% + 62px);\n box-shadow: $shadow-secondary;\n }\n\n .edit-topsites-inner-wrapper {\n margin: 0;\n padding: 15px 30px;\n }\n}\n\n.top-sites:not(.collapsed):hover {\n .add-topsites-button {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.topsite-form {\n .form-wrapper {\n margin: auto;\n max-width: 350px;\n padding: 15px 0;\n\n .field {\n position: relative;\n }\n\n .url input:not(:placeholder-shown):dir(rtl) {\n direction: ltr;\n text-align: right;\n }\n\n .section-title {\n margin-bottom: 5px;\n }\n\n input {\n &[type='text'] {\n border: $input-border;\n border-radius: 2px;\n margin: 5px 0;\n padding: 7px;\n width: 100%;\n\n &:focus {\n border: $input-border-active;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n offset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n offset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", + ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: $fill-secondary;\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: $text-secondary;\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n }\n}\n\n.wide-layout-enabled {\n .sections-list {\n .section-list {\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", + ".topic {\n color: $text-secondary;\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n\n .topic-link {\n color: $link-secondary;\n }\n\n .topic-read-more {\n color: $link-secondary;\n\n @media (min-width: $break-point-large) {\n // This is floating to accomodate a very large number of topics and/or\n // very long topic names due to l10n.\n float: right;\n\n &:dir(rtl) {\n float: left;\n }\n }\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-secondary;\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n\n // This is a clearfix to for the topics-read-more link which is floating and causes\n // some jank when we set overflow:hidden for the animation.\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n}\n", + ".search-wrapper {\n $search-border-radius: 3px;\n $search-focus-color: $blue-50;\n $search-height: 35px;\n $search-input-left-label-width: 35px;\n $search-button-width: 36px;\n $search-glyph-image: url('chrome://browser/skin/search-glass.svg');\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n $search-glyph-size: 16px;\n $search-glyph-fill: $grey-90-40;\n // This is positioned so it is visually (not metrically) centered. r=abenson\n $search-glyph-left-position: 12px;\n\n cursor: default;\n display: flex;\n height: $search-height;\n // The extra 1px is to account for the box-shadow being outside of the element\n // instead of inside. It needs to be like that to not overlap the inner background\n // color of the hover state of the submit button.\n margin: 1px 1px $section-spacing;\n position: relative;\n width: 100%;\n\n input {\n border: 0;\n border-radius: $search-border-radius;\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n color: inherit;\n font-size: 15px;\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-input-left-label-width;\n width: 100%;\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n &:active input,\n input:focus {\n box-shadow: 0 0 0 $os-search-focus-shadow-radius $search-focus-color;\n }\n\n .search-label {\n background: $search-glyph-image no-repeat $search-glyph-left-position center / $search-glyph-size;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-start: 0;\n position: absolute;\n width: $search-input-left-label-width;\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable { // sass-lint:disable-line class-name-format\n border: 0;\n transform: translateY(2px);\n }\n}\n", + ".context-menu {\n background: $background-primary;\n border-radius: $context-menu-border-radius;\n box-shadow: $context-menu-shadow;\n display: block;\n font-size: $context-menu-font-size;\n margin-inline-start: 5px;\n offset-inline-start: 100%;\n position: absolute;\n top: ($context-menu-button-size / 4);\n z-index: 10000;\n\n > ul {\n list-style: none;\n margin: 0;\n padding: $context-menu-outer-padding 0;\n\n > li {\n margin: 0;\n width: 100%;\n\n &.separator {\n border-bottom: 1px solid $context-menu-border-color;\n margin: $context-menu-outer-padding 0;\n }\n\n > a {\n align-items: center;\n color: inherit;\n cursor: pointer;\n display: flex;\n line-height: 16px;\n outline: none;\n padding: $context-menu-item-padding;\n white-space: nowrap;\n\n &:-moz-any(:focus, :hover) {\n background: $input-primary;\n color: $white;\n\n a {\n color: $grey-90;\n }\n\n .icon {\n fill: $white;\n }\n\n &:-moz-any(:focus, :hover) {\n color: $white;\n }\n }\n }\n }\n }\n}\n", + ".prefs-pane {\n $options-spacing: 10px;\n $prefs-spacing: 20px;\n $prefs-width: 400px;\n\n color: $text-conditional;\n font-size: 14px;\n line-height: 21px;\n\n .sidebar {\n background: $white;\n border-left: $border-secondary;\n box-shadow: $shadow-secondary;\n height: 100%;\n offset-inline-end: 0;\n overflow-y: auto;\n padding: 40px;\n position: fixed;\n top: 0;\n transition: 0.1s cubic-bezier(0, 0, 0, 1);\n transition-property: transform;\n width: $prefs-width;\n z-index: 12000;\n\n &.hidden {\n transform: translateX(100%);\n\n &:dir(rtl) {\n transform: translateX(-100%);\n }\n }\n\n h1 {\n font-size: 21px;\n margin: 0;\n padding-top: $prefs-spacing;\n }\n }\n\n hr {\n border: 0;\n border-bottom: $border-secondary;\n margin: 20px 0;\n }\n\n .prefs-modal-inner-wrapper {\n padding-bottom: 100px;\n\n section {\n margin: $prefs-spacing 0;\n\n p {\n margin: 5px 0 20px 30px;\n }\n\n label {\n display: inline-block;\n position: relative;\n width: 100%;\n\n input {\n offset-inline-start: -30px;\n position: absolute;\n top: 0;\n }\n }\n\n > label {\n font-size: 16px;\n font-weight: bold;\n line-height: 19px;\n }\n }\n\n .options {\n background: $background-primary;\n border: $border-secondary;\n border-radius: 2px;\n margin: -$options-spacing 0 $prefs-spacing;\n margin-inline-start: 30px;\n padding: $options-spacing;\n\n &.disabled {\n opacity: 0.5;\n }\n\n label {\n $icon-offset-start: 35px;\n background-position-x: $icon-offset-start;\n background-position-y: 2.5px;\n background-repeat: no-repeat;\n display: inline-block;\n font-size: 14px;\n font-weight: normal;\n height: auto;\n line-height: 21px;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $icon-offset-start;\n }\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n padding-inline-start: 63px;\n }\n\n section {\n margin: 0;\n }\n }\n }\n\n .actions {\n background-color: $background-primary;\n border-left: $border-secondary;\n bottom: 0;\n offset-inline-end: 0;\n position: fixed;\n width: $prefs-width;\n\n button {\n margin-inline-end: $prefs-spacing;\n }\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n offset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:disabled):not(:checked) + label,\n [type='checkbox']:not(:disabled):checked + label {\n cursor: pointer;\n padding: 0 30px;\n position: relative;\n }\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: $white;\n border: $border-primary;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n top: 0;\n width: 21px;\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/in-content/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n -moz-context-properties: fill, stroke;\n fill: $input-primary;\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n stroke: none;\n top: 0;\n width: 21px;\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // hover\n [type='checkbox']:not(:disabled) + label:hover::before {\n border: 1px solid $input-primary;\n }\n\n // accessibility\n [type='checkbox']:not(:disabled):checked:focus + label::before,\n [type='checkbox']:not(:disabled):not(:checked):focus + label::before {\n border: 1px dotted $input-primary;\n }\n}\n\n.prefs-pane-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: $fill-secondary;\n offset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 12001;\n\n &:hover {\n background-color: $background-secondary;\n }\n\n &:active {\n background-color: $background-primary;\n }\n }\n}\n", + ".confirmation-dialog {\n .modal {\n box-shadow: 0 2px 2px 0 $black-10;\n left: 50%;\n margin-left: -200px;\n position: fixed;\n top: 20%;\n width: 400px;\n }\n\n section {\n margin: 0;\n }\n\n .modal-message {\n display: flex;\n padding: 16px;\n padding-bottom: 0;\n\n p {\n margin: 0;\n margin-bottom: 16px;\n }\n }\n\n .actions {\n border: 0;\n display: flex;\n flex-wrap: nowrap;\n padding: 0 16px;\n\n button {\n margin-inline-end: 16px;\n padding-inline-end: 18px;\n padding-inline-start: 18px;\n white-space: normal;\n width: 50%;\n\n &.done {\n margin-inline-end: 0;\n margin-inline-start: 0;\n }\n }\n }\n\n .icon {\n margin-inline-end: 16px;\n }\n}\n\n.modal-overlay {\n background: $background-secondary;\n height: 100%;\n left: 0;\n opacity: 0.8;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 11001;\n}\n\n.modal {\n background: $white;\n border: $border-secondary;\n border-radius: 5px;\n font-size: 15px;\n z-index: 11002;\n}\n", + ".card-outer {\n @include context-menu-button;\n background: $white;\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: $link-primary;\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: $link-primary;\n }\n }\n\n .card-preview-image-outer {\n background-color: $background-primary;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n &::after {\n border-bottom: 1px solid $black-5;\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n\n &.no-image {\n padding-top: 16px;\n }\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-image {\n max-height: 10 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name,\n &.no-image.no-context {\n max-height: 11 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name.no-context {\n max-height: 12 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: $text-secondary;\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase;\n }\n\n .card-title {\n font-size: 14px;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: $text-secondary;\n display: flex;\n font-size: 11px;\n left: 0;\n padding: 12px 16px 12px 14px;\n position: absolute;\n right: 0;\n }\n\n .card-context-icon {\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: $icon-size;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.wide-layout-enabled {\n .card-outer {\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-text {\n max-height: 7 * $card-text-line-height + $card-title-margin;\n }\n }\n }\n}\n", + ".manual-migration-container {\n color: $text-conditional;\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", + ".collapsible-section {\n .section-title {\n\n .click-target {\n cursor: pointer;\n vertical-align: top;\n white-space: nowrap;\n }\n\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n $info-active-color: $grey-90-10;\n position: relative;\n\n .section-info-option {\n offset-inline-end: 0;\n position: absolute;\n top: 0;\n }\n\n .info-option-icon {\n background-image: url('#{$image-path}glyph-info-option-12.svg');\n background-position: center;\n background-repeat: no-repeat;\n background-size: 12px 12px;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-secondary;\n height: 16px;\n margin-bottom: -2px; // Specific styling for the particuar icon. r=abenson\n opacity: 0;\n transition: opacity 0.2s $photon-easing;\n width: 16px;\n\n &[aria-expanded='true'] {\n background-color: $info-active-color;\n border-radius: 1px; // The shadow below makes this the desired larger radius\n box-shadow: 0 0 0 5px $info-active-color;\n fill: $fill-primary;\n\n + .info-option {\n opacity: 1;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: visible;\n }\n }\n\n &:not([aria-expanded='true']) + .info-option {\n pointer-events: none;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n }\n\n .section-info-option .info-option {\n opacity: 0;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: hidden;\n\n &::after,\n &::before {\n content: '';\n offset-inline-end: 0;\n position: absolute;\n }\n\n &::before {\n $before-height: 32px;\n background-image: url('chrome://global/skin/arrow/panelarrow-vertical.svg');\n background-position: right $os-infopanel-arrow-offset-end bottom;\n background-repeat: no-repeat;\n background-size: $os-infopanel-arrow-width $os-infopanel-arrow-height;\n -moz-context-properties: fill, stroke;\n fill: $white;\n height: $before-height;\n stroke: $grey-30;\n top: -$before-height;\n width: 43px;\n }\n\n &:dir(rtl)::before {\n background-position-x: $os-infopanel-arrow-offset-end;\n }\n\n &::after {\n height: $os-infopanel-arrow-height;\n offset-inline-start: 0;\n top: -$os-infopanel-arrow-height;\n }\n }\n\n .info-option {\n background: $white;\n border: $border-secondary;\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n font-size: 13px;\n line-height: 120%;\n margin-inline-end: -9px;\n offset-inline-end: 0;\n padding: 24px;\n position: absolute;\n top: 26px;\n -moz-user-select: none;\n width: 320px;\n z-index: 9999;\n }\n\n .info-option-header {\n font-size: 15px;\n font-weight: 600;\n }\n\n .info-option-body {\n margin: 0;\n margin-top: 12px;\n }\n\n .info-option-link {\n color: $link-primary;\n margin-left: 7px;\n }\n\n .info-option-manage {\n margin-top: 24px;\n\n button {\n background: 0;\n border: 0;\n color: $link-primary;\n cursor: pointer;\n margin: 0;\n padding: 0;\n\n &::after {\n background-image: url('#{$image-path}topic-show-more-12.svg');\n background-repeat: no-repeat;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-primary;\n height: 16px;\n margin-inline-start: 5px;\n margin-top: 1px;\n vertical-align: middle;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n }\n }\n\n .section-disclaimer {\n color: $grey-60;\n font-size: 13px;\n margin-bottom: 16px;\n position: relative;\n\n .section-disclaimer-text {\n display: inline-block;\n\n @media (min-width: $break-point-small) {\n width: $card-width;\n }\n\n @media (min-width: $break-point-medium) {\n width: 340px;\n }\n\n @media (min-width: $break-point-large) {\n width: 610px;\n }\n }\n\n a {\n color: $link-secondary;\n padding-left: 3px;\n }\n\n button {\n background: $grey-10;\n border: 1px solid $grey-40;\n border-radius: 4px;\n cursor: pointer;\n margin-top: 2px;\n max-width: 130px;\n min-height: 26px;\n offset-inline-end: 0;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n @media (min-width: $break-point-small) {\n position: absolute;\n }\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n\n .section-info-option {\n pointer-events: none;\n }\n }\n\n &:not(.collapsed):hover {\n .info-option-icon {\n opacity: 1;\n }\n }\n}\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-windows.css b/browser/extensions/activity-stream/css/activity-stream-windows.css index b720aade1a85..4cd87763f434 100644 --- a/browser/extensions/activity-stream/css/activity-stream-windows.css +++ b/browser/extensions/activity-stream/css/activity-stream-windows.css @@ -210,19 +210,23 @@ main { margin: auto; padding-bottom: 48px; width: 224px; } - @media (min-width: 416px) { + @media (min-width: 432px) { main { width: 352px; } } - @media (min-width: 544px) { + @media (min-width: 560px) { main { width: 480px; } } - @media (min-width: 800px) { + @media (min-width: 816px) { main { width: 736px; } } main section { margin-bottom: 40px; position: relative; } +@media (min-width: 1072px) { + .wide-layout-enabled main { + width: 992px; } } + .section-top-bar { height: 16px; margin-bottom: 16px; } @@ -236,6 +240,9 @@ main { fill: #737373; vertical-align: middle; } +.base-content-fallback { + height: 100vh; } + .body-wrapper .section-title, .body-wrapper .sections-list .section:last-of-type, @@ -248,12 +255,27 @@ main { .body-wrapper.on .topic { opacity: 1; } +.as-error-fallback { + align-items: center; + border-radius: 3px; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + color: #4A4A4F; + display: flex; + flex-direction: column; + font-size: 12px; + justify-content: center; + justify-items: center; + line-height: 1.5; } + .as-error-fallback a { + color: #4A4A4F; + text-decoration: underline; } + .top-sites-list { list-style: none; margin: 0 -16px; margin-bottom: -18px; padding: 0; } - @media (max-width: 416px) { + @media (max-width: 432px) { .top-sites-list :nth-child(2n+1) .context-menu { margin-inline-end: auto; margin-inline-start: auto; @@ -264,32 +286,32 @@ main { margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 416px) and (max-width: 544px) { + @media (min-width: 432px) and (max-width: 560px) { .top-sites-list :nth-child(3n+2) .context-menu, .top-sites-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 800px) { + @media (min-width: 560px) and (max-width: 816px) { .top-sites-list :nth-child(4n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 768px) { + @media (min-width: 560px) and (max-width: 784px) { .top-sites-list :nth-child(4n+3) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1248px) { + @media (min-width: 816px) and (max-width: 1264px) { .top-sites-list :nth-child(6n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1024px) { + @media (min-width: 816px) and (max-width: 1040px) { .top-sites-list :nth-child(6n+5) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -412,6 +434,13 @@ main { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .top-sites-list .top-site-outer.placeholder .screenshot { display: none; } + .top-sites-list .top-site-outer.dragged .tile { + background: #EDEDF0; + box-shadow: none; } + .top-sites-list .top-site-outer.dragged .tile * { + display: none; } + .top-sites-list .top-site-outer.dragged .title { + visibility: hidden; } .top-sites-list:not(.dnd-active) .top-site-outer:-moz-any(.active, :focus, :hover) .tile { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -419,6 +448,27 @@ main { opacity: 1; transform: scale(1); } +.wide-layout-disabled .top-sites-list .hide-for-narrow { + display: none; } + +@media (min-width: 1072px) and (max-width: 1520px) { + .wide-layout-enabled .top-sites-list :nth-child(8n) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media (min-width: 1072px) and (max-width: 1296px) { + .wide-layout-enabled .top-sites-list :nth-child(8n+7) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media not all and (min-width: 1072px) { + .wide-layout-enabled .top-sites-list .hide-for-narrow { + display: none; } } + .edit-topsites-wrapper .add-topsites-button { border-right: 1px solid #D7D7DB; line-height: 13px; @@ -525,19 +575,19 @@ main { grid-gap: 32px; grid-template-columns: repeat(auto-fit, 224px); margin: 0; } - @media (max-width: 544px) { + @media (max-width: 560px) { .sections-list .section-list .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 544px) and (max-width: 800px) { + @media (min-width: 560px) and (max-width: 816px) { .sections-list .section-list :nth-child(2n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 800px) and (max-width: 1248px) { + @media (min-width: 816px) and (max-width: 1264px) { .sections-list .section-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -569,18 +619,29 @@ main { margin-bottom: 0; text-align: center; } +@media (min-width: 1072px) and (max-width: 1520px) { + .wide-layout-enabled .sections-list .section-list :nth-child(3n) .context-menu { + margin-inline-end: 5px; + margin-inline-start: auto; + offset-inline-end: 0; + offset-inline-start: auto; } } + +@media (min-width: 1072px) { + .wide-layout-enabled .sections-list .section-list { + grid-template-columns: repeat(auto-fit, 309px); } } + .topic { color: #737373; font-size: 12px; line-height: 1.6; margin-top: 12px; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic { line-height: 16px; } } .topic ul { margin: 0; padding: 0; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic ul { display: inline; padding-inline-start: 12px; } } @@ -595,7 +656,7 @@ main { color: #008EA4; } .topic .topic-read-more { color: #008EA4; } - @media (min-width: 800px) { + @media (min-width: 816px) { .topic .topic-read-more { float: right; } .topic .topic-read-more:dir(rtl) { @@ -910,7 +971,7 @@ main { height: 266px; margin-inline-end: 32px; position: relative; - width: 224px; } + width: 100%; } .card-outer .context-menu-button { background-clip: padding-box; background-color: #FFF; @@ -947,7 +1008,7 @@ main { height: 100%; outline: none; position: absolute; - width: 224px; } + width: 100%; } .card-outer > a:-moz-any(.active, :focus) .card { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -1041,27 +1102,35 @@ main { text-overflow: ellipsis; white-space: nowrap; } +@media (min-width: 1072px) { + .wide-layout-enabled .card-outer { + height: 370px; } + .wide-layout-enabled .card-outer .card-preview-image-outer { + height: 155px; } + .wide-layout-enabled .card-outer .card-text { + max-height: 135px; } } + .manual-migration-container { color: #4A4A4F; font-size: 13px; line-height: 15px; margin-bottom: 40px; text-align: center; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container { display: flex; justify-content: space-between; text-align: left; } } .manual-migration-container p { margin: 0; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container p { align-self: center; display: flex; justify-content: space-between; } } .manual-migration-container .icon { display: none; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-container .icon { align-self: center; display: block; @@ -1072,7 +1141,7 @@ main { border: 0; display: block; flex-wrap: nowrap; } - @media (min-width: 544px) { + @media (min-width: 560px) { .manual-migration-actions { display: flex; justify-content: space-between; @@ -1206,13 +1275,13 @@ main { position: relative; } .collapsible-section .section-disclaimer .section-disclaimer-text { display: inline-block; } - @media (min-width: 416px) { + @media (min-width: 432px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 224px; } } - @media (min-width: 544px) { + @media (min-width: 560px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 340px; } } - @media (min-width: 800px) { + @media (min-width: 816px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 610px; } } .collapsible-section .section-disclaimer a { @@ -1230,10 +1299,13 @@ main { .collapsible-section .section-disclaimer button:hover:not(.dismiss) { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } - @media (min-width: 416px) { + @media (min-width: 432px) { .collapsible-section .section-disclaimer button { position: absolute; } } +.collapsible-section .section-body-fallback { + height: 266px; } + .collapsible-section .section-body { margin: 0 -7px; padding: 0 7px; } @@ -1257,3 +1329,5 @@ main { .collapsible-section:not(.collapsed):hover .info-option-icon { opacity: 1; } + +/*# sourceMappingURL=activity-stream-windows.css.map */ \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-windows.css.map b/browser/extensions/activity-stream/css/activity-stream-windows.css.map new file mode 100644 index 000000000000..763d24af9723 --- /dev/null +++ b/browser/extensions/activity-stream/css/activity-stream-windows.css.map @@ -0,0 +1,44 @@ +{ + "version": 3, + "file": "activity-stream-windows.css", + "sources": [ + "../content-src/styles/activity-stream-windows.scss", + "../content-src/styles/_activity-stream.scss", + "../content-src/styles/_normalize.scss", + "../content-src/styles/_variables.scss", + "../content-src/styles/_icons.scss", + "../content-src/components/Base/_Base.scss", + "../content-src/components/ErrorBoundary/_ErrorBoundary.scss", + "../content-src/components/TopSites/_TopSites.scss", + "../content-src/components/Sections/_Sections.scss", + "../content-src/components/Topics/_Topics.scss", + "../content-src/components/Search/_Search.scss", + "../content-src/components/ContextMenu/_ContextMenu.scss", + "../content-src/components/PreferencesPane/_PreferencesPane.scss", + "../content-src/components/ConfirmDialog/_ConfirmDialog.scss", + "../content-src/components/Card/_Card.scss", + "../content-src/components/ManualMigration/_ManualMigration.scss", + "../content-src/components/CollapsibleSection/_CollapsibleSection.scss" + ], + "sourcesContent": [ + "/* This is the windows variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 6px;\n$os-infopanel-arrow-width: 20px;\n$os-search-focus-shadow-radius: 1px;\n\n@import './activity-stream';\n", + "@import './normalize';\n@import './variables';\n@import './icons';\n\nhtml,\nbody,\n#root { // sass-lint:disable-line no-ids\n height: 100%;\n}\n\nbody {\n background: $background-primary;\n color: $text-primary;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n overflow-y: scroll;\n}\n\nh1,\nh2 {\n font-weight: normal;\n}\n\na {\n color: $link-primary;\n text-decoration: none;\n\n &:hover {\n color: $link-secondary;\n }\n}\n\n// For screen readers\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.inner-border {\n border: $border-secondary;\n border-radius: $border-radius;\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.show-on-init {\n opacity: 0;\n transition: opacity 0.2s ease-in;\n\n &.on {\n animation: fadeIn 0.2s;\n opacity: 1;\n }\n}\n\n.actions {\n border-top: $border-secondary;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin: 0;\n padding: 15px 25px 0;\n\n button {\n background-color: $input-secondary;\n border: $border-primary;\n border-radius: 4px;\n color: inherit;\n cursor: pointer;\n margin-bottom: 15px;\n padding: 10px 30px;\n white-space: nowrap;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n &.dismiss {\n border: 0;\n padding: 0;\n text-decoration: underline;\n }\n\n &.done {\n background: $input-primary;\n border: solid 1px $blue-60;\n color: $white;\n margin-inline-start: auto;\n }\n }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/PreferencesPane/PreferencesPane';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n", + "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n border: 0;\n}\n\nbody {\n margin: 0;\n}\n\nbutton,\ninput {\n font-family: inherit;\n font-size: inherit;\n}\n\n[hidden] {\n display: none !important; // sass-lint:disable-line no-important\n}\n", + "// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n// Aliases and derived styles based on Photon colors for common usage\n$background-primary: $grey-10;\n$background-secondary: $grey-20;\n$border-primary: 1px solid $grey-40;\n$border-secondary: 1px solid $grey-30;\n$fill-primary: $grey-90-80;\n$fill-secondary: $grey-90-60;\n$fill-tertiary: $grey-30;\n$input-primary: $blue-60;\n$input-secondary: $grey-10;\n$link-primary: $blue-60;\n$link-secondary: $teal-70;\n$shadow-primary: 0 0 0 5px $grey-30;\n$shadow-secondary: 0 1px 4px 0 $grey-90-10;\n$text-primary: $grey-90;\n$text-conditional: $grey-60;\n$text-secondary: $grey-50;\n$input-border: solid 1px $grey-90-20;\n$input-border-active: solid 1px $grey-90-40;\n$input-error-border: solid 1px $red-60;\n$input-error-boxshadow: 0 0 0 2px rgba($red-60, 0.35);\n\n$white: #FFF;\n$border-radius: 3px;\n\n$base-gutter: 32px;\n$section-spacing: 40px;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-border-color: $black-20;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $context-menu-border-color;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$inner-box-shadow: 0 0 0 1px $black-10;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n@mixin fade-in {\n box-shadow: inset $inner-box-shadow, $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n .context-menu-button {\n background-clip: padding-box;\n background-color: $white;\n background-image: url('chrome://browser/skin/page-action.svg');\n background-position: 55%;\n border: $border-primary;\n border-radius: 100%;\n box-shadow: $context-menu-button-boxshadow;\n cursor: pointer;\n fill: $fill-primary;\n height: $context-menu-button-size;\n offset-inline-end: -($context-menu-button-size / 2);\n opacity: 0;\n position: absolute;\n top: -($context-menu-button-size / 2);\n transform: scale(0.25);\n transition-duration: 200ms;\n transition-property: transform, opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n@mixin context-menu-button-hover {\n .context-menu-button {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@mixin context-menu-open-middle {\n .context-menu {\n margin-inline-end: auto;\n margin-inline-start: auto;\n offset-inline-end: auto;\n offset-inline-start: -$base-gutter;\n }\n}\n\n@mixin context-menu-open-left {\n .context-menu {\n margin-inline-end: 5px;\n margin-inline-start: auto;\n offset-inline-end: 0;\n offset-inline-start: auto;\n }\n}\n\n@mixin flip-icon {\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n}\n", + ".icon {\n background-position: center center;\n background-repeat: no-repeat;\n background-size: $icon-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-primary;\n height: $icon-size;\n vertical-align: middle;\n width: $icon-size;\n\n &.icon-spacer {\n margin-inline-end: 8px;\n }\n\n &.icon-small-spacer {\n margin-inline-end: 6px;\n }\n\n &.icon-bookmark-added {\n background-image: url('chrome://browser/skin/bookmark.svg');\n }\n\n &.icon-bookmark-hollow {\n background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n }\n\n &.icon-delete {\n background-image: url('#{$image-path}glyph-delete-16.svg');\n }\n\n &.icon-modal-delete {\n background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n background-size: $larger-icon-size;\n height: $larger-icon-size;\n width: $larger-icon-size;\n }\n\n &.icon-dismiss {\n background-image: url('#{$image-path}glyph-dismiss-16.svg');\n }\n\n &.icon-info {\n background-image: url('#{$image-path}glyph-info-16.svg');\n }\n\n &.icon-import {\n background-image: url('#{$image-path}glyph-import-16.svg');\n }\n\n &.icon-new-window {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-newWindow-16.svg');\n }\n\n &.icon-new-window-private {\n background-image: url('chrome://browser/skin/privateBrowsing.svg');\n }\n\n &.icon-settings {\n background-image: url('chrome://browser/skin/settings.svg');\n }\n\n &.icon-pin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-16.svg');\n }\n\n &.icon-unpin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-unpin-16.svg');\n }\n\n &.icon-edit {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.icon-pocket {\n background-image: url('#{$image-path}glyph-pocket-16.svg');\n }\n\n &.icon-historyItem { // sass-lint:disable-line class-name-format\n background-image: url('#{$image-path}glyph-historyItem-16.svg');\n }\n\n &.icon-trending {\n background-image: url('#{$image-path}glyph-trending-16.svg');\n transform: translateY(2px); // trending bolt is visually top heavy\n }\n\n &.icon-now {\n background-image: url('chrome://browser/skin/history.svg');\n }\n\n &.icon-topsites {\n background-image: url('#{$image-path}glyph-topsites-16.svg');\n }\n\n &.icon-pin-small {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-check {\n background-image: url('chrome://browser/skin/check.svg');\n }\n\n &.icon-webextension {\n background-image: url('#{$image-path}glyph-webextension-16.svg');\n }\n\n &.icon-highlights {\n background-image: url('#{$image-path}glyph-highlights-16.svg');\n }\n\n &.icon-arrowhead-down {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-arrowhead-forward {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n transform: rotate(-90deg);\n width: $smaller-icon-size;\n\n &:dir(rtl) {\n transform: rotate(90deg);\n }\n }\n}\n", + ".outer-wrapper {\n display: flex;\n flex-grow: 1;\n height: 100%;\n padding: $section-spacing $base-gutter $base-gutter;\n\n &.fixed-to-top {\n height: auto;\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets / onboarding are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-small) {\n width: $wrapper-max-width-small;\n }\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n}\n\n.wide-layout-enabled {\n main {\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n }\n}\n\n.section-top-bar {\n height: 16px;\n margin-bottom: 16px;\n}\n\n.section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n text-transform: uppercase;\n\n span {\n color: $text-secondary;\n fill: $text-secondary;\n vertical-align: middle;\n }\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topic\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n", + ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: $text-conditional;\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: $text-conditional;\n text-decoration: underline;\n }\n}\n\n", + ".top-sites-list {\n $top-sites-size: $grid-unit;\n $top-sites-border-radius: 6px;\n $top-sites-title-height: 30px;\n $top-sites-vertical-space: 8px;\n $screenshot-size: cover;\n $rich-icon-size: 96px;\n $default-icon-wrapper-size: 42px;\n $default-icon-size: 32px;\n $default-icon-offset: 6px;\n $half-base-gutter: $base-gutter / 2;\n\n list-style: none;\n margin: 0 (-$half-base-gutter);\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: -($top-sites-vertical-space + $top-sites-title-height / 3);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-small) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Three columns\n @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n :nth-child(3n+2),\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n li {\n display: inline-block;\n margin: 0 0 $top-sites-vertical-space;\n }\n\n // container for drop zone\n .top-site-outer {\n padding: 0 $half-base-gutter;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, $shadow-secondary;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: $text-secondary;\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: $background-primary;\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n position: absolute;\n }\n\n .rich-icon {\n background-size: $rich-icon-size;\n height: 100%;\n offset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon { // sass-lint:disable block property-sort-order\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n offset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .title {\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: $fill-tertiary;\n offset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n * {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// Always hide .hide-for-narrow if wide layout is disabled\n.wide-layout-disabled {\n .top-sites-list {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n\n.wide-layout-enabled {\n .top-sites-list {\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n }\n}\n\n.edit-topsites-wrapper {\n .add-topsites-button {\n border-right: $border-secondary;\n line-height: 13px;\n offset-inline-end: 24px;\n opacity: 0;\n padding: 0 10px;\n pointer-events: none;\n position: absolute;\n top: 2px;\n transition: opacity 0.2s $photon-easing;\n\n &:dir(rtl) {\n border-left: $border-secondary;\n border-right: 0;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n\n button {\n background: none;\n border: 0;\n color: $text-secondary;\n cursor: pointer;\n font-size: 12px;\n padding: 0;\n\n &:focus {\n background: $background-secondary;\n border-bottom: dotted 1px $text-secondary;\n }\n }\n }\n\n .modal {\n offset-inline-start: -31px;\n position: absolute;\n top: -29px;\n width: calc(100% + 62px);\n box-shadow: $shadow-secondary;\n }\n\n .edit-topsites-inner-wrapper {\n margin: 0;\n padding: 15px 30px;\n }\n}\n\n.top-sites:not(.collapsed):hover {\n .add-topsites-button {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.topsite-form {\n .form-wrapper {\n margin: auto;\n max-width: 350px;\n padding: 15px 0;\n\n .field {\n position: relative;\n }\n\n .url input:not(:placeholder-shown):dir(rtl) {\n direction: ltr;\n text-align: right;\n }\n\n .section-title {\n margin-bottom: 5px;\n }\n\n input {\n &[type='text'] {\n border: $input-border;\n border-radius: 2px;\n margin: 5px 0;\n padding: 7px;\n width: 100%;\n\n &:focus {\n border: $input-border-active;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n offset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n offset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", + ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: $fill-secondary;\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: $text-secondary;\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n }\n}\n\n.wide-layout-enabled {\n .sections-list {\n .section-list {\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", + ".topic {\n color: $text-secondary;\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n\n .topic-link {\n color: $link-secondary;\n }\n\n .topic-read-more {\n color: $link-secondary;\n\n @media (min-width: $break-point-large) {\n // This is floating to accomodate a very large number of topics and/or\n // very long topic names due to l10n.\n float: right;\n\n &:dir(rtl) {\n float: left;\n }\n }\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-secondary;\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n\n // This is a clearfix to for the topics-read-more link which is floating and causes\n // some jank when we set overflow:hidden for the animation.\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n}\n", + ".search-wrapper {\n $search-border-radius: 3px;\n $search-focus-color: $blue-50;\n $search-height: 35px;\n $search-input-left-label-width: 35px;\n $search-button-width: 36px;\n $search-glyph-image: url('chrome://browser/skin/search-glass.svg');\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n $search-glyph-size: 16px;\n $search-glyph-fill: $grey-90-40;\n // This is positioned so it is visually (not metrically) centered. r=abenson\n $search-glyph-left-position: 12px;\n\n cursor: default;\n display: flex;\n height: $search-height;\n // The extra 1px is to account for the box-shadow being outside of the element\n // instead of inside. It needs to be like that to not overlap the inner background\n // color of the hover state of the submit button.\n margin: 1px 1px $section-spacing;\n position: relative;\n width: 100%;\n\n input {\n border: 0;\n border-radius: $search-border-radius;\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n color: inherit;\n font-size: 15px;\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-input-left-label-width;\n width: 100%;\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n &:active input,\n input:focus {\n box-shadow: 0 0 0 $os-search-focus-shadow-radius $search-focus-color;\n }\n\n .search-label {\n background: $search-glyph-image no-repeat $search-glyph-left-position center / $search-glyph-size;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-start: 0;\n position: absolute;\n width: $search-input-left-label-width;\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable { // sass-lint:disable-line class-name-format\n border: 0;\n transform: translateY(2px);\n }\n}\n", + ".context-menu {\n background: $background-primary;\n border-radius: $context-menu-border-radius;\n box-shadow: $context-menu-shadow;\n display: block;\n font-size: $context-menu-font-size;\n margin-inline-start: 5px;\n offset-inline-start: 100%;\n position: absolute;\n top: ($context-menu-button-size / 4);\n z-index: 10000;\n\n > ul {\n list-style: none;\n margin: 0;\n padding: $context-menu-outer-padding 0;\n\n > li {\n margin: 0;\n width: 100%;\n\n &.separator {\n border-bottom: 1px solid $context-menu-border-color;\n margin: $context-menu-outer-padding 0;\n }\n\n > a {\n align-items: center;\n color: inherit;\n cursor: pointer;\n display: flex;\n line-height: 16px;\n outline: none;\n padding: $context-menu-item-padding;\n white-space: nowrap;\n\n &:-moz-any(:focus, :hover) {\n background: $input-primary;\n color: $white;\n\n a {\n color: $grey-90;\n }\n\n .icon {\n fill: $white;\n }\n\n &:-moz-any(:focus, :hover) {\n color: $white;\n }\n }\n }\n }\n }\n}\n", + ".prefs-pane {\n $options-spacing: 10px;\n $prefs-spacing: 20px;\n $prefs-width: 400px;\n\n color: $text-conditional;\n font-size: 14px;\n line-height: 21px;\n\n .sidebar {\n background: $white;\n border-left: $border-secondary;\n box-shadow: $shadow-secondary;\n height: 100%;\n offset-inline-end: 0;\n overflow-y: auto;\n padding: 40px;\n position: fixed;\n top: 0;\n transition: 0.1s cubic-bezier(0, 0, 0, 1);\n transition-property: transform;\n width: $prefs-width;\n z-index: 12000;\n\n &.hidden {\n transform: translateX(100%);\n\n &:dir(rtl) {\n transform: translateX(-100%);\n }\n }\n\n h1 {\n font-size: 21px;\n margin: 0;\n padding-top: $prefs-spacing;\n }\n }\n\n hr {\n border: 0;\n border-bottom: $border-secondary;\n margin: 20px 0;\n }\n\n .prefs-modal-inner-wrapper {\n padding-bottom: 100px;\n\n section {\n margin: $prefs-spacing 0;\n\n p {\n margin: 5px 0 20px 30px;\n }\n\n label {\n display: inline-block;\n position: relative;\n width: 100%;\n\n input {\n offset-inline-start: -30px;\n position: absolute;\n top: 0;\n }\n }\n\n > label {\n font-size: 16px;\n font-weight: bold;\n line-height: 19px;\n }\n }\n\n .options {\n background: $background-primary;\n border: $border-secondary;\n border-radius: 2px;\n margin: -$options-spacing 0 $prefs-spacing;\n margin-inline-start: 30px;\n padding: $options-spacing;\n\n &.disabled {\n opacity: 0.5;\n }\n\n label {\n $icon-offset-start: 35px;\n background-position-x: $icon-offset-start;\n background-position-y: 2.5px;\n background-repeat: no-repeat;\n display: inline-block;\n font-size: 14px;\n font-weight: normal;\n height: auto;\n line-height: 21px;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $icon-offset-start;\n }\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n padding-inline-start: 63px;\n }\n\n section {\n margin: 0;\n }\n }\n }\n\n .actions {\n background-color: $background-primary;\n border-left: $border-secondary;\n bottom: 0;\n offset-inline-end: 0;\n position: fixed;\n width: $prefs-width;\n\n button {\n margin-inline-end: $prefs-spacing;\n }\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n offset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:disabled):not(:checked) + label,\n [type='checkbox']:not(:disabled):checked + label {\n cursor: pointer;\n padding: 0 30px;\n position: relative;\n }\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: $white;\n border: $border-primary;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n top: 0;\n width: 21px;\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/in-content/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n -moz-context-properties: fill, stroke;\n fill: $input-primary;\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n stroke: none;\n top: 0;\n width: 21px;\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // hover\n [type='checkbox']:not(:disabled) + label:hover::before {\n border: 1px solid $input-primary;\n }\n\n // accessibility\n [type='checkbox']:not(:disabled):checked:focus + label::before,\n [type='checkbox']:not(:disabled):not(:checked):focus + label::before {\n border: 1px dotted $input-primary;\n }\n}\n\n.prefs-pane-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: $fill-secondary;\n offset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 12001;\n\n &:hover {\n background-color: $background-secondary;\n }\n\n &:active {\n background-color: $background-primary;\n }\n }\n}\n", + ".confirmation-dialog {\n .modal {\n box-shadow: 0 2px 2px 0 $black-10;\n left: 50%;\n margin-left: -200px;\n position: fixed;\n top: 20%;\n width: 400px;\n }\n\n section {\n margin: 0;\n }\n\n .modal-message {\n display: flex;\n padding: 16px;\n padding-bottom: 0;\n\n p {\n margin: 0;\n margin-bottom: 16px;\n }\n }\n\n .actions {\n border: 0;\n display: flex;\n flex-wrap: nowrap;\n padding: 0 16px;\n\n button {\n margin-inline-end: 16px;\n padding-inline-end: 18px;\n padding-inline-start: 18px;\n white-space: normal;\n width: 50%;\n\n &.done {\n margin-inline-end: 0;\n margin-inline-start: 0;\n }\n }\n }\n\n .icon {\n margin-inline-end: 16px;\n }\n}\n\n.modal-overlay {\n background: $background-secondary;\n height: 100%;\n left: 0;\n opacity: 0.8;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 11001;\n}\n\n.modal {\n background: $white;\n border: $border-secondary;\n border-radius: 5px;\n font-size: 15px;\n z-index: 11002;\n}\n", + ".card-outer {\n @include context-menu-button;\n background: $white;\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: $link-primary;\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: $link-primary;\n }\n }\n\n .card-preview-image-outer {\n background-color: $background-primary;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n &::after {\n border-bottom: 1px solid $black-5;\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n\n &.no-image {\n padding-top: 16px;\n }\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-image {\n max-height: 10 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name,\n &.no-image.no-context {\n max-height: 11 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name.no-context {\n max-height: 12 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: $text-secondary;\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase;\n }\n\n .card-title {\n font-size: 14px;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: $text-secondary;\n display: flex;\n font-size: 11px;\n left: 0;\n padding: 12px 16px 12px 14px;\n position: absolute;\n right: 0;\n }\n\n .card-context-icon {\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: $icon-size;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.wide-layout-enabled {\n .card-outer {\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-text {\n max-height: 7 * $card-text-line-height + $card-title-margin;\n }\n }\n }\n}\n", + ".manual-migration-container {\n color: $text-conditional;\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", + ".collapsible-section {\n .section-title {\n\n .click-target {\n cursor: pointer;\n vertical-align: top;\n white-space: nowrap;\n }\n\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n $info-active-color: $grey-90-10;\n position: relative;\n\n .section-info-option {\n offset-inline-end: 0;\n position: absolute;\n top: 0;\n }\n\n .info-option-icon {\n background-image: url('#{$image-path}glyph-info-option-12.svg');\n background-position: center;\n background-repeat: no-repeat;\n background-size: 12px 12px;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-secondary;\n height: 16px;\n margin-bottom: -2px; // Specific styling for the particuar icon. r=abenson\n opacity: 0;\n transition: opacity 0.2s $photon-easing;\n width: 16px;\n\n &[aria-expanded='true'] {\n background-color: $info-active-color;\n border-radius: 1px; // The shadow below makes this the desired larger radius\n box-shadow: 0 0 0 5px $info-active-color;\n fill: $fill-primary;\n\n + .info-option {\n opacity: 1;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: visible;\n }\n }\n\n &:not([aria-expanded='true']) + .info-option {\n pointer-events: none;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n }\n\n .section-info-option .info-option {\n opacity: 0;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: hidden;\n\n &::after,\n &::before {\n content: '';\n offset-inline-end: 0;\n position: absolute;\n }\n\n &::before {\n $before-height: 32px;\n background-image: url('chrome://global/skin/arrow/panelarrow-vertical.svg');\n background-position: right $os-infopanel-arrow-offset-end bottom;\n background-repeat: no-repeat;\n background-size: $os-infopanel-arrow-width $os-infopanel-arrow-height;\n -moz-context-properties: fill, stroke;\n fill: $white;\n height: $before-height;\n stroke: $grey-30;\n top: -$before-height;\n width: 43px;\n }\n\n &:dir(rtl)::before {\n background-position-x: $os-infopanel-arrow-offset-end;\n }\n\n &::after {\n height: $os-infopanel-arrow-height;\n offset-inline-start: 0;\n top: -$os-infopanel-arrow-height;\n }\n }\n\n .info-option {\n background: $white;\n border: $border-secondary;\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n font-size: 13px;\n line-height: 120%;\n margin-inline-end: -9px;\n offset-inline-end: 0;\n padding: 24px;\n position: absolute;\n top: 26px;\n -moz-user-select: none;\n width: 320px;\n z-index: 9999;\n }\n\n .info-option-header {\n font-size: 15px;\n font-weight: 600;\n }\n\n .info-option-body {\n margin: 0;\n margin-top: 12px;\n }\n\n .info-option-link {\n color: $link-primary;\n margin-left: 7px;\n }\n\n .info-option-manage {\n margin-top: 24px;\n\n button {\n background: 0;\n border: 0;\n color: $link-primary;\n cursor: pointer;\n margin: 0;\n padding: 0;\n\n &::after {\n background-image: url('#{$image-path}topic-show-more-12.svg');\n background-repeat: no-repeat;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-primary;\n height: 16px;\n margin-inline-start: 5px;\n margin-top: 1px;\n vertical-align: middle;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n }\n }\n\n .section-disclaimer {\n color: $grey-60;\n font-size: 13px;\n margin-bottom: 16px;\n position: relative;\n\n .section-disclaimer-text {\n display: inline-block;\n\n @media (min-width: $break-point-small) {\n width: $card-width;\n }\n\n @media (min-width: $break-point-medium) {\n width: 340px;\n }\n\n @media (min-width: $break-point-large) {\n width: 610px;\n }\n }\n\n a {\n color: $link-secondary;\n padding-left: 3px;\n }\n\n button {\n background: $grey-10;\n border: 1px solid $grey-40;\n border-radius: 4px;\n cursor: pointer;\n margin-top: 2px;\n max-width: 130px;\n min-height: 26px;\n offset-inline-end: 0;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n @media (min-width: $break-point-small) {\n position: absolute;\n }\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n\n .section-info-option {\n pointer-events: none;\n }\n }\n\n &:not(.collapsed):hover {\n .info-option-icon {\n opacity: 1;\n }\n }\n}\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js index 0cb7388f4ee0..4af233f865a7 100644 --- a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js +++ b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js @@ -60,7 +60,7 @@ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 10); +/******/ return __webpack_require__(__webpack_require__.s = 12); /******/ }) /************************************************************************/ /******/ ([ @@ -366,39 +366,59 @@ module.exports = ReactIntl; /* 3 */ /***/ (function(module, exports) { -module.exports = ReactRedux; +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + /***/ }), /* 4 */ /***/ (function(module, exports) { -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - +module.exports = ReactRedux; /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +const TOP_SITES_SOURCE = "TOP_SITES"; +/* harmony export (immutable) */ __webpack_exports__["d"] = TOP_SITES_SOURCE; + +const TOP_SITES_CONTEXT_MENU_OPTIONS = ["CheckPinTopSite", "EditTopSite", "Separator", "OpenInNewWindow", "OpenInPrivateWindow", "Separator", "BlockUrl", "DeleteUrl"]; +/* harmony export (immutable) */ __webpack_exports__["c"] = TOP_SITES_CONTEXT_MENU_OPTIONS; + +// minimum size necessary to show a rich icon instead of a screenshot +const MIN_RICH_FAVICON_SIZE = 96; +/* harmony export (immutable) */ __webpack_exports__["b"] = MIN_RICH_FAVICON_SIZE; + +// minimum size necessary to show any icon in the top left corner with a screenshot +const MIN_CORNER_FAVICON_SIZE = 16; +/* harmony export (immutable) */ __webpack_exports__["a"] = MIN_CORNER_FAVICON_SIZE; + + +/***/ }), +/* 6 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; // EXTERNAL MODULE: ./system-addon/common/Actions.jsm @@ -447,10 +467,10 @@ class Dedupe { -const TOP_SITES_DEFAULT_ROWS = 2; +const TOP_SITES_DEFAULT_ROWS = 1; /* unused harmony export TOP_SITES_DEFAULT_ROWS */ -const TOP_SITES_MAX_SITES_PER_ROW = 6; +const TOP_SITES_MAX_SITES_PER_ROW = 8; /* harmony export (immutable) */ __webpack_exports__["a"] = TOP_SITES_MAX_SITES_PER_ROW; @@ -771,7 +791,95 @@ function PreferencesPane(prevState = INITIAL_STATE.PreferencesPane, action) { var reducers = { TopSites, App, Snippets, Prefs, Dialog, Sections, PreferencesPane }; /***/ }), -/* 6 */ +/* 7 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_intl__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react_intl__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); + + + +class ErrorBoundaryFallback extends __WEBPACK_IMPORTED_MODULE_1_react___default.a.PureComponent { + constructor(props) { + super(props); + this.windowObj = this.props.windowObj || window; + this.onClick = this.onClick.bind(this); + } + + /** + * Since we only get here if part of the page has crashed, do a + * forced reload to give us the best chance at recovering. + */ + onClick() { + this.windowObj.location.reload(true); + } + + render() { + const defaultClass = "as-error-fallback"; + let className; + if ("className" in this.props) { + className = `${this.props.className} ${defaultClass}`; + } else { + className = defaultClass; + } + + // href="#" to force normal link styling stuff (eg cursor on hover) + return __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( + "div", + { className: className }, + __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( + "div", + null, + __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_0_react_intl__["FormattedMessage"], { + defaultMessage: "Oops, something went wrong loading this content.", + id: "error_fallback_default_info" }) + ), + __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( + "span", + null, + __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( + "a", + { href: "#", className: "reload-button", onClick: this.onClick }, + __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_0_react_intl__["FormattedMessage"], { + defaultMessage: "Refresh page to try again.", + id: "error_fallback_default_refresh_suggestion" }) + ) + ) + ); + } +} +/* unused harmony export ErrorBoundaryFallback */ + +ErrorBoundaryFallback.defaultProps = { className: "as-error-fallback" }; + +class ErrorBoundary extends __WEBPACK_IMPORTED_MODULE_1_react___default.a.PureComponent { + constructor(props) { + super(props); + this.state = { hasError: false }; + } + + componentDidCatch(error, info) { + this.setState({ hasError: true }); + } + + render() { + if (!this.state.hasError) { + return this.props.children; + } + + return __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(this.props.FallbackComponent, { className: this.props.className }); + } +} +/* harmony export (immutable) */ __webpack_exports__["a"] = ErrorBoundary; + + +ErrorBoundary.defaultProps = { FallbackComponent: ErrorBoundaryFallback }; + +/***/ }), +/* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1068,36 +1176,38 @@ const LinkMenu = Object(external__ReactIntl_["injectIntl"])(LinkMenu__LinkMenu); /***/ }), -/* 7 */ +/* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_content_src_components_ErrorBoundary_ErrorBoundary__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_react__); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + const VISIBLE = "visible"; const VISIBILITY_CHANGE_EVENT = "visibilitychange"; function getFormattedMessage(message) { - return typeof message === "string" ? __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + return typeof message === "string" ? __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "span", null, message - ) : __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], message); + ) : __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], message); } function getCollapsed(props) { return props.prefName in props.Prefs.values ? props.Prefs.values[props.prefName] : false; } -class Info extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { +class Info extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { constructor(props) { super(props); this.onInfoEnter = this.onInfoEnter.bind(this); @@ -1144,40 +1254,40 @@ class Info extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { }; const sectionInfoTitle = intl.formatMessage({ id: "section_info_option" }); - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "span", { className: "section-info-option", onBlur: this.onInfoLeave, onFocus: this.onInfoEnter, onMouseOut: this.onInfoLeave, onMouseOver: this.onInfoEnter }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("img", _extends({ className: "info-option-icon", title: sectionInfoTitle + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("img", _extends({ className: "info-option-icon", title: sectionInfoTitle }, infoOptionIconA11yAttrs)), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "div", { className: "info-option" }, - infoOption.header && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + infoOption.header && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "div", { className: "info-option-header", role: "heading" }, getFormattedMessage(infoOption.header) ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "p", { className: "info-option-body" }, infoOption.body && getFormattedMessage(infoOption.body), - infoOption.link && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + infoOption.link && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "a", { href: infoOption.link.href, target: "_blank", rel: "noopener noreferrer", className: "info-option-link" }, getFormattedMessage(infoOption.link.title || infoOption.link) ) ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "div", { className: "info-option-manage" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "button", { onClick: this.onManageClick }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "settings_pane_header" }) + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "settings_pane_header" }) ) ) ) @@ -1191,7 +1301,7 @@ const InfoIntl = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])( /* unused harmony export InfoIntl */ -class Disclaimer extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { +class Disclaimer extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { constructor(props) { super(props); this.onAcknowledge = this.onAcknowledge.bind(this); @@ -1204,20 +1314,20 @@ class Disclaimer extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureCompo render() { const { disclaimer } = this.props; - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "div", { className: "section-disclaimer" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "div", { className: "section-disclaimer-text" }, getFormattedMessage(disclaimer.text), - disclaimer.link && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + disclaimer.link && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "a", { href: disclaimer.link.href, target: "_blank", rel: "noopener noreferrer" }, getFormattedMessage(disclaimer.link.title || disclaimer.link) ) ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "button", { onClick: this.onAcknowledge }, getFormattedMessage(disclaimer.button) @@ -1232,7 +1342,7 @@ const DisclaimerIntl = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIn /* unused harmony export DisclaimerIntl */ -class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { +class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { constructor(props) { super(props); this.onBodyMount = this.onBodyMount.bind(this); @@ -1296,6 +1406,13 @@ class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_2_react___default.a. } onHeaderClick() { + // If this.sectionBody is unset, it means that we're in some sort of error + // state, probably displaying the error fallback, so we won't be able to + // compute the height, and we don't want to persist the preference. + if (!this.sectionBody) { + return; + } + // Get the current height of the body so max-height transitions can work this.setState({ isAnimating: true, @@ -1314,9 +1431,9 @@ class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_2_react___default.a. renderIcon() { const { icon } = this.props; if (icon && icon.startsWith("moz-extension://")) { - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("span", { className: "icon icon-small-spacer", style: { backgroundImage: `url('${icon}')` } }); + return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("span", { className: "icon icon-small-spacer", style: { backgroundImage: `url('${icon}')` } }); } - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("span", { className: `icon icon-small-spacer icon-${icon || "webextension"}` }); + return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("span", { className: `icon icon-small-spacer icon-${icon || "webextension"}` }); } render() { @@ -1327,34 +1444,38 @@ class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_2_react___default.a. const disclaimerPref = `section.${id}.showDisclaimer`; const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref]; - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "section", { className: `collapsible-section ${this.props.className}${enableAnimation ? " animation-enabled" : ""}${isCollapsed ? " collapsed" : ""}` }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "div", { className: "section-top-bar" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "h3", { className: "section-title" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( "span", { className: "click-target", onClick: isCollapsible && this.onHeaderClick }, this.renderIcon(), this.props.title, - isCollapsible && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("span", { className: `collapsible-arrow icon ${isCollapsed ? "icon-arrowhead-forward" : "icon-arrowhead-down"}` }) + isCollapsible && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("span", { className: `collapsible-arrow icon ${isCollapsed ? "icon-arrowhead-forward" : "icon-arrowhead-down"}` }) ) ), - infoOption && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(InfoIntl, { infoOption: infoOption, dispatch: this.props.dispatch }) + infoOption && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(InfoIntl, { infoOption: infoOption, dispatch: this.props.dispatch }) ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "div", - { - className: `section-body${isAnimating ? " animating" : ""}`, - onTransitionEnd: this.onTransitionEnd, - ref: this.onBodyMount, - style: isAnimating && !isCollapsed ? { maxHeight } : null }, - needsDisclaimer && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(DisclaimerIntl, { disclaimerPref: disclaimerPref, disclaimer: disclaimer, eventSource: eventSource, dispatch: this.props.dispatch }), - this.props.children + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_content_src_components_ErrorBoundary_ErrorBoundary__["a" /* ErrorBoundary */], + { className: "section-body-fallback" }, + __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + "div", + { + className: `section-body${isAnimating ? " animating" : ""}`, + onTransitionEnd: this.onTransitionEnd, + ref: this.onBodyMount, + style: isAnimating && !isCollapsed ? { maxHeight } : null }, + needsDisclaimer && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(DisclaimerIntl, { disclaimerPref: disclaimerPref, disclaimer: disclaimer, eventSource: eventSource, dispatch: this.props.dispatch }), + this.props.children + ) ) ); } @@ -1374,15 +1495,15 @@ _CollapsibleSection.defaultProps = { const CollapsibleSection = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])(_CollapsibleSection); /* harmony export (immutable) */ __webpack_exports__["a"] = CollapsibleSection; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 8 */ +/* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(11); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__); @@ -1551,7 +1672,7 @@ class ComponentPerfTimer extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.C /***/ }), -/* 9 */ +/* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1685,23 +1806,23 @@ _PerfService.prototype = { var perfService = new _PerfService(); /***/ }), -/* 10 */ +/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_content_src_lib_snippets__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_content_src_components_Base_Base__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_lib_detect_user_session_start__ = __webpack_require__(17); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_lib_init_store__ = __webpack_require__(18); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_content_src_lib_snippets__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_content_src_components_Base_Base__ = __webpack_require__(14); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_lib_detect_user_session_start__ = __webpack_require__(22); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_lib_init_store__ = __webpack_require__(23); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(4); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_redux__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom__ = __webpack_require__(20); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom__ = __webpack_require__(25); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_dom__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_common_Reducers_jsm__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_common_Reducers_jsm__ = __webpack_require__(6); @@ -1723,7 +1844,7 @@ if (!global.gActivityStreamPrerenderedState) { store.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].NEW_TAB_STATE_REQUEST })); } -__WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( +__WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.hydrate(__WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( __WEBPACK_IMPORTED_MODULE_5_react_redux__["Provider"], { store: store }, __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2_content_src_components_Base_Base__["a" /* Base */], { @@ -1733,10 +1854,10 @@ __WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.render(__WEBPACK_IMPORTED_MODU ), document.getElementById("root")); Object(__WEBPACK_IMPORTED_MODULE_1_content_src_lib_snippets__["a" /* addSnippetsSubscriber */])(store); -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 11 */ +/* 13 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2110,10 +2231,10 @@ function addSnippetsSubscriber(store) { // These values are returned for testing purposes return snippets; } -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 12 */ +/* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2126,7 +2247,7 @@ var external__ReactIntl_ = __webpack_require__(2); var external__ReactIntl__default = /*#__PURE__*/__webpack_require__.n(external__ReactIntl_); // EXTERNAL MODULE: external "ReactRedux" -var external__ReactRedux_ = __webpack_require__(3); +var external__ReactRedux_ = __webpack_require__(4); var external__ReactRedux__default = /*#__PURE__*/__webpack_require__.n(external__ReactRedux_); // EXTERNAL MODULE: external "React" @@ -2230,6 +2351,9 @@ class ConfirmDialog__ConfirmDialog extends external__React__default.a.PureCompon } const ConfirmDialog = Object(external__ReactRedux_["connect"])(state => state.Dialog)(ConfirmDialog__ConfirmDialog); +// EXTERNAL MODULE: ./system-addon/content-src/components/ErrorBoundary/ErrorBoundary.jsx +var ErrorBoundary = __webpack_require__(7); + // CONCATENATED MODULE: ./system-addon/content-src/components/ManualMigration/ManualMigration.jsx @@ -2574,7 +2698,7 @@ var PrerenderData = new _PrerenderData({ }] }); // EXTERNAL MODULE: ./system-addon/content-src/lib/constants.js -var constants = __webpack_require__(13); +var constants = __webpack_require__(15); // CONCATENATED MODULE: ./system-addon/content-src/components/Search/Search.jsx /* globals ContentSearchUIController */ @@ -2679,735 +2803,11 @@ class Search__Search extends external__React__default.a.PureComponent { const Search = Object(external__ReactRedux_["connect"])()(Object(external__ReactIntl_["injectIntl"])(Search__Search)); // EXTERNAL MODULE: ./system-addon/content-src/components/Sections/Sections.jsx -var Sections = __webpack_require__(14); +var Sections = __webpack_require__(16); -// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSitesConstants.js -const TOP_SITES_SOURCE = "TOP_SITES"; -const TOP_SITES_CONTEXT_MENU_OPTIONS = ["CheckPinTopSite", "EditTopSite", "Separator", "OpenInNewWindow", "OpenInPrivateWindow", "Separator", "BlockUrl", "DeleteUrl"]; -// minimum size necessary to show a rich icon instead of a screenshot -const MIN_RICH_FAVICON_SIZE = 96; -// minimum size necessary to show any icon in the top left corner with a screenshot -const MIN_CORNER_FAVICON_SIZE = 16; -// EXTERNAL MODULE: ./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx -var CollapsibleSection = __webpack_require__(7); +// EXTERNAL MODULE: ./system-addon/content-src/components/TopSites/TopSites.jsx +var TopSites = __webpack_require__(19); -// EXTERNAL MODULE: ./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx -var ComponentPerfTimer = __webpack_require__(8); - -// EXTERNAL MODULE: ./system-addon/common/Reducers.jsm + 1 modules -var Reducers = __webpack_require__(5); - -// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSiteForm.jsx - - - - - -class TopSiteForm_TopSiteForm extends external__React__default.a.PureComponent { - constructor(props) { - super(props); - const { site } = props; - this.state = { - label: site ? site.label || site.hostname : "", - url: site ? site.url : "", - validationError: false - }; - this.onLabelChange = this.onLabelChange.bind(this); - this.onUrlChange = this.onUrlChange.bind(this); - this.onCancelButtonClick = this.onCancelButtonClick.bind(this); - this.onDoneButtonClick = this.onDoneButtonClick.bind(this); - this.onUrlInputMount = this.onUrlInputMount.bind(this); - } - - onLabelChange(event) { - this.resetValidation(); - this.setState({ "label": event.target.value }); - } - - onUrlChange(event) { - this.resetValidation(); - this.setState({ "url": event.target.value }); - } - - onCancelButtonClick(ev) { - ev.preventDefault(); - this.props.onClose(); - } - - onDoneButtonClick(ev) { - ev.preventDefault(); - - if (this.validateForm()) { - const site = { url: this.cleanUrl() }; - const { index } = this.props; - if (this.state.label !== "") { - site.label = this.state.label; - } - - this.props.dispatch(Actions["a" /* actionCreators */].AlsoToMain({ - type: Actions["b" /* actionTypes */].TOP_SITES_PIN, - data: { site, index } - })); - this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ - source: TOP_SITES_SOURCE, - event: "TOP_SITES_EDIT", - action_position: index - })); - - this.props.onClose(); - } - } - - cleanUrl() { - let { url } = this.state; - // If we are missing a protocol, prepend http:// - if (!url.startsWith("http:") && !url.startsWith("https:")) { - url = `http://${url}`; - } - return url; - } - - resetValidation() { - if (this.state.validationError) { - this.setState({ validationError: false }); - } - } - - validateUrl() { - try { - return !!new URL(this.cleanUrl()); - } catch (e) { - return false; - } - } - - validateForm() { - this.resetValidation(); - // Only the URL is required and must be valid. - if (!this.state.url || !this.validateUrl()) { - this.setState({ validationError: true }); - this.inputUrl.focus(); - return false; - } - return true; - } - - onUrlInputMount(input) { - this.inputUrl = input; - } - - render() { - // For UI purposes, editing without an existing link is "add" - const showAsAdd = !this.props.site; - - return external__React__default.a.createElement( - "form", - { className: "topsite-form" }, - external__React__default.a.createElement( - "section", - { className: "edit-topsites-inner-wrapper" }, - external__React__default.a.createElement( - "div", - { className: "form-wrapper" }, - external__React__default.a.createElement( - "h3", - { className: "section-title" }, - external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_header" : "topsites_form_edit_header" }) - ), - external__React__default.a.createElement( - "div", - { className: "field title" }, - external__React__default.a.createElement("input", { - type: "text", - value: this.state.label, - onChange: this.onLabelChange, - placeholder: this.props.intl.formatMessage({ id: "topsites_form_title_placeholder" }) }) - ), - external__React__default.a.createElement( - "div", - { className: `field url${this.state.validationError ? " invalid" : ""}` }, - external__React__default.a.createElement("input", { - type: "text", - ref: this.onUrlInputMount, - value: this.state.url, - onChange: this.onUrlChange, - placeholder: this.props.intl.formatMessage({ id: "topsites_form_url_placeholder" }) }), - this.state.validationError && external__React__default.a.createElement( - "aside", - { className: "error-tooltip" }, - external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "topsites_form_url_validation" }) - ) - ) - ) - ), - external__React__default.a.createElement( - "section", - { className: "actions" }, - external__React__default.a.createElement( - "button", - { className: "cancel", type: "button", onClick: this.onCancelButtonClick }, - external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "topsites_form_cancel_button" }) - ), - external__React__default.a.createElement( - "button", - { className: "done", type: "submit", onClick: this.onDoneButtonClick }, - external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_button" : "topsites_form_save_button" }) - ) - ) - ); - } -} - -TopSiteForm_TopSiteForm.defaultProps = { - TopSite: null, - index: -1 -}; -// EXTERNAL MODULE: ./system-addon/content-src/components/LinkMenu/LinkMenu.jsx + 2 modules -var LinkMenu = __webpack_require__(6); - -// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSite.jsx -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - - - - - - - - -class TopSite_TopSiteLink extends external__React__default.a.PureComponent { - constructor(props) { - super(props); - this.onDragEvent = this.onDragEvent.bind(this); - } - - /* - * Helper to determine whether the drop zone should allow a drop. We only allow - * dropping top sites for now. - */ - _allowDrop(e) { - return e.dataTransfer.types.includes("text/topsite-index"); - } - - onDragEvent(event) { - switch (event.type) { - case "click": - // Stop any link clicks if we started any dragging - if (this.dragged) { - event.preventDefault(); - } - break; - case "dragstart": - this.dragged = true; - event.dataTransfer.effectAllowed = "move"; - event.dataTransfer.setData("text/topsite-index", this.props.index); - event.target.blur(); - this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title); - break; - case "dragend": - this.props.onDragEvent(event); - break; - case "dragenter": - case "dragover": - case "drop": - if (this._allowDrop(event)) { - event.preventDefault(); - this.props.onDragEvent(event, this.props.index); - } - break; - case "mousedown": - // Reset at the first mouse event of a potential drag - this.dragged = false; - break; - } - } - - render() { - const { children, className, isDraggable, link, onClick, title } = this.props; - const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : ""}`; - const { tippyTopIcon, faviconSize } = link; - const [letterFallback] = title; - let imageClassName; - let imageStyle; - let showSmallFavicon = false; - let smallFaviconStyle; - let smallFaviconFallback; - if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) { - // styles and class names for top sites with rich icons - imageClassName = "top-site-icon rich-icon"; - imageStyle = { - backgroundColor: link.backgroundColor, - backgroundImage: `url(${tippyTopIcon || link.favicon})` - }; - } else { - // styles and class names for top sites with screenshot + small icon in top left corner - imageClassName = `screenshot${link.screenshot ? " active" : ""}`; - imageStyle = { backgroundImage: link.screenshot ? `url(${link.screenshot})` : "none" }; - - // only show a favicon in top left if it's greater than 16x16 - if (faviconSize >= MIN_CORNER_FAVICON_SIZE) { - showSmallFavicon = true; - smallFaviconStyle = { backgroundImage: `url(${link.favicon})` }; - } else if (link.screenshot) { - // Don't show a small favicon if there is no screenshot, because that - // would result in two fallback icons - showSmallFavicon = true; - smallFaviconFallback = true; - } - } - let draggableProps = {}; - if (isDraggable) { - draggableProps = { - onClick: this.onDragEvent, - onDragEnd: this.onDragEvent, - onDragStart: this.onDragEvent, - onMouseDown: this.onDragEvent - }; - } - return external__React__default.a.createElement( - "li", - _extends({ className: topSiteOuterClassName, onDrop: this.onDragEvent, onDragOver: this.onDragEvent, onDragEnter: this.onDragEvent, onDragLeave: this.onDragEvent }, draggableProps), - external__React__default.a.createElement( - "div", - { className: "top-site-inner" }, - external__React__default.a.createElement( - "a", - { href: link.url, onClick: onClick }, - external__React__default.a.createElement( - "div", - { className: "tile", "aria-hidden": true, "data-fallback": letterFallback }, - external__React__default.a.createElement("div", { className: imageClassName, style: imageStyle }), - showSmallFavicon && external__React__default.a.createElement("div", { - className: "top-site-icon default-icon", - "data-fallback": smallFaviconFallback && letterFallback, - style: smallFaviconStyle }) - ), - external__React__default.a.createElement( - "div", - { className: `title ${link.isPinned ? "pinned" : ""}` }, - link.isPinned && external__React__default.a.createElement("div", { className: "icon icon-pin-small" }), - external__React__default.a.createElement( - "span", - { dir: "auto" }, - title - ) - ) - ), - children - ) - ); - } -} -TopSite_TopSiteLink.defaultProps = { - title: "", - link: {}, - isDraggable: true -}; - -class TopSite_TopSite extends external__React__default.a.PureComponent { - constructor(props) { - super(props); - this.state = { showContextMenu: false }; - this.onLinkClick = this.onLinkClick.bind(this); - this.onMenuButtonClick = this.onMenuButtonClick.bind(this); - this.onMenuUpdate = this.onMenuUpdate.bind(this); - } - - userEvent(event) { - this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ - event, - source: TOP_SITES_SOURCE, - action_position: this.props.index - })); - } - - onLinkClick(ev) { - this.userEvent("CLICK"); - } - - onMenuButtonClick(event) { - event.preventDefault(); - this.props.onActivate(this.props.index); - this.setState({ showContextMenu: true }); - } - - onMenuUpdate(showContextMenu) { - this.setState({ showContextMenu }); - } - - render() { - const { props } = this; - const { link } = props; - const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index; - const title = link.label || link.hostname; - return external__React__default.a.createElement( - TopSite_TopSiteLink, - _extends({}, props, { onClick: this.onLinkClick, onDragEvent: this.props.onDragEvent, className: isContextMenuOpen ? "active" : "", title: title }), - external__React__default.a.createElement( - "div", - null, - external__React__default.a.createElement( - "button", - { className: "context-menu-button icon", onClick: this.onMenuButtonClick }, - external__React__default.a.createElement( - "span", - { className: "sr-only" }, - external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "context_menu_button_sr", values: { title } }) - ) - ), - external__React__default.a.createElement(LinkMenu["a" /* LinkMenu */], { - dispatch: props.dispatch, - index: props.index, - onUpdate: this.onMenuUpdate, - options: TOP_SITES_CONTEXT_MENU_OPTIONS, - site: link, - source: TOP_SITES_SOURCE, - visible: isContextMenuOpen }) - ) - ); - } -} -TopSite_TopSite.defaultProps = { - link: {}, - onActivate() {} -}; - -class TopSite_TopSitePlaceholder extends external__React__default.a.PureComponent { - constructor(props) { - super(props); - this.onEditButtonClick = this.onEditButtonClick.bind(this); - } - - onEditButtonClick() { - this.props.dispatch({ type: Actions["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: this.props.index } }); - } - - render() { - return external__React__default.a.createElement( - TopSite_TopSiteLink, - _extends({ className: "placeholder", isDraggable: false }, this.props), - external__React__default.a.createElement("button", { className: "context-menu-button edit-button icon", - title: this.props.intl.formatMessage({ id: "edit_topsites_edit_button" }), - onClick: this.onEditButtonClick }) - ); - } -} - -class TopSite__TopSiteList extends external__React__default.a.PureComponent { - static get DEFAULT_STATE() { - return { - activeIndex: null, - draggedIndex: null, - draggedSite: null, - draggedTitle: null, - topSitesPreview: null - }; - } - - constructor(props) { - super(props); - this.state = TopSite__TopSiteList.DEFAULT_STATE; - this.onDragEvent = this.onDragEvent.bind(this); - this.onActivate = this.onActivate.bind(this); - } - - componentWillUpdate(nextProps) { - if (this.state.draggedSite) { - const prevTopSites = this.props.TopSites && this.props.TopSites.rows; - const newTopSites = nextProps.TopSites && nextProps.TopSites.rows; - if (prevTopSites && prevTopSites[this.state.draggedIndex] && prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url && (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) { - // We got the new order from the redux store via props. We can clear state now. - this.setState(TopSite__TopSiteList.DEFAULT_STATE); - } - } - } - - userEvent(event, index) { - this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ - event, - source: TOP_SITES_SOURCE, - action_position: index - })); - } - - onDragEvent(event, index, link, title) { - switch (event.type) { - case "dragstart": - this.dropped = false; - this.setState({ - draggedIndex: index, - draggedSite: link, - draggedTitle: title, - activeIndex: null - }); - this.userEvent("DRAG", index); - break; - case "dragend": - if (!this.dropped) { - // If there was no drop event, reset the state to the default. - this.setState(TopSite__TopSiteList.DEFAULT_STATE); - } - break; - case "dragenter": - if (index === this.state.draggedIndex) { - this.setState({ topSitesPreview: null }); - } else { - this.setState({ topSitesPreview: this._makeTopSitesPreview(index) }); - } - break; - case "drop": - if (index !== this.state.draggedIndex) { - this.dropped = true; - this.props.dispatch(Actions["a" /* actionCreators */].AlsoToMain({ - type: Actions["b" /* actionTypes */].TOP_SITES_INSERT, - data: { site: { url: this.state.draggedSite.url, label: this.state.draggedTitle }, index, draggedFromIndex: this.state.draggedIndex } - })); - this.userEvent("DROP", index); - } - break; - } - } - - _getTopSites() { - // Make a copy of the sites to truncate or extend to desired length - let topSites = this.props.TopSites.rows.slice(); - topSites.length = this.props.TopSitesRows * Reducers["a" /* TOP_SITES_MAX_SITES_PER_ROW */]; - return topSites; - } - - /** - * Make a preview of the topsites that will be the result of dropping the currently - * dragged site at the specified index. - */ - _makeTopSitesPreview(index) { - const topSites = this._getTopSites(); - topSites[this.state.draggedIndex] = null; - const pinnedOnly = topSites.map(site => site && site.isPinned ? site : null); - const unpinned = topSites.filter(site => site && !site.isPinned); - const siteToInsert = Object.assign({}, this.state.draggedSite, { isPinned: true }); - if (!pinnedOnly[index]) { - pinnedOnly[index] = siteToInsert; - } else { - // Find the hole to shift the pinned site(s) towards. We shift towards the - // hole left by the site being dragged. - let holeIndex = index; - const indexStep = index > this.state.draggedIndex ? -1 : 1; - while (pinnedOnly[holeIndex]) { - holeIndex += indexStep; - } - - // Shift towards the hole. - const shiftingStep = index > this.state.draggedIndex ? 1 : -1; - while (holeIndex !== index) { - const nextIndex = holeIndex + shiftingStep; - pinnedOnly[holeIndex] = pinnedOnly[nextIndex]; - holeIndex = nextIndex; - } - pinnedOnly[index] = siteToInsert; - } - - // Fill in the remaining holes with unpinned sites. - const preview = pinnedOnly; - for (let i = 0; i < preview.length; i++) { - if (!preview[i]) { - preview[i] = unpinned.shift() || null; - } - } - - return preview; - } - - onActivate(index) { - this.setState({ activeIndex: index }); - } - - render() { - const { props } = this; - const topSites = this.state.topSitesPreview || this._getTopSites(); - const topSitesUI = []; - const commonProps = { - onDragEvent: this.onDragEvent, - dispatch: props.dispatch, - intl: props.intl - }; - // We assign a key to each placeholder slot. We need it to be independent - // of the slot index (i below) so that the keys used stay the same during - // drag and drop reordering and the underlying DOM nodes are reused. - // This mostly (only?) affects linux so be sure to test on linux before changing. - let holeIndex = 0; - for (let i = 0, l = topSites.length; i < l; i++) { - const link = topSites[i]; - const slotProps = { - key: link ? link.url : holeIndex++, - index: i - }; - topSitesUI.push(!link ? external__React__default.a.createElement(TopSite_TopSitePlaceholder, _extends({}, slotProps, commonProps)) : external__React__default.a.createElement(TopSite_TopSite, _extends({ - link: link, - activeIndex: this.state.activeIndex, - onActivate: this.onActivate - }, slotProps, commonProps))); - } - return external__React__default.a.createElement( - "ul", - { className: `top-sites-list${this.state.draggedSite ? " dnd-active" : ""}` }, - topSitesUI - ); - } -} - -const TopSiteList = Object(external__ReactIntl_["injectIntl"])(TopSite__TopSiteList); -// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSites.jsx - - - - - - - - - - - -/** - * Iterates through TopSites and counts types of images. - * @param acc Accumulator for reducer. - * @param topsite Entry in TopSites. - */ -function countTopSitesIconsTypes(topSites) { - const countTopSitesTypes = (acc, link) => { - if (link.tippyTopIcon || link.faviconRef === "tippytop") { - acc.tippytop++; - } else if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) { - acc.rich_icon++; - } else if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) { - acc.screenshot_with_icon++; - } else if (link.screenshot) { - acc.screenshot++; - } else { - acc.no_image++; - } - - return acc; - }; - - return topSites.reduce(countTopSitesTypes, { - "screenshot_with_icon": 0, - "screenshot": 0, - "tippytop": 0, - "rich_icon": 0, - "no_image": 0 - }); -} - -class TopSites__TopSites extends external__React__default.a.PureComponent { - constructor(props) { - super(props); - this.onAddButtonClick = this.onAddButtonClick.bind(this); - this.onFormClose = this.onFormClose.bind(this); - } - - /** - * Dispatch session statistics about the quality of TopSites icons and pinned count. - */ - _dispatchTopSitesStats() { - const topSites = this._getTopSites(); - const topSitesIconsStats = countTopSitesIconsTypes(topSites); - const topSitesPinned = topSites.filter(site => !!site.isPinned).length; - // Dispatch telemetry event with the count of TopSites images types. - this.props.dispatch(Actions["a" /* actionCreators */].AlsoToMain({ - type: Actions["b" /* actionTypes */].SAVE_SESSION_PERF_DATA, - data: { topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned } - })); - } - - /** - * Return the TopSites to display based on prefs. - */ - _getTopSites() { - return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * Reducers["a" /* TOP_SITES_MAX_SITES_PER_ROW */]); - } - - componentDidUpdate() { - this._dispatchTopSitesStats(); - } - - componentDidMount() { - this._dispatchTopSitesStats(); - } - - onAddButtonClick() { - this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ - source: TOP_SITES_SOURCE, - event: "TOP_SITES_ADD_FORM_OPEN" - })); - // Negative index will prepend the TopSite at the beginning of the list - this.props.dispatch({ type: Actions["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: -1 } }); - } - - onFormClose() { - this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ - source: TOP_SITES_SOURCE, - event: "TOP_SITES_EDIT_CLOSE" - })); - this.props.dispatch({ type: Actions["b" /* actionTypes */].TOP_SITES_CANCEL_EDIT }); - } - - render() { - const { props } = this; - const infoOption = { - header: { id: "settings_pane_topsites_header" }, - body: { id: "settings_pane_topsites_body" } - }; - const { editForm } = props.TopSites; - - return external__React__default.a.createElement( - ComponentPerfTimer["a" /* ComponentPerfTimer */], - { id: "topsites", initialized: props.TopSites.initialized, dispatch: props.dispatch }, - external__React__default.a.createElement( - CollapsibleSection["a" /* CollapsibleSection */], - { className: "top-sites", icon: "topsites", title: external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "header_top_sites" }), infoOption: infoOption, prefName: "collapseTopSites", Prefs: props.Prefs, dispatch: props.dispatch }, - external__React__default.a.createElement(TopSiteList, { TopSites: props.TopSites, TopSitesRows: props.TopSitesRows, dispatch: props.dispatch, intl: props.intl }), - external__React__default.a.createElement( - "div", - { className: "edit-topsites-wrapper" }, - external__React__default.a.createElement( - "div", - { className: "add-topsites-button" }, - external__React__default.a.createElement( - "button", - { - className: "add", - title: this.props.intl.formatMessage({ id: "edit_topsites_add_button_tooltip" }), - onClick: this.onAddButtonClick }, - external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "edit_topsites_add_button" }) - ) - ), - editForm && external__React__default.a.createElement( - "div", - { className: "edit-topsites" }, - external__React__default.a.createElement("div", { className: "modal-overlay", onClick: this.onFormClose }), - external__React__default.a.createElement( - "div", - { className: "modal" }, - external__React__default.a.createElement(TopSiteForm_TopSiteForm, { - site: props.TopSites.rows[editForm.index], - index: editForm.index, - onClose: this.onFormClose, - dispatch: this.props.dispatch, - intl: this.props.intl }) - ) - ) - ) - ) - ); - } -} - -const TopSites = Object(external__ReactRedux_["connect"])(state => ({ - TopSites: state.TopSites, - Prefs: state.Prefs, - TopSitesRows: state.Prefs.values.topSitesRows -}))(Object(external__ReactIntl_["injectIntl"])(TopSites__TopSites)); // CONCATENATED MODULE: ./system-addon/content-src/components/Base/Base.jsx @@ -3421,6 +2821,7 @@ const TopSites = Object(external__ReactRedux_["connect"])(state => ({ + // Add the locale data for pluralization and relative-time formatting for now, // this just uses english locale data. We can make this more sophisticated if // more features are needed. @@ -3463,11 +2864,6 @@ class Base__Base extends external__React__default.a.PureComponent { const { props } = this; const { App, locale, strings } = props; const { initialized } = App; - const prefs = props.Prefs.values; - - const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]); - - const outerClassName = `outer-wrapper${shouldBeFixedToTop ? " fixed-to-top" : ""}`; if (!props.isPrerendered && !initialized) { return null; @@ -3477,22 +2873,9 @@ class Base__Base extends external__React__default.a.PureComponent { external__ReactIntl_["IntlProvider"], { locale: locale, messages: strings }, external__React__default.a.createElement( - "div", - { className: outerClassName }, - external__React__default.a.createElement( - "main", - null, - prefs.showSearch && external__React__default.a.createElement(Search, null), - external__React__default.a.createElement( - "div", - { className: `body-wrapper${initialized ? " on" : ""}` }, - !prefs.migrationExpired && external__React__default.a.createElement(ManualMigration, null), - prefs.showTopSites && external__React__default.a.createElement(TopSites, null), - external__React__default.a.createElement(Sections["a" /* Sections */], null) - ), - external__React__default.a.createElement(ConfirmDialog, null) - ), - initialized && external__React__default.a.createElement(PreferencesPane, null) + ErrorBoundary["a" /* ErrorBoundary */], + { className: "base-content-fallback" }, + external__React__default.a.createElement(Base_BaseContent, this.props) ) ); } @@ -3500,36 +2883,84 @@ class Base__Base extends external__React__default.a.PureComponent { /* unused harmony export _Base */ +class Base_BaseContent extends external__React__default.a.PureComponent { + render() { + const { props } = this; + const { App } = props; + const { initialized } = App; + const prefs = props.Prefs.values; + + const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]); + + const outerClassName = `outer-wrapper${shouldBeFixedToTop ? " fixed-to-top" : ""} ${prefs.enableWideLayout ? "wide-layout-enabled" : "wide-layout-disabled"}`; + + return external__React__default.a.createElement( + "div", + { className: outerClassName }, + external__React__default.a.createElement( + "main", + null, + prefs.showSearch && external__React__default.a.createElement( + ErrorBoundary["a" /* ErrorBoundary */], + null, + external__React__default.a.createElement(Search, null) + ), + external__React__default.a.createElement( + "div", + { className: `body-wrapper${initialized ? " on" : ""}` }, + !prefs.migrationExpired && external__React__default.a.createElement(ManualMigration, null), + prefs.showTopSites && external__React__default.a.createElement(TopSites["a" /* TopSites */], null), + external__React__default.a.createElement(Sections["a" /* Sections */], null) + ), + external__React__default.a.createElement(ConfirmDialog, null) + ), + initialized && external__React__default.a.createElement( + "div", + { className: "prefs-pane" }, + external__React__default.a.createElement( + ErrorBoundary["a" /* ErrorBoundary */], + { className: "sidebar" }, + " ", + external__React__default.a.createElement(PreferencesPane, null), + " " + ) + ) + ); + } +} +/* unused harmony export BaseContent */ + + const Base = Object(external__ReactRedux_["connect"])(state => ({ App: state.App, Prefs: state.Prefs }))(Base__Base); /* harmony export (immutable) */ __webpack_exports__["a"] = Base; /***/ }), -/* 13 */ +/* 15 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {const IS_NEWTAB = global.document && global.document.documentURI === "about:newtab"; /* harmony export (immutable) */ __webpack_exports__["a"] = IS_NEWTAB; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 14 */ +/* 16 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_content_src_components_Card_Card__ = __webpack_require__(15); +/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_content_src_components_Card_Card__ = __webpack_require__(17); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(4); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_redux__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_content_src_components_Topics_Topics__ = __webpack_require__(16); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_content_src_components_Topics_Topics__ = __webpack_require__(18); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -3743,10 +3174,10 @@ class _Sections extends __WEBPACK_IMPORTED_MODULE_6_react___default.a.PureCompon const Sections = Object(__WEBPACK_IMPORTED_MODULE_5_react_redux__["connect"])(state => ({ Sections: state.Sections, Prefs: state.Prefs }))(_Sections); /* harmony export (immutable) */ __webpack_exports__["a"] = Sections; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 15 */ +/* 17 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3778,7 +3209,7 @@ var external__ReactIntl_ = __webpack_require__(2); var external__ReactIntl__default = /*#__PURE__*/__webpack_require__.n(external__ReactIntl_); // EXTERNAL MODULE: ./system-addon/content-src/components/LinkMenu/LinkMenu.jsx + 2 modules -var LinkMenu = __webpack_require__(6); +var LinkMenu = __webpack_require__(8); // EXTERNAL MODULE: external "React" var external__React_ = __webpack_require__(1); @@ -3919,7 +3350,7 @@ class Card_Card extends external__React__default.a.PureComponent { { className: `card-outer${isContextMenuOpen ? " active" : ""}${props.placeholder ? " placeholder" : ""}` }, external__React__default.a.createElement( "a", - { href: link.url, onClick: !props.placeholder && this.onLinkClick }, + { href: link.url, onClick: !props.placeholder ? this.onLinkClick : undefined }, external__React__default.a.createElement( "div", { className: "card" }, @@ -4000,7 +3431,7 @@ const PlaceholderCard = () => external__React__default.a.createElement(Card_Card /***/ }), -/* 16 */ +/* 18 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -4056,12 +3487,793 @@ class Topics extends __WEBPACK_IMPORTED_MODULE_1_react___default.a.PureComponent /***/ }), -/* 17 */ +/* 19 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__ = __webpack_require__(9); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__ = __webpack_require__(10); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_redux__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_common_Reducers_jsm__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__TopSiteForm__ = __webpack_require__(20); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__TopSite__ = __webpack_require__(21); + + + + + + + + + + + +/** + * Iterates through TopSites and counts types of images. + * @param acc Accumulator for reducer. + * @param topsite Entry in TopSites. + */ +function countTopSitesIconsTypes(topSites) { + const countTopSitesTypes = (acc, link) => { + if (link.tippyTopIcon || link.faviconRef === "tippytop") { + acc.tippytop++; + } else if (link.faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["b" /* MIN_RICH_FAVICON_SIZE */]) { + acc.rich_icon++; + } else if (link.screenshot && link.faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["a" /* MIN_CORNER_FAVICON_SIZE */]) { + acc.screenshot_with_icon++; + } else if (link.screenshot) { + acc.screenshot++; + } else { + acc.no_image++; + } + + return acc; + }; + + return topSites.reduce(countTopSitesTypes, { + "screenshot_with_icon": 0, + "screenshot": 0, + "tippytop": 0, + "rich_icon": 0, + "no_image": 0 + }); +} + +class _TopSites extends __WEBPACK_IMPORTED_MODULE_6_react___default.a.PureComponent { + constructor(props) { + super(props); + this.onAddButtonClick = this.onAddButtonClick.bind(this); + this.onFormClose = this.onFormClose.bind(this); + } + + /** + * Dispatch session statistics about the quality of TopSites icons and pinned count. + */ + _dispatchTopSitesStats() { + const topSites = this._getVisibleTopSites(); + const topSitesIconsStats = countTopSitesIconsTypes(topSites); + const topSitesPinned = topSites.filter(site => !!site.isPinned).length; + // Dispatch telemetry event with the count of TopSites images types. + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ + type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].SAVE_SESSION_PERF_DATA, + data: { topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned } + })); + } + + /** + * Return the TopSites that are visible based on prefs and window width. + */ + _getVisibleTopSites() { + // We hide 2 sites per row when not in the wide layout. + let sitesPerRow = __WEBPACK_IMPORTED_MODULE_7_common_Reducers_jsm__["a" /* TOP_SITES_MAX_SITES_PER_ROW */]; + // $break-point-widest = 1072px (from _variables.scss) + if (!global.matchMedia(`(min-width: 1072px)`).matches) { + sitesPerRow -= 2; + } + return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow); + } + + componentDidUpdate() { + this._dispatchTopSitesStats(); + } + + componentDidMount() { + this._dispatchTopSitesStats(); + } + + onAddButtonClick() { + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ + source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], + event: "TOP_SITES_ADD_FORM_OPEN" + })); + // Negative index will prepend the TopSite at the beginning of the list + this.props.dispatch({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: -1 } }); + } + + onFormClose() { + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ + source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], + event: "TOP_SITES_EDIT_CLOSE" + })); + this.props.dispatch({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_CANCEL_EDIT }); + } + + render() { + const { props } = this; + const infoOption = { + header: { id: "settings_pane_topsites_header" }, + body: { id: "settings_pane_topsites_body" } + }; + const { editForm } = props.TopSites; + + return __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__["a" /* ComponentPerfTimer */], + { id: "topsites", initialized: props.TopSites.initialized, dispatch: props.dispatch }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__["a" /* CollapsibleSection */], + { className: "top-sites", icon: "topsites", title: __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "header_top_sites" }), infoOption: infoOption, prefName: "collapseTopSites", Prefs: props.Prefs, dispatch: props.dispatch }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_9__TopSite__["a" /* TopSiteList */], { TopSites: props.TopSites, TopSitesRows: props.TopSitesRows, dispatch: props.dispatch, intl: props.intl }), + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + "div", + { className: "edit-topsites-wrapper" }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + "div", + { className: "add-topsites-button" }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + "button", + { + className: "add", + title: this.props.intl.formatMessage({ id: "edit_topsites_add_button_tooltip" }), + onClick: this.onAddButtonClick }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "edit_topsites_add_button" }) + ) + ), + editForm && __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + "div", + { className: "edit-topsites" }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement("div", { className: "modal-overlay", onClick: this.onFormClose }), + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( + "div", + { className: "modal" }, + __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_8__TopSiteForm__["a" /* TopSiteForm */], { + site: props.TopSites.rows[editForm.index], + index: editForm.index, + onClose: this.onFormClose, + dispatch: this.props.dispatch, + intl: this.props.intl }) + ) + ) + ) + ) + ); + } +} +/* unused harmony export _TopSites */ + + +const TopSites = Object(__WEBPACK_IMPORTED_MODULE_5_react_redux__["connect"])(state => ({ + TopSites: state.TopSites, + Prefs: state.Prefs, + TopSitesRows: state.Prefs.values.topSitesRows +}))(Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])(_TopSites)); +/* harmony export (immutable) */ __webpack_exports__["a"] = TopSites; + +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) + +/***/ }), +/* 20 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__TopSitesConstants__ = __webpack_require__(5); + + + + + +class TopSiteForm extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { + constructor(props) { + super(props); + const { site } = props; + this.state = { + label: site ? site.label || site.hostname : "", + url: site ? site.url : "", + validationError: false + }; + this.onLabelChange = this.onLabelChange.bind(this); + this.onUrlChange = this.onUrlChange.bind(this); + this.onCancelButtonClick = this.onCancelButtonClick.bind(this); + this.onDoneButtonClick = this.onDoneButtonClick.bind(this); + this.onUrlInputMount = this.onUrlInputMount.bind(this); + } + + onLabelChange(event) { + this.resetValidation(); + this.setState({ "label": event.target.value }); + } + + onUrlChange(event) { + this.resetValidation(); + this.setState({ "url": event.target.value }); + } + + onCancelButtonClick(ev) { + ev.preventDefault(); + this.props.onClose(); + } + + onDoneButtonClick(ev) { + ev.preventDefault(); + + if (this.validateForm()) { + const site = { url: this.cleanUrl() }; + const { index } = this.props; + if (this.state.label !== "") { + site.label = this.state.label; + } + + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ + type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_PIN, + data: { site, index } + })); + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ + source: __WEBPACK_IMPORTED_MODULE_3__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], + event: "TOP_SITES_EDIT", + action_position: index + })); + + this.props.onClose(); + } + } + + cleanUrl() { + let { url } = this.state; + // If we are missing a protocol, prepend http:// + if (!url.startsWith("http:") && !url.startsWith("https:")) { + url = `http://${url}`; + } + return url; + } + + resetValidation() { + if (this.state.validationError) { + this.setState({ validationError: false }); + } + } + + validateUrl() { + try { + return !!new URL(this.cleanUrl()); + } catch (e) { + return false; + } + } + + validateForm() { + this.resetValidation(); + // Only the URL is required and must be valid. + if (!this.state.url || !this.validateUrl()) { + this.setState({ validationError: true }); + this.inputUrl.focus(); + return false; + } + return true; + } + + onUrlInputMount(input) { + this.inputUrl = input; + } + + render() { + // For UI purposes, editing without an existing link is "add" + const showAsAdd = !this.props.site; + + return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "form", + { className: "topsite-form" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "section", + { className: "edit-topsites-inner-wrapper" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "div", + { className: "form-wrapper" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "h3", + { className: "section-title" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_header" : "topsites_form_edit_header" }) + ), + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "div", + { className: "field title" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("input", { + type: "text", + value: this.state.label, + onChange: this.onLabelChange, + placeholder: this.props.intl.formatMessage({ id: "topsites_form_title_placeholder" }) }) + ), + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "div", + { className: `field url${this.state.validationError ? " invalid" : ""}` }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("input", { + type: "text", + ref: this.onUrlInputMount, + value: this.state.url, + onChange: this.onUrlChange, + placeholder: this.props.intl.formatMessage({ id: "topsites_form_url_placeholder" }) }), + this.state.validationError && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "aside", + { className: "error-tooltip" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "topsites_form_url_validation" }) + ) + ) + ) + ), + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "section", + { className: "actions" }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "button", + { className: "cancel", type: "button", onClick: this.onCancelButtonClick }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "topsites_form_cancel_button" }) + ), + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "button", + { className: "done", type: "submit", onClick: this.onDoneButtonClick }, + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_button" : "topsites_form_save_button" }) + ) + ) + ); + } +} +/* harmony export (immutable) */ __webpack_exports__["a"] = TopSiteForm; + + +TopSiteForm.defaultProps = { + TopSite: null, + index: -1 +}; + +/***/ }), +/* 21 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_LinkMenu_LinkMenu__ = __webpack_require__(8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_common_Reducers_jsm__ = __webpack_require__(6); +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + + + + + + + + +class TopSiteLink extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { + constructor(props) { + super(props); + this.onDragEvent = this.onDragEvent.bind(this); + } + + /* + * Helper to determine whether the drop zone should allow a drop. We only allow + * dropping top sites for now. + */ + _allowDrop(e) { + return e.dataTransfer.types.includes("text/topsite-index"); + } + + onDragEvent(event) { + switch (event.type) { + case "click": + // Stop any link clicks if we started any dragging + if (this.dragged) { + event.preventDefault(); + } + break; + case "dragstart": + this.dragged = true; + event.dataTransfer.effectAllowed = "move"; + event.dataTransfer.setData("text/topsite-index", this.props.index); + event.target.blur(); + this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title); + break; + case "dragend": + this.props.onDragEvent(event); + break; + case "dragenter": + case "dragover": + case "drop": + if (this._allowDrop(event)) { + event.preventDefault(); + this.props.onDragEvent(event, this.props.index); + } + break; + case "mousedown": + // Reset at the first mouse event of a potential drag + this.dragged = false; + break; + } + } + + render() { + const { children, className, isDraggable, link, onClick, title } = this.props; + const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : ""}${link.isDragged ? " dragged" : ""}`; + const { tippyTopIcon, faviconSize } = link; + const [letterFallback] = title; + let imageClassName; + let imageStyle; + let showSmallFavicon = false; + let smallFaviconStyle; + let smallFaviconFallback; + if (tippyTopIcon || faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["b" /* MIN_RICH_FAVICON_SIZE */]) { + // styles and class names for top sites with rich icons + imageClassName = "top-site-icon rich-icon"; + imageStyle = { + backgroundColor: link.backgroundColor, + backgroundImage: `url(${tippyTopIcon || link.favicon})` + }; + } else { + // styles and class names for top sites with screenshot + small icon in top left corner + imageClassName = `screenshot${link.screenshot ? " active" : ""}`; + imageStyle = { backgroundImage: link.screenshot ? `url(${link.screenshot})` : "none" }; + + // only show a favicon in top left if it's greater than 16x16 + if (faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["a" /* MIN_CORNER_FAVICON_SIZE */]) { + showSmallFavicon = true; + smallFaviconStyle = { backgroundImage: `url(${link.favicon})` }; + } else if (link.screenshot) { + // Don't show a small favicon if there is no screenshot, because that + // would result in two fallback icons + showSmallFavicon = true; + smallFaviconFallback = true; + } + } + let draggableProps = {}; + if (isDraggable) { + draggableProps = { + onClick: this.onDragEvent, + onDragEnd: this.onDragEvent, + onDragStart: this.onDragEvent, + onMouseDown: this.onDragEvent + }; + } + return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "li", + _extends({ className: topSiteOuterClassName, onDrop: this.onDragEvent, onDragOver: this.onDragEvent, onDragEnter: this.onDragEvent, onDragLeave: this.onDragEvent }, draggableProps), + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "div", + { className: "top-site-inner" }, + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "a", + { href: link.url, onClick: onClick }, + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "div", + { className: "tile", "aria-hidden": true, "data-fallback": letterFallback }, + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("div", { className: imageClassName, style: imageStyle }), + showSmallFavicon && __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("div", { + className: "top-site-icon default-icon", + "data-fallback": smallFaviconFallback && letterFallback, + style: smallFaviconStyle }) + ), + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "div", + { className: `title ${link.isPinned ? "pinned" : ""}` }, + link.isPinned && __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("div", { className: "icon icon-pin-small" }), + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "span", + { dir: "auto" }, + title + ) + ) + ), + children + ) + ); + } +} +/* unused harmony export TopSiteLink */ + +TopSiteLink.defaultProps = { + title: "", + link: {}, + isDraggable: true +}; + +class TopSite extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { + constructor(props) { + super(props); + this.state = { showContextMenu: false }; + this.onLinkClick = this.onLinkClick.bind(this); + this.onMenuButtonClick = this.onMenuButtonClick.bind(this); + this.onMenuUpdate = this.onMenuUpdate.bind(this); + } + + userEvent(event) { + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ + event, + source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], + action_position: this.props.index + })); + } + + onLinkClick(ev) { + this.userEvent("CLICK"); + } + + onMenuButtonClick(event) { + event.preventDefault(); + this.props.onActivate(this.props.index); + this.setState({ showContextMenu: true }); + } + + onMenuUpdate(showContextMenu) { + this.setState({ showContextMenu }); + } + + render() { + const { props } = this; + const { link } = props; + const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index; + const title = link.label || link.hostname; + return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + TopSiteLink, + _extends({}, props, { onClick: this.onLinkClick, onDragEvent: this.props.onDragEvent, className: `${props.className || ""}${isContextMenuOpen ? " active" : ""}`, title: title }), + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "div", + null, + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "button", + { className: "context-menu-button icon", onClick: this.onMenuButtonClick }, + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "span", + { className: "sr-only" }, + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "context_menu_button_sr", values: { title } }) + ) + ), + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_3_content_src_components_LinkMenu_LinkMenu__["a" /* LinkMenu */], { + dispatch: props.dispatch, + index: props.index, + onUpdate: this.onMenuUpdate, + options: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["c" /* TOP_SITES_CONTEXT_MENU_OPTIONS */], + site: link, + source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], + visible: isContextMenuOpen }) + ) + ); + } +} +/* unused harmony export TopSite */ + +TopSite.defaultProps = { + link: {}, + onActivate() {} +}; + +class TopSitePlaceholder extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { + constructor(props) { + super(props); + this.onEditButtonClick = this.onEditButtonClick.bind(this); + } + + onEditButtonClick() { + this.props.dispatch({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: this.props.index } }); + } + + render() { + return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + TopSiteLink, + _extends({}, this.props, { className: `placeholder ${this.props.className || ""}`, isDraggable: false }), + __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("button", { className: "context-menu-button edit-button icon", + title: this.props.intl.formatMessage({ id: "edit_topsites_edit_button" }), + onClick: this.onEditButtonClick }) + ); + } +} +/* unused harmony export TopSitePlaceholder */ + + +class _TopSiteList extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { + static get DEFAULT_STATE() { + return { + activeIndex: null, + draggedIndex: null, + draggedSite: null, + draggedTitle: null, + topSitesPreview: null + }; + } + + constructor(props) { + super(props); + this.state = _TopSiteList.DEFAULT_STATE; + this.onDragEvent = this.onDragEvent.bind(this); + this.onActivate = this.onActivate.bind(this); + } + + componentWillReceiveProps(nextProps) { + if (this.state.draggedSite) { + const prevTopSites = this.props.TopSites && this.props.TopSites.rows; + const newTopSites = nextProps.TopSites && nextProps.TopSites.rows; + if (prevTopSites && prevTopSites[this.state.draggedIndex] && prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url && (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) { + // We got the new order from the redux store via props. We can clear state now. + this.setState(_TopSiteList.DEFAULT_STATE); + } + } + } + + userEvent(event, index) { + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ + event, + source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], + action_position: index + })); + } + + onDragEvent(event, index, link, title) { + switch (event.type) { + case "dragstart": + this.dropped = false; + this.setState({ + draggedIndex: index, + draggedSite: link, + draggedTitle: title, + activeIndex: null + }); + this.userEvent("DRAG", index); + break; + case "dragend": + if (!this.dropped) { + // If there was no drop event, reset the state to the default. + this.setState(_TopSiteList.DEFAULT_STATE); + } + break; + case "dragenter": + if (index === this.state.draggedIndex) { + this.setState({ topSitesPreview: null }); + } else { + this.setState({ topSitesPreview: this._makeTopSitesPreview(index) }); + } + break; + case "drop": + if (index !== this.state.draggedIndex) { + this.dropped = true; + this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ + type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_INSERT, + data: { site: { url: this.state.draggedSite.url, label: this.state.draggedTitle }, index, draggedFromIndex: this.state.draggedIndex } + })); + this.userEvent("DROP", index); + } + break; + } + } + + _getTopSites() { + // Make a copy of the sites to truncate or extend to desired length + let topSites = this.props.TopSites.rows.slice(); + topSites.length = this.props.TopSitesRows * __WEBPACK_IMPORTED_MODULE_5_common_Reducers_jsm__["a" /* TOP_SITES_MAX_SITES_PER_ROW */]; + return topSites; + } + + /** + * Make a preview of the topsites that will be the result of dropping the currently + * dragged site at the specified index. + */ + _makeTopSitesPreview(index) { + const topSites = this._getTopSites(); + topSites[this.state.draggedIndex] = null; + const pinnedOnly = topSites.map(site => site && site.isPinned ? site : null); + const unpinned = topSites.filter(site => site && !site.isPinned); + const siteToInsert = Object.assign({}, this.state.draggedSite, { isPinned: true, isDragged: true }); + if (!pinnedOnly[index]) { + pinnedOnly[index] = siteToInsert; + } else { + // Find the hole to shift the pinned site(s) towards. We shift towards the + // hole left by the site being dragged. + let holeIndex = index; + const indexStep = index > this.state.draggedIndex ? -1 : 1; + while (pinnedOnly[holeIndex]) { + holeIndex += indexStep; + } + + // Shift towards the hole. + const shiftingStep = index > this.state.draggedIndex ? 1 : -1; + while (holeIndex !== index) { + const nextIndex = holeIndex + shiftingStep; + pinnedOnly[holeIndex] = pinnedOnly[nextIndex]; + holeIndex = nextIndex; + } + pinnedOnly[index] = siteToInsert; + } + + // Fill in the remaining holes with unpinned sites. + const preview = pinnedOnly; + for (let i = 0; i < preview.length; i++) { + if (!preview[i]) { + preview[i] = unpinned.shift() || null; + } + } + + return preview; + } + + onActivate(index) { + this.setState({ activeIndex: index }); + } + + render() { + const { props } = this; + const topSites = this.state.topSitesPreview || this._getTopSites(); + const topSitesUI = []; + const commonProps = { + onDragEvent: this.onDragEvent, + dispatch: props.dispatch, + intl: props.intl + }; + // We assign a key to each placeholder slot. We need it to be independent + // of the slot index (i below) so that the keys used stay the same during + // drag and drop reordering and the underlying DOM nodes are reused. + // This mostly (only?) affects linux so be sure to test on linux before changing. + let holeIndex = 0; + + // On narrow viewports, we only show 6 sites per row. We'll mark the rest as + // .hide-for-narrow to hide in CSS via @media query. + const maxNarrowVisibleIndex = props.TopSitesRows * 6; + + for (let i = 0, l = topSites.length; i < l; i++) { + const link = topSites[i]; + const slotProps = { + key: link ? link.url : holeIndex++, + index: i + }; + if (i >= maxNarrowVisibleIndex) { + slotProps.className = "hide-for-narrow"; + } + topSitesUI.push(!link ? __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(TopSitePlaceholder, _extends({}, slotProps, commonProps)) : __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(TopSite, _extends({ + link: link, + activeIndex: this.state.activeIndex, + onActivate: this.onActivate + }, slotProps, commonProps))); + } + return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( + "ul", + { className: `top-sites-list${this.state.draggedSite ? " dnd-active" : ""}` }, + topSitesUI + ); + } +} +/* unused harmony export _TopSiteList */ + + +const TopSiteList = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])(_TopSiteList); +/* harmony export (immutable) */ __webpack_exports__["a"] = TopSiteList; + + +/***/ }), +/* 22 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(11); @@ -4128,16 +4340,16 @@ class DetectUserSessionStart { } /* harmony export (immutable) */ __webpack_exports__["a"] = DetectUserSessionStart; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 18 */ +/* 23 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (immutable) */ __webpack_exports__["a"] = initStore; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_redux__ = __webpack_require__(19); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_redux__ = __webpack_require__(24); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_redux__); /* eslint-env mozilla/frame-script */ @@ -4286,19 +4498,20 @@ function initStore(reducers, initialState) { return store; } -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) /***/ }), -/* 19 */ +/* 24 */ /***/ (function(module, exports) { module.exports = Redux; /***/ }), -/* 20 */ +/* 25 */ /***/ (function(module, exports) { module.exports = ReactDOM; /***/ }) -/******/ ]); \ No newline at end of file +/******/ ]); +//# sourceMappingURL=activity-stream.bundle.js.map \ No newline at end of file diff --git a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map new file mode 100644 index 000000000000..1e75cc550272 --- /dev/null +++ b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap c8b6b3c95425ced9cdc8","webpack:///./system-addon/common/Actions.jsm","webpack:///external \"React\"","webpack:///external \"ReactIntl\"","webpack:///(webpack)/buildin/global.js","webpack:///external \"ReactRedux\"","webpack:///./system-addon/content-src/components/TopSites/TopSitesConstants.js","webpack:///./system-addon/common/Dedupe.jsm","webpack:///./system-addon/common/Reducers.jsm","webpack:///./system-addon/content-src/components/ErrorBoundary/ErrorBoundary.jsx","webpack:///./system-addon/content-src/components/ContextMenu/ContextMenu.jsx","webpack:///./system-addon/content-src/lib/link-menu-options.js","webpack:///./system-addon/content-src/components/LinkMenu/LinkMenu.jsx","webpack:///./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx","webpack:///./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","webpack:///./system-addon/common/PerfService.jsm","webpack:///./system-addon/content-src/activity-stream.jsx","webpack:///./system-addon/content-src/lib/snippets.js","webpack:///./system-addon/content-src/components/ConfirmDialog/ConfirmDialog.jsx","webpack:///./system-addon/content-src/components/ManualMigration/ManualMigration.jsx","webpack:///./system-addon/content-src/components/PreferencesPane/PreferencesPane.jsx","webpack:///./system-addon/common/PrerenderData.jsm","webpack:///./system-addon/content-src/components/Search/Search.jsx","webpack:///./system-addon/content-src/components/Base/Base.jsx","webpack:///./system-addon/content-src/lib/constants.js","webpack:///./system-addon/content-src/components/Sections/Sections.jsx","webpack:///./system-addon/content-src/components/Card/types.js","webpack:///./system-addon/content-src/components/Card/Card.jsx","webpack:///./system-addon/content-src/components/Topics/Topics.jsx","webpack:///./system-addon/content-src/components/TopSites/TopSites.jsx","webpack:///./system-addon/content-src/components/TopSites/TopSiteForm.jsx","webpack:///./system-addon/content-src/components/TopSites/TopSite.jsx","webpack:///./system-addon/content-src/lib/detect-user-session-start.js","webpack:///./system-addon/content-src/lib/init-store.js","webpack:///external \"Redux\"","webpack:///external \"ReactDOM\""],"names":["globalImportContext","Window","BACKGROUND_PROCESS","UI_CODE","actionTypes","type","_RouteMessage","action","options","meta","Object","assign","from","to","Error","forEach","o","AlsoToMain","fromTarget","skipLocal","CONTENT_MESSAGE_TYPE","MAIN_MESSAGE_TYPE","OnlyToMain","BroadcastToContent","AlsoToOneContent","target","skipMain","toTarget","OnlyToOneContent","AlsoToPreloaded","PRELOAD_MESSAGE_TYPE","UserEvent","data","TELEMETRY_USER_EVENT","UndesiredEvent","importContext","TELEMETRY_UNDESIRED_EVENT","PerfEvent","TELEMETRY_PERFORMANCE_EVENT","ImpressionStats","TELEMETRY_IMPRESSION_STATS","SetPref","name","value","SET_PREF","WebExtEvent","source","isSendToMain","isBroadcastToContent","isSendToOneContent","isSendToPreloaded","isFromMain","getPortIdOfSender","TOP_SITES_SOURCE","TOP_SITES_CONTEXT_MENU_OPTIONS","MIN_RICH_FAVICON_SIZE","MIN_CORNER_FAVICON_SIZE","Dedupe","constructor","createKey","defaultCreateKey","item","group","groups","globalKeys","Set","result","values","valueMap","Map","key","has","set","push","add","map","m","Array","TOP_SITES_DEFAULT_ROWS","TOP_SITES_MAX_SITES_PER_ROW","dedupe","site","url","INITIAL_STATE","App","initialized","version","Snippets","TopSites","rows","editForm","Prefs","Dialog","visible","Sections","PreferencesPane","prevState","at","INIT","insertPinned","links","pinned","pinnedUrls","link","newLinks","filter","includes","isPinned","pinIndex","val","index","length","splice","hasMatch","newRows","TOP_SITES_UPDATED","TOP_SITES_EDIT","TOP_SITES_CANCEL_EDIT","SCREENSHOT_UPDATED","row","screenshot","PLACES_BOOKMARK_ADDED","bookmarkGuid","bookmarkTitle","dateAdded","bookmarkDateCreated","PLACES_BOOKMARK_REMOVED","newSite","DIALOG_OPEN","DIALOG_CANCEL","DELETE_HISTORY_URL","newValues","PREFS_INITIAL_VALUES","PREF_CHANGED","newState","SECTION_DEREGISTER","section","id","SECTION_REGISTER","order","undefined","findIndex","title","enabled","SECTION_UPDATE","dedupeConfigurations","dedupeConf","dedupedRows","dedupeFrom","reduce","dedupeSectionId","dedupeSection","find","s","SECTION_UPDATE_CARD","card","PLACES_LINKS_DELETED","PLACES_LINK_BLOCKED","SNIPPETS_DATA","SNIPPETS_RESET","SETTINGS_OPEN","SETTINGS_CLOSE","ErrorBoundaryFallback","React","PureComponent","props","windowObj","window","onClick","bind","location","reload","render","defaultClass","className","defaultProps","ErrorBoundary","state","hasError","componentDidCatch","error","info","setState","children","FallbackComponent","hideContext","onUpdate","componentWillMount","componentDidUpdate","prevProps","setTimeout","addEventListener","removeEventListener","componentWillUnmount","option","i","onKeyDown","event","shiftKey","first","last","icon","label","LinkMenuOptions","Separator","RemoveBookmark","ac","DELETE_BOOKMARK_BY_ID","userEvent","AddBookmark","BOOKMARK_URL","OpenInNewWindow","OPEN_NEW_WINDOW","referrer","OpenInPrivateWindow","OPEN_PRIVATE_WINDOW","BlockUrl","eventSource","BLOCK_URL","impression","block","tiles","guid","pos","WebExtDismiss","string_id","WEBEXT_DISMISS","action_position","DeleteUrl","onConfirm","forceBlock","body_string_id","confirm_button_string_id","cancel_button_string_id","PinTopSite","TOP_SITES_PIN","UnpinTopSite","TOP_SITES_UNPIN","SaveToPocket","SAVE_TO_POCKET","pocket","EditTopSite","CheckBookmark","CheckPinTopSite","DEFAULT_SITE_MENU_OPTIONS","getOptions","propOptions","isDefault","intl","formatMessage","dispatch","shouldSendImpressionStats","LinkMenu","injectIntl","VISIBLE","VISIBILITY_CHANGE_EVENT","getFormattedMessage","message","getCollapsed","prefName","Info","onInfoEnter","onInfoLeave","onManageClick","infoActive","_setInfoState","nextActive","relatedTarget","currentTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINS","infoOption","infoOptionIconA11yAttrs","sectionInfoTitle","header","body","href","InfoIntl","Disclaimer","onAcknowledge","disclaimerPref","disclaimer","text","button","DisclaimerIntl","_CollapsibleSection","onBodyMount","onHeaderClick","onTransitionEnd","enableOrDisableAnimation","enableAnimation","isAnimating","document","componentWillUpdate","nextProps","sectionBody","scrollHeight","visibilityState","node","maxHeight","renderIcon","startsWith","backgroundImage","isCollapsible","isCollapsed","needsDisclaimer","global","CollapsibleSection","RECORDED_SECTIONS","ComponentPerfTimer","Component","perfSvc","_sendBadStateEvent","_sendPaintedEvent","_reportMissingData","_timestampHandled","_recordedFirstRender","componentDidMount","_maybeSendPaintedEvent","_afterFramePaint","callback","requestAnimationFrame","_maybeSendBadStateEvent","_ensureFirstRenderTsRecorded","mark","dataReadyKey","firstRenderKey","parseInt","getMostRecentAbsMarkStartByName","SAVE_SESSION_PERF_DATA","ex","ChromeUtils","import","usablePerfObj","Services","appShell","hiddenDOMWindow","performance","now","_PerfService","performanceObj","_perf","prototype","str","getEntriesByName","timeOrigin","absNow","entries","mostRecentEntry","startTime","store","initStore","gActivityStreamPrerenderedState","sendEventOrAddListener","NEW_TAB_STATE_REQUEST","ReactDOM","hydrate","documentElement","lang","gActivityStreamStrings","getElementById","addSnippetsSubscriber","DATABASE_NAME","DATABASE_VERSION","SNIPPETS_OBJECTSTORE_NAME","SNIPPETS_UPDATE_INTERVAL_MS","SNIPPETS_ENABLED_EVENT","SNIPPETS_DISABLED_EVENT","SnippetsMap","_db","_dispatch","_dbTransaction","db","put","delete","clear","blockList","get","blockSnippetById","SNIPPETS_BLOCKLIST_UPDATED","disableOnboarding","DISABLE_ONBOARDING","showFirefoxAccounts","SHOW_FIREFOX_ACCOUNTS","connect","_openDB","_restoreFromDb","modifier","Promise","resolve","reject","transaction","objectStore","onsuccess","onerror","openRequest","indexedDB","open","deleteDatabase","onupgradeneeded","objectStoreNames","contains","createObjectStore","err","console","onversionchange","versionChangeEvent","close","cursorRequest","openCursor","cursor","continue","SnippetsProvider","gSnippetsMap","_onAction","snippetsMap","_refreshSnippets","cachedVersion","appData","lastUpdate","needsUpdate","Date","snippetsURL","response","fetch","status","payload","e","_noSnippetFallback","_forceOnboardingVisibility","shouldBeVisible","onboardingEl","style","display","_showRemoteSnippets","snippetsEl","elementId","innerHTML","scriptEl","getElementsByTagName","relocatedScript","createElement","parentNode","replaceChild","msg","SNIPPET_BLOCKED","init","addMessageListener","keys","dispatchEvent","Event","uninit","removeMessageListener","snippets","initializing","subscribe","getState","disableSnippets","_handleCancelBtn","_handleConfirmBtn","_renderModalMessage","message_body","ConfirmDialog","onLaunchTour","onCancelTour","MIGRATION_START","MIGRATION_CANCEL","ManualMigration","PreferencesInput","disabled","onChange","labelClassName","titleString","descString","Children","child","handleClickOutside","handlePrefChange","handleSectionChange","togglePane","onWrapperMount","isSidebarOpen","wrapper","checked","SECTION_ENABLE","SECTION_DISABLE","prefs","sections","isVisible","showSearch","showTopSites","topSitesRows","shouldHidePref","pref","feed","nestedPrefs","nestedPref","_PrerenderData","initialPrefs","initialSections","_setValidation","validation","_validation","invalidatingPrefs","_invalidatingPrefs","next","oneOf","concat","arePrefsValid","getPref","some","provider","onInputMount","handleEvent","detail","gContentSearchController","search","input","healthReportKey","IS_NEWTAB","searchSource","ContentSearchUIController","Search","addLocaleDataForReactIntl","locale","addLocaleData","parentLocale","sendNewTabRehydrated","isPrerendered","PAGE_PRERENDERED","renderNotified","NEW_TAB_REHYDRATED","strings","shouldBeFixedToTop","PrerenderData","outerClassName","enableWideLayout","migrationExpired","Base","documentURI","CARDS_PER_ROW","Section","_dispatchImpressionStats","maxCards","maxRows","cards","slice","needsImpressionStats","impressionCardGuids","sendImpressionStatsOrAddListener","_onVisibilityChange","isCollapsedPref","wasCollapsed","numberOfPlaceholders","items","remainder","emptyState","contextMenuOptions","shouldShowTopics","topics","realRows","placeholders","shouldShowEmptyState","padding","isWebExtension","_","read_more_endpoint","SectionIntl","_Sections","cardContextTypes","history","intlID","bookmark","trending","gImageLoading","activeCard","imageLoaded","showContextMenu","onMenuButtonClick","onMenuUpdate","onLinkClick","maybeLoadImage","image","loaderPromise","loader","Image","src","catch","then","preventDefault","altKey","ctrlKey","metaKey","OPEN_LINK","WEBEXT_CLICK","click","componentWillReceiveProps","isContextMenuOpen","hasImage","imageStyle","placeholder","hostname","description","join","context","Card","PlaceholderCard","Topic","Topics","t","countTopSitesIconsTypes","topSites","countTopSitesTypes","acc","tippyTopIcon","faviconRef","tippytop","faviconSize","rich_icon","screenshot_with_icon","no_image","_TopSites","onAddButtonClick","onFormClose","_dispatchTopSitesStats","_getVisibleTopSites","topSitesIconsStats","topSitesPinned","topsites_icon_stats","topsites_pinned","sitesPerRow","matchMedia","matches","TopSitesRows","TopSiteForm","validationError","onLabelChange","onUrlChange","onCancelButtonClick","onDoneButtonClick","onUrlInputMount","resetValidation","ev","onClose","validateForm","cleanUrl","validateUrl","URL","inputUrl","focus","showAsAdd","TopSite","TopSiteLink","onDragEvent","_allowDrop","dataTransfer","types","dragged","effectAllowed","setData","blur","isDraggable","topSiteOuterClassName","isDragged","letterFallback","imageClassName","showSmallFavicon","smallFaviconStyle","smallFaviconFallback","backgroundColor","favicon","draggableProps","onDragEnd","onDragStart","onMouseDown","onActivate","activeIndex","TopSitePlaceholder","onEditButtonClick","_TopSiteList","DEFAULT_STATE","draggedIndex","draggedSite","draggedTitle","topSitesPreview","prevTopSites","newTopSites","dropped","_makeTopSitesPreview","TOP_SITES_INSERT","draggedFromIndex","_getTopSites","pinnedOnly","unpinned","siteToInsert","holeIndex","indexStep","shiftingStep","nextIndex","preview","shift","topSitesUI","commonProps","maxNarrowVisibleIndex","l","slotProps","TopSiteList","DetectUserSessionStart","_store","_perfService","perfService","_sendEvent","visibility_event_rcvd_ts","MERGE_STORE_ACTION","OUTGOING_MESSAGE_NAME","INCOMING_MESSAGE_NAME","EARLY_QUEUED_ACTIONS","mergeStateReducer","mainReducer","messageMiddleware","au","sendAsyncMessage","rehydrationMiddleware","_didRehydrate","isMergeStoreAction","isRehydrationRequest","_didRequestInitialState","queueEarlyMessageMiddleware","_receivedFromMain","_earlyActionQueue","reducers","initialState","createStore","combineReducers","applyMiddleware","dump","JSON","stringify","stack"],"mappings":"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","file":"activity-stream.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c8b6b3c95425ced9cdc8","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nthis.MAIN_MESSAGE_TYPE = \"ActivityStream:Main\";\nthis.CONTENT_MESSAGE_TYPE = \"ActivityStream:Content\";\nthis.PRELOAD_MESSAGE_TYPE = \"ActivityStream:PreloadedBrowser\";\nthis.UI_CODE = 1;\nthis.BACKGROUND_PROCESS = 2;\n\n/**\n * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?\n * Use this in action creators if you need different logic\n * for ui/background processes.\n */\nconst globalImportContext = typeof Window === \"undefined\" ? BACKGROUND_PROCESS : UI_CODE;\n// Export for tests\nthis.globalImportContext = globalImportContext;\n\n// Create an object that avoids accidental differing key/value pairs:\n// {\n// INIT: \"INIT\",\n// UNINIT: \"UNINIT\"\n// }\nconst actionTypes = {};\nfor (const type of [\n \"BLOCK_URL\",\n \"BOOKMARK_URL\",\n \"DELETE_BOOKMARK_BY_ID\",\n \"DELETE_HISTORY_URL\",\n \"DELETE_HISTORY_URL_CONFIRM\",\n \"DIALOG_CANCEL\",\n \"DIALOG_OPEN\",\n \"DISABLE_ONBOARDING\",\n \"INIT\",\n \"MIGRATION_CANCEL\",\n \"MIGRATION_COMPLETED\",\n \"MIGRATION_START\",\n \"NEW_TAB_INIT\",\n \"NEW_TAB_INITIAL_STATE\",\n \"NEW_TAB_LOAD\",\n \"NEW_TAB_REHYDRATED\",\n \"NEW_TAB_STATE_REQUEST\",\n \"NEW_TAB_UNLOAD\",\n \"OPEN_LINK\",\n \"OPEN_NEW_WINDOW\",\n \"OPEN_PRIVATE_WINDOW\",\n \"PAGE_PRERENDERED\",\n \"PLACES_BOOKMARK_ADDED\",\n \"PLACES_BOOKMARK_CHANGED\",\n \"PLACES_BOOKMARK_REMOVED\",\n \"PLACES_HISTORY_CLEARED\",\n \"PLACES_LINKS_DELETED\",\n \"PLACES_LINK_BLOCKED\",\n \"PREFS_INITIAL_VALUES\",\n \"PREF_CHANGED\",\n \"RICH_ICON_MISSING\",\n \"SAVE_SESSION_PERF_DATA\",\n \"SAVE_TO_POCKET\",\n \"SCREENSHOT_UPDATED\",\n \"SECTION_DEREGISTER\",\n \"SECTION_DISABLE\",\n \"SECTION_ENABLE\",\n \"SECTION_OPTIONS_CHANGED\",\n \"SECTION_REGISTER\",\n \"SECTION_UPDATE\",\n \"SECTION_UPDATE_CARD\",\n \"SETTINGS_CLOSE\",\n \"SETTINGS_OPEN\",\n \"SET_PREF\",\n \"SHOW_FIREFOX_ACCOUNTS\",\n \"SNIPPETS_BLOCKLIST_UPDATED\",\n \"SNIPPETS_DATA\",\n \"SNIPPETS_RESET\",\n \"SNIPPET_BLOCKED\",\n \"SYSTEM_TICK\",\n \"TELEMETRY_IMPRESSION_STATS\",\n \"TELEMETRY_PERFORMANCE_EVENT\",\n \"TELEMETRY_UNDESIRED_EVENT\",\n \"TELEMETRY_USER_EVENT\",\n \"TOP_SITES_CANCEL_EDIT\",\n \"TOP_SITES_EDIT\",\n \"TOP_SITES_INSERT\",\n \"TOP_SITES_PIN\",\n \"TOP_SITES_UNPIN\",\n \"TOP_SITES_UPDATED\",\n \"UNINIT\",\n \"WEBEXT_CLICK\",\n \"WEBEXT_DISMISS\"\n]) {\n actionTypes[type] = type;\n}\n\n// Helper function for creating routed actions between content and main\n// Not intended to be used by consumers\nfunction _RouteMessage(action, options) {\n const meta = action.meta ? Object.assign({}, action.meta) : {};\n if (!options || !options.from || !options.to) {\n throw new Error(\"Routed Messages must have options as the second parameter, and must at least include a .from and .to property.\");\n }\n // For each of these fields, if they are passed as an option,\n // add them to the action. If they are not defined, remove them.\n [\"from\", \"to\", \"toTarget\", \"fromTarget\", \"skipMain\", \"skipLocal\"].forEach(o => {\n if (typeof options[o] !== \"undefined\") {\n meta[o] = options[o];\n } else if (meta[o]) {\n delete meta[o];\n }\n });\n return Object.assign({}, action, {meta});\n}\n\n/**\n * AlsoToMain - Creates a message that will be dispatched locally and also sent to the Main process.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {bool} skipLocal Used by OnlyToMain to skip the main reducer\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToMain(action, fromTarget, skipLocal) {\n return _RouteMessage(action, {\n from: CONTENT_MESSAGE_TYPE,\n to: MAIN_MESSAGE_TYPE,\n fromTarget,\n skipLocal\n });\n}\n\n/**\n * OnlyToMain - Creates a message that will be sent to the Main process and skip the local reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToMain(action, fromTarget) {\n return AlsoToMain(action, fromTarget, true);\n}\n\n/**\n * BroadcastToContent - Creates a message that will be dispatched to main and sent to ALL content processes.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction BroadcastToContent(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE\n });\n}\n\n/**\n * AlsoToOneContent - Creates a message that will be will be dispatched to the main store\n * and also sent to a particular Content process.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @param {bool} skipMain Used by OnlyToOneContent to skip the main process\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToOneContent(action, target, skipMain) {\n if (!target) {\n throw new Error(\"You must provide a target ID as the second parameter of AlsoToOneContent. If you want to send to all content processes, use BroadcastToContent\");\n }\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE,\n toTarget: target,\n skipMain\n });\n}\n\n/**\n * OnlyToOneContent - Creates a message that will be sent to a particular Content process\n * and skip the main reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToOneContent(action, target) {\n return AlsoToOneContent(action, target, true);\n}\n\n/**\n * AlsoToPreloaded - Creates a message that dispatched to the main reducer and also sent to the preloaded tab.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToPreloaded(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: PRELOAD_MESSAGE_TYPE\n });\n}\n\n/**\n * UserEvent - A telemetry ping indicating a user action. This should only\n * be sent from the UI during a user session.\n *\n * @param {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction UserEvent(data) {\n return AlsoToMain({\n type: actionTypes.TELEMETRY_USER_EVENT,\n data\n });\n}\n\n/**\n * UndesiredEvent - A telemetry ping indicating an undesired state.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction UndesiredEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_UNDESIRED_EVENT,\n data\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * PerfEvent - A telemetry ping indicating a performance-related event.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction PerfEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_PERFORMANCE_EVENT,\n data\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * ImpressionStats - A telemetry ping indicating an impression stats.\n *\n * @param {object} data Fields to include in the ping\n * @param {int} importContext (For testing) Override the import context for testing.\n * #return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction ImpressionStats(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_IMPRESSION_STATS,\n data\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction SetPref(name, value, importContext = globalImportContext) {\n const action = {type: actionTypes.SET_PREF, data: {name, value}};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction WebExtEvent(type, data, importContext = globalImportContext) {\n if (!data || !data.source) {\n throw new Error(\"WebExtEvent actions should include a property \\\"source\\\", the id of the webextension that should receive the event.\");\n }\n const action = {type, data};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nthis.actionTypes = actionTypes;\n\nthis.actionCreators = {\n BroadcastToContent,\n UserEvent,\n UndesiredEvent,\n PerfEvent,\n ImpressionStats,\n AlsoToOneContent,\n OnlyToOneContent,\n AlsoToMain,\n OnlyToMain,\n AlsoToPreloaded,\n SetPref,\n WebExtEvent\n};\n\n// These are helpers to test for certain kinds of actions\nthis.actionUtils = {\n isSendToMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;\n },\n isBroadcastToContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && !action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToOneContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToPreloaded(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === PRELOAD_MESSAGE_TYPE &&\n action.meta.from === MAIN_MESSAGE_TYPE;\n },\n isFromMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.from === MAIN_MESSAGE_TYPE &&\n action.meta.to === CONTENT_MESSAGE_TYPE;\n },\n getPortIdOfSender(action) {\n return (action.meta && action.meta.fromTarget) || null;\n },\n _RouteMessage\n};\n\nthis.EXPORTED_SYMBOLS = [\n \"actionTypes\",\n \"actionCreators\",\n \"actionUtils\",\n \"globalImportContext\",\n \"UI_CODE\",\n \"BACKGROUND_PROCESS\",\n \"MAIN_MESSAGE_TYPE\",\n \"CONTENT_MESSAGE_TYPE\",\n \"PRELOAD_MESSAGE_TYPE\"\n];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/Actions.jsm","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 1\n// module chunks = 0","module.exports = ReactIntl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"ReactIntl\"\n// module id = 2\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0","module.exports = ReactRedux;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"ReactRedux\"\n// module id = 4\n// module chunks = 0","export const TOP_SITES_SOURCE = \"TOP_SITES\";\nexport const TOP_SITES_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\",\n \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\", \"DeleteUrl\"];\n// minimum size necessary to show a rich icon instead of a screenshot\nexport const MIN_RICH_FAVICON_SIZE = 96;\n// minimum size necessary to show any icon in the top left corner with a screenshot\nexport const MIN_CORNER_FAVICON_SIZE = 16;\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSitesConstants.js","this.Dedupe = class Dedupe {\n constructor(createKey) {\n this.createKey = createKey || this.defaultCreateKey;\n }\n\n defaultCreateKey(item) {\n return item;\n }\n\n /**\n * Dedupe any number of grouped elements favoring those from earlier groups.\n *\n * @param {Array} groups Contains an arbitrary number of arrays of elements.\n * @returns {Array} A matching array of each provided group deduped.\n */\n group(...groups) {\n const globalKeys = new Set();\n const result = [];\n for (const values of groups) {\n const valueMap = new Map();\n for (const value of values) {\n const key = this.createKey(value);\n if (!globalKeys.has(key) && !valueMap.has(key)) {\n valueMap.set(key, value);\n }\n }\n result.push(valueMap);\n valueMap.forEach((value, key) => globalKeys.add(key));\n }\n return result.map(m => Array.from(m.values()));\n }\n};\n\nthis.EXPORTED_SYMBOLS = [\"Dedupe\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/Dedupe.jsm","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nconst {actionTypes: at} = ChromeUtils.import(\"resource://activity-stream/common/Actions.jsm\", {});\nconst {Dedupe} = ChromeUtils.import(\"resource://activity-stream/common/Dedupe.jsm\", {});\n\nconst TOP_SITES_DEFAULT_ROWS = 1;\nconst TOP_SITES_MAX_SITES_PER_ROW = 8;\n\nconst dedupe = new Dedupe(site => site && site.url);\n\nconst INITIAL_STATE = {\n App: {\n // Have we received real data from the app yet?\n initialized: false,\n // The version of the system-addon\n version: null\n },\n Snippets: {initialized: false},\n TopSites: {\n // Have we received real data from history yet?\n initialized: false,\n // The history (and possibly default) links\n rows: [],\n // Used in content only to dispatch action to TopSiteForm.\n editForm: null\n },\n Prefs: {\n initialized: false,\n values: {}\n },\n Dialog: {\n visible: false,\n data: {}\n },\n Sections: [],\n PreferencesPane: {visible: false}\n};\n\nfunction App(prevState = INITIAL_STATE.App, action) {\n switch (action.type) {\n case at.INIT:\n return Object.assign({}, prevState, action.data || {}, {initialized: true});\n default:\n return prevState;\n }\n}\n\n/**\n * insertPinned - Inserts pinned links in their specified slots\n *\n * @param {array} a list of links\n * @param {array} a list of pinned links\n * @return {array} resulting list of links with pinned links inserted\n */\nfunction insertPinned(links, pinned) {\n // Remove any pinned links\n const pinnedUrls = pinned.map(link => link && link.url);\n let newLinks = links.filter(link => (link ? !pinnedUrls.includes(link.url) : false));\n newLinks = newLinks.map(link => {\n if (link && link.isPinned) {\n delete link.isPinned;\n delete link.pinIndex;\n }\n return link;\n });\n\n // Then insert them in their specified location\n pinned.forEach((val, index) => {\n if (!val) { return; }\n let link = Object.assign({}, val, {isPinned: true, pinIndex: index});\n if (index > newLinks.length) {\n newLinks[index] = link;\n } else {\n newLinks.splice(index, 0, link);\n }\n });\n\n return newLinks;\n}\n\nfunction TopSites(prevState = INITIAL_STATE.TopSites, action) {\n let hasMatch;\n let newRows;\n switch (action.type) {\n case at.TOP_SITES_UPDATED:\n if (!action.data) {\n return prevState;\n }\n return Object.assign({}, prevState, {initialized: true, rows: action.data});\n case at.TOP_SITES_EDIT:\n return Object.assign({}, prevState, {editForm: {index: action.data.index}});\n case at.TOP_SITES_CANCEL_EDIT:\n return Object.assign({}, prevState, {editForm: null});\n case at.SCREENSHOT_UPDATED:\n newRows = prevState.rows.map(row => {\n if (row && row.url === action.data.url) {\n hasMatch = true;\n return Object.assign({}, row, {screenshot: action.data.screenshot});\n }\n return row;\n });\n return hasMatch ? Object.assign({}, prevState, {rows: newRows}) : prevState;\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, site, {bookmarkGuid, bookmarkTitle, bookmarkDateCreated: dateAdded});\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const newSite = Object.assign({}, site);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n return newSite;\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n default:\n return prevState;\n }\n}\n\nfunction Dialog(prevState = INITIAL_STATE.Dialog, action) {\n switch (action.type) {\n case at.DIALOG_OPEN:\n return Object.assign({}, prevState, {visible: true, data: action.data});\n case at.DIALOG_CANCEL:\n return Object.assign({}, prevState, {visible: false});\n case at.DELETE_HISTORY_URL:\n return Object.assign({}, INITIAL_STATE.Dialog);\n default:\n return prevState;\n }\n}\n\nfunction Prefs(prevState = INITIAL_STATE.Prefs, action) {\n let newValues;\n switch (action.type) {\n case at.PREFS_INITIAL_VALUES:\n return Object.assign({}, prevState, {initialized: true, values: action.data});\n case at.PREF_CHANGED:\n newValues = Object.assign({}, prevState.values);\n newValues[action.data.name] = action.data.value;\n return Object.assign({}, prevState, {values: newValues});\n default:\n return prevState;\n }\n}\n\nfunction Sections(prevState = INITIAL_STATE.Sections, action) {\n let hasMatch;\n let newState;\n switch (action.type) {\n case at.SECTION_DEREGISTER:\n return prevState.filter(section => section.id !== action.data);\n case at.SECTION_REGISTER:\n // If section exists in prevState, update it\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n hasMatch = true;\n return Object.assign({}, section, action.data);\n }\n return section;\n });\n\n // Invariant: Sections array sorted in increasing order of property `order`.\n // If section doesn't exist in prevState, create a new section object. If\n // the section has an order, insert it at the correct place in the array.\n // Otherwise, prepend it and set the order to be minimal.\n if (!hasMatch) {\n const initialized = !!(action.data.rows && action.data.rows.length > 0);\n let order;\n let index;\n if (prevState.length > 0) {\n order = action.data.order !== undefined ? action.data.order : prevState[0].order - 1;\n index = newState.findIndex(section => section.order >= order);\n if (index === -1) {\n index = newState.length;\n }\n } else {\n order = action.data.order !== undefined ? action.data.order : 0;\n index = 0;\n }\n\n const section = Object.assign({title: \"\", rows: [], order, enabled: false}, action.data, {initialized});\n newState.splice(index, 0, section);\n }\n return newState;\n case at.SECTION_UPDATE:\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n // If the action is updating rows, we should consider initialized to be true.\n // This can be overridden if initialized is defined in the action.data\n const initialized = action.data.rows ? {initialized: true} : {};\n return Object.assign({}, section, initialized, action.data);\n }\n return section;\n });\n\n if (!action.data.dedupeConfigurations) {\n return newState;\n }\n\n action.data.dedupeConfigurations.forEach(dedupeConf => {\n newState = newState.map(section => {\n if (section.id === dedupeConf.id) {\n const dedupedRows = dedupeConf.dedupeFrom.reduce((rows, dedupeSectionId) => {\n const dedupeSection = newState.find(s => s.id === dedupeSectionId);\n const [, newRows] = dedupe.group(dedupeSection.rows, rows);\n return newRows;\n }, section.rows);\n\n return Object.assign({}, section, {rows: dedupedRows});\n }\n\n return section;\n });\n });\n\n return newState;\n case at.SECTION_UPDATE_CARD:\n return prevState.map(section => {\n if (section && section.id === action.data.id && section.rows) {\n const newRows = section.rows.map(card => {\n if (card.url === action.data.url) {\n return Object.assign({}, card, action.data.options);\n }\n return card;\n });\n return Object.assign({}, section, {rows: newRows});\n }\n return section;\n });\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the item within the rows that is attempted to be bookmarked\n if (item.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, item, {\n bookmarkGuid,\n bookmarkTitle,\n bookmarkDateCreated: dateAdded,\n type: \"bookmark\"\n });\n }\n return item;\n })\n }));\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the bookmark within the rows that is attempted to be removed\n if (item.url === action.data.url) {\n const newSite = Object.assign({}, item);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n if (!newSite.type || newSite.type === \"bookmark\") {\n newSite.type = \"history\";\n }\n return newSite;\n }\n return item;\n })\n }));\n case at.PLACES_LINKS_DELETED:\n return prevState.map(section => Object.assign({}, section,\n {rows: section.rows.filter(site => !action.data.includes(site.url))}));\n case at.PLACES_LINK_BLOCKED:\n return prevState.map(section =>\n Object.assign({}, section, {rows: section.rows.filter(site => site.url !== action.data.url)}));\n default:\n return prevState;\n }\n}\n\nfunction Snippets(prevState = INITIAL_STATE.Snippets, action) {\n switch (action.type) {\n case at.SNIPPETS_DATA:\n return Object.assign({}, prevState, {initialized: true}, action.data);\n case at.SNIPPETS_RESET:\n return INITIAL_STATE.Snippets;\n default:\n return prevState;\n }\n}\n\nfunction PreferencesPane(prevState = INITIAL_STATE.PreferencesPane, action) {\n switch (action.type) {\n case at.SETTINGS_OPEN:\n return Object.assign({}, prevState, {visible: true});\n case at.SETTINGS_CLOSE:\n return Object.assign({}, prevState, {visible: false});\n default:\n return prevState;\n }\n}\n\nthis.INITIAL_STATE = INITIAL_STATE;\nthis.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;\nthis.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;\n\nthis.reducers = {TopSites, App, Snippets, Prefs, Dialog, Sections, PreferencesPane};\nthis.insertPinned = insertPinned;\n\nthis.EXPORTED_SYMBOLS = [\"reducers\", \"INITIAL_STATE\", \"insertPinned\", \"TOP_SITES_DEFAULT_ROWS\", \"TOP_SITES_MAX_SITES_PER_ROW\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/Reducers.jsm","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class ErrorBoundaryFallback extends React.PureComponent {\n constructor(props) {\n super(props);\n this.windowObj = this.props.windowObj || window;\n this.onClick = this.onClick.bind(this);\n }\n\n /**\n * Since we only get here if part of the page has crashed, do a\n * forced reload to give us the best chance at recovering.\n */\n onClick() {\n this.windowObj.location.reload(true);\n }\n\n render() {\n const defaultClass = \"as-error-fallback\";\n let className;\n if (\"className\" in this.props) {\n className = `${this.props.className} ${defaultClass}`;\n } else {\n className = defaultClass;\n }\n\n // href=\"#\" to force normal link styling stuff (eg cursor on hover)\n return (\n

    \n
    \n \n
    \n \n \n \n \n \n
    \n );\n }\n}\nErrorBoundaryFallback.defaultProps = {className: \"as-error-fallback\"};\n\nexport class ErrorBoundary extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {hasError: false};\n }\n\n componentDidCatch(error, info) {\n this.setState({hasError: true});\n }\n\n render() {\n if (!this.state.hasError) {\n return (this.props.children);\n }\n\n return ;\n }\n}\n\nErrorBoundary.defaultProps = {FallbackComponent: ErrorBoundaryFallback};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ErrorBoundary/ErrorBoundary.jsx","import React from \"react\";\n\nexport class ContextMenu extends React.PureComponent {\n constructor(props) {\n super(props);\n this.hideContext = this.hideContext.bind(this);\n }\n\n hideContext() {\n this.props.onUpdate(false);\n }\n\n componentWillMount() {\n this.hideContext();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.visible && !prevProps.visible) {\n setTimeout(() => {\n window.addEventListener(\"click\", this.hideContext);\n }, 0);\n }\n if (!this.props.visible && prevProps.visible) {\n window.removeEventListener(\"click\", this.hideContext);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.hideContext);\n }\n\n render() {\n return ();\n }\n}\n\nexport class ContextMenuItem extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n }\n\n onClick() {\n this.props.hideContext();\n this.props.option.onClick();\n }\n\n onKeyDown(event) {\n const {option} = this.props;\n switch (event.key) {\n case \"Tab\":\n // tab goes down in context menu, shift + tab goes up in context menu\n // if we're on the last item, one more tab will close the context menu\n // similarly, if we're on the first item, one more shift + tab will close it\n if ((event.shiftKey && option.first) || (!event.shiftKey && option.last)) {\n this.props.hideContext();\n }\n break;\n case \"Enter\":\n this.props.hideContext();\n option.onClick();\n break;\n }\n }\n\n render() {\n const {option} = this.props;\n return (\n
  • \n \n {option.icon && }\n {option.label}\n \n
  • );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ContextMenu/ContextMenu.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * List of functions that return items that can be included as menu options in a\n * LinkMenu. All functions take the site as the first parameter, and optionally\n * the index of the site.\n */\nexport const LinkMenuOptions = {\n Separator: () => ({type: \"separator\"}),\n RemoveBookmark: site => ({\n id: \"menu_action_remove_bookmark\",\n icon: \"bookmark-added\",\n action: ac.AlsoToMain({\n type: at.DELETE_BOOKMARK_BY_ID,\n data: site.bookmarkGuid\n }),\n userEvent: \"BOOKMARK_DELETE\"\n }),\n AddBookmark: site => ({\n id: \"menu_action_bookmark\",\n icon: \"bookmark-hollow\",\n action: ac.AlsoToMain({\n type: at.BOOKMARK_URL,\n data: {url: site.url, title: site.title, type: site.type}\n }),\n userEvent: \"BOOKMARK_ADD\"\n }),\n OpenInNewWindow: site => ({\n id: \"menu_action_open_new_window\",\n icon: \"new-window\",\n action: ac.AlsoToMain({\n type: at.OPEN_NEW_WINDOW,\n data: {url: site.url, referrer: site.referrer}\n }),\n userEvent: \"OPEN_NEW_WINDOW\"\n }),\n OpenInPrivateWindow: site => ({\n id: \"menu_action_open_private_window\",\n icon: \"new-window-private\",\n action: ac.AlsoToMain({\n type: at.OPEN_PRIVATE_WINDOW,\n data: {url: site.url, referrer: site.referrer}\n }),\n userEvent: \"OPEN_PRIVATE_WINDOW\"\n }),\n BlockUrl: (site, index, eventSource) => ({\n id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.AlsoToMain({\n type: at.BLOCK_URL,\n data: site.url\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n block: 0,\n tiles: [{id: site.guid, pos: index}]\n }),\n userEvent: \"BLOCK\"\n }),\n\n // This is an option for web extentions which will result in remove items from\n // memory and notify the web extenion, rather than using the built-in block list.\n WebExtDismiss: (site, index, eventSource) => ({\n id: \"menu_action_webext_dismiss\",\n string_id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.WebExtEvent(at.WEBEXT_DISMISS, {\n source: eventSource,\n url: site.url,\n action_position: index\n })\n }),\n DeleteUrl: site => ({\n id: \"menu_action_delete\",\n icon: \"delete\",\n action: {\n type: at.DIALOG_OPEN,\n data: {\n onConfirm: [\n ac.AlsoToMain({type: at.DELETE_HISTORY_URL, data: {url: site.url, forceBlock: site.bookmarkGuid}}),\n ac.UserEvent({event: \"DELETE\"})\n ],\n body_string_id: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n confirm_button_string_id: \"menu_action_delete\",\n cancel_button_string_id: \"topsites_form_cancel_button\",\n icon: \"modal-delete\"\n }\n },\n userEvent: \"DIALOG_OPEN\"\n }),\n PinTopSite: (site, index) => ({\n id: \"menu_action_pin\",\n icon: \"pin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site: {url: site.url}, index}\n }),\n userEvent: \"PIN\"\n }),\n UnpinTopSite: site => ({\n id: \"menu_action_unpin\",\n icon: \"unpin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_UNPIN,\n data: {site: {url: site.url}}\n }),\n userEvent: \"UNPIN\"\n }),\n SaveToPocket: (site, index, eventSource) => ({\n id: \"menu_action_save_to_pocket\",\n icon: \"pocket\",\n action: ac.AlsoToMain({\n type: at.SAVE_TO_POCKET,\n data: {site: {url: site.url, title: site.title}}\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n pocket: 0,\n tiles: [{id: site.guid, pos: index}]\n }),\n userEvent: \"SAVE_TO_POCKET\"\n }),\n EditTopSite: (site, index) => ({\n id: \"edit_topsites_button_text\",\n icon: \"edit\",\n action: {\n type: at.TOP_SITES_EDIT,\n data: {index}\n }\n }),\n CheckBookmark: site => (site.bookmarkGuid ? LinkMenuOptions.RemoveBookmark(site) : LinkMenuOptions.AddBookmark(site)),\n CheckPinTopSite: (site, index) => (site.isPinned ? LinkMenuOptions.UnpinTopSite(site) : LinkMenuOptions.PinTopSite(site, index))\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/link-menu-options.js","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport {LinkMenuOptions} from \"content-src/lib/link-menu-options\";\nimport React from \"react\";\n\nconst DEFAULT_SITE_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\", \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\"];\n\nexport class _LinkMenu extends React.PureComponent {\n getOptions() {\n const {props} = this;\n const {site, index, source} = props;\n\n // Handle special case of default site\n const propOptions = !site.isDefault ? props.options : DEFAULT_SITE_MENU_OPTIONS;\n\n const options = propOptions.map(o => LinkMenuOptions[o](site, index, source)).map(option => {\n const {action, impression, id, string_id, type, userEvent} = option;\n if (!type && id) {\n option.label = props.intl.formatMessage({id: string_id || id});\n option.onClick = () => {\n props.dispatch(action);\n if (userEvent) {\n props.dispatch(ac.UserEvent({\n event: userEvent,\n source,\n action_position: index\n }));\n }\n if (impression && props.shouldSendImpressionStats) {\n props.dispatch(impression);\n }\n };\n }\n return option;\n });\n\n // This is for accessibility to support making each item tabbable.\n // We want to know which item is the first and which item\n // is the last, so we can close the context menu accordingly.\n options[0].first = true;\n options[options.length - 1].last = true;\n return options;\n }\n\n render() {\n return ();\n }\n}\n\nexport const LinkMenu = injectIntl(_LinkMenu);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/LinkMenu/LinkMenu.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport React from \"react\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\nfunction getCollapsed(props) {\n return (props.prefName in props.Prefs.values) ? props.Prefs.values[props.prefName] : false;\n}\n\nexport class Info extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onInfoEnter = this.onInfoEnter.bind(this);\n this.onInfoLeave = this.onInfoLeave.bind(this);\n this.onManageClick = this.onManageClick.bind(this);\n this.state = {infoActive: false};\n }\n\n /**\n * Take a truthy value to conditionally change the infoActive state.\n */\n _setInfoState(nextActive) {\n const infoActive = !!nextActive;\n if (infoActive !== this.state.infoActive) {\n this.setState({infoActive});\n }\n }\n\n onInfoEnter() {\n // We're getting focus or hover, so info state should be true if not yet.\n this._setInfoState(true);\n }\n\n onInfoLeave(event) {\n // We currently have an active (true) info state, so keep it true only if we\n // have a related event target that is contained \"within\" the current target\n // (section-info-option) as itself or a descendant. Set to false otherwise.\n this._setInfoState(event && event.relatedTarget && (\n event.relatedTarget === event.currentTarget ||\n (event.relatedTarget.compareDocumentPosition(event.currentTarget) &\n Node.DOCUMENT_POSITION_CONTAINS)));\n }\n\n onManageClick() {\n this.props.dispatch({type: at.SETTINGS_OPEN});\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n\n render() {\n const {infoOption, intl} = this.props;\n const infoOptionIconA11yAttrs = {\n \"aria-haspopup\": \"true\",\n \"aria-controls\": \"info-option\",\n \"aria-expanded\": this.state.infoActive ? \"true\" : \"false\",\n \"role\": \"note\",\n \"tabIndex\": 0\n };\n const sectionInfoTitle = intl.formatMessage({id: \"section_info_option\"});\n\n return (\n \n \n
    \n {infoOption.header &&\n
    \n {getFormattedMessage(infoOption.header)}\n
    }\n

    \n {infoOption.body && getFormattedMessage(infoOption.body)}\n {infoOption.link &&\n \n {getFormattedMessage(infoOption.link.title || infoOption.link)}\n \n }\n

    \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport const InfoIntl = injectIntl(Info);\n\nexport class Disclaimer extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onAcknowledge = this.onAcknowledge.bind(this);\n }\n\n onAcknowledge() {\n this.props.dispatch(ac.SetPref(this.props.disclaimerPref, false));\n this.props.dispatch(ac.UserEvent({event: \"SECTION_DISCLAIMER_ACKNOWLEDGED\", source: this.props.eventSource}));\n }\n\n render() {\n const {disclaimer} = this.props;\n return (\n
    \n
    \n {getFormattedMessage(disclaimer.text)}\n {disclaimer.link &&\n \n {getFormattedMessage(disclaimer.link.title || disclaimer.link)}\n \n }\n
    \n\n \n
    \n );\n }\n}\n\nexport const DisclaimerIntl = injectIntl(Disclaimer);\n\nexport class _CollapsibleSection extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBodyMount = this.onBodyMount.bind(this);\n this.onInfoEnter = this.onInfoEnter.bind(this);\n this.onInfoLeave = this.onInfoLeave.bind(this);\n this.onHeaderClick = this.onHeaderClick.bind(this);\n this.onTransitionEnd = this.onTransitionEnd.bind(this);\n this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n this.state = {enableAnimation: true, isAnimating: false, infoActive: false};\n }\n\n componentWillMount() {\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n componentWillUpdate(nextProps) {\n // Check if we're about to go from expanded to collapsed\n if (!getCollapsed(this.props) && getCollapsed(nextProps)) {\n // This next line forces a layout flush of the section body, which has a\n // max-height style set, so that the upcoming collapse animation can\n // animate from that height to the collapsed height. Without this, the\n // update is coalesced and there's no animation from no-max-height to 0.\n this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n }\n }\n\n componentWillUnmount() {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n enableOrDisableAnimation() {\n // Only animate the collapse/expand for visible tabs.\n const visible = this.props.document.visibilityState === VISIBLE;\n if (this.state.enableAnimation !== visible) {\n this.setState({enableAnimation: visible});\n }\n }\n\n _setInfoState(nextActive) {\n // Take a truthy value to conditionally change the infoActive state.\n const infoActive = !!nextActive;\n if (infoActive !== this.state.infoActive) {\n this.setState({infoActive});\n }\n }\n\n onBodyMount(node) {\n this.sectionBody = node;\n }\n\n onInfoEnter() {\n // We're getting focus or hover, so info state should be true if not yet.\n this._setInfoState(true);\n }\n\n onInfoLeave(event) {\n // We currently have an active (true) info state, so keep it true only if we\n // have a related event target that is contained \"within\" the current target\n // (section-info-option) as itself or a descendant. Set to false otherwise.\n this._setInfoState(event && event.relatedTarget && (\n event.relatedTarget === event.currentTarget ||\n (event.relatedTarget.compareDocumentPosition(event.currentTarget) &\n Node.DOCUMENT_POSITION_CONTAINS)));\n }\n\n onHeaderClick() {\n // If this.sectionBody is unset, it means that we're in some sort of error\n // state, probably displaying the error fallback, so we won't be able to\n // compute the height, and we don't want to persist the preference.\n if (!this.sectionBody) {\n return;\n }\n\n // Get the current height of the body so max-height transitions can work\n this.setState({\n isAnimating: true,\n maxHeight: `${this.sectionBody.scrollHeight}px`\n });\n this.props.dispatch(ac.SetPref(this.props.prefName, !getCollapsed(this.props)));\n }\n\n onTransitionEnd(event) {\n // Only update the animating state for our own transition (not a child's)\n if (event.target === event.currentTarget) {\n this.setState({isAnimating: false});\n }\n }\n\n renderIcon() {\n const {icon} = this.props;\n if (icon && icon.startsWith(\"moz-extension://\")) {\n return ;\n }\n return ;\n }\n\n render() {\n const isCollapsible = this.props.prefName in this.props.Prefs.values;\n const isCollapsed = getCollapsed(this.props);\n const {enableAnimation, isAnimating, maxHeight} = this.state;\n const {id, infoOption, eventSource, disclaimer} = this.props;\n const disclaimerPref = `section.${id}.showDisclaimer`;\n const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref];\n\n return (\n
    \n
    \n

    \n \n {this.renderIcon()}\n {this.props.title}\n {isCollapsible && }\n \n

    \n {infoOption && }\n
    \n \n \n {needsDisclaimer && }\n {this.props.children}\n \n \n
    \n );\n }\n}\n\n_CollapsibleSection.defaultProps = {\n document: global.document || {\n addEventListener: () => {},\n removeEventListener: () => {},\n visibilityState: \"hidden\"\n },\n Prefs: {values: {}}\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n constructor(props) {\n super(props);\n // Just for test dependency injection:\n this.perfSvc = this.props.perfSvc || perfSvc;\n\n this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n this._reportMissingData = false;\n this._timestampHandled = false;\n this._recordedFirstRender = false;\n }\n\n componentDidMount() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n componentDidUpdate() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n /**\n * Call the given callback after the upcoming frame paints.\n *\n * @note Both setTimeout and requestAnimationFrame are throttled when the page\n * is hidden, so this callback may get called up to a second or so after the\n * requestAnimationFrame \"paint\" for hidden tabs.\n *\n * Newtabs hidden while loading will presumably be fairly rare (other than\n * preloaded tabs, which we will be filtering out on the server side), so such\n * cases should get lost in the noise.\n *\n * If we decide that it's important to find out when something that's hidden\n * has \"painted\", however, another option is to post a message to this window.\n * That should happen even faster than setTimeout, and, at least as of this\n * writing, it's not throttled in hidden windows in Firefox.\n *\n * @param {Function} callback\n *\n * @returns void\n */\n _afterFramePaint(callback) {\n requestAnimationFrame(() => setTimeout(callback, 0));\n }\n\n _maybeSendBadStateEvent() {\n // Follow up bugs:\n // https://github.com/mozilla/activity-stream/issues/3691\n if (!this.props.initialized) {\n // Remember to report back when data is available.\n this._reportMissingData = true;\n } else if (this._reportMissingData) {\n this._reportMissingData = false;\n // Report how long it took for component to become initialized.\n this._sendBadStateEvent();\n }\n }\n\n _maybeSendPaintedEvent() {\n // If we've already handled a timestamp, don't do it again.\n if (this._timestampHandled || !this.props.initialized) {\n return;\n }\n\n // And if we haven't, we're doing so now, so remember that. Even if\n // something goes wrong in the callback, we can't try again, as we'd be\n // sending back the wrong data, and we have to do it here, so that other\n // calls to this method while waiting for the next frame won't also try to\n // handle it.\n this._timestampHandled = true;\n this._afterFramePaint(this._sendPaintedEvent);\n }\n\n /**\n * Triggered by call to render. Only first call goes through due to\n * `_recordedFirstRender`.\n */\n _ensureFirstRenderTsRecorded() {\n // Used as t0 for recording how long component took to initialize.\n if (!this._recordedFirstRender) {\n this._recordedFirstRender = true;\n // topsites_first_render_ts, highlights_first_render_ts.\n const key = `${this.props.id}_first_render_ts`;\n this.perfSvc.mark(key);\n }\n }\n\n /**\n * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n * of how much longer the data took to be ready for display than it would\n * have been the ideal case.\n * https://github.com/mozilla/ping-centre/issues/98\n */\n _sendBadStateEvent() {\n // highlights_data_ready_ts, topsites_data_ready_ts.\n const dataReadyKey = `${this.props.id}_data_ready_ts`;\n this.perfSvc.mark(dataReadyKey);\n\n try {\n const firstRenderKey = `${this.props.id}_first_render_ts`;\n // value has to be Int32.\n const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n // highlights_data_late_by_ms, topsites_data_late_by_ms.\n data: {[`${this.props.id}_data_late_by_ms`]: value}\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true.\n }\n }\n\n _sendPaintedEvent() {\n // Record first_painted event but only send if topsites.\n if (this.props.id !== \"topsites\") {\n return;\n }\n\n // topsites_first_painted_ts.\n const key = `${this.props.id}_first_painted_ts`;\n this.perfSvc.mark(key);\n\n try {\n const data = {};\n data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up, and should continue\n // to set this._timestampHandled to avoid going through this again.\n }\n }\n\n render() {\n if (RECORDED_SECTIONS.includes(this.props.id)) {\n this._ensureFirstRenderTsRecorded();\n this._maybeSendBadStateEvent();\n }\n return this.props.children;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n // Borrow the high-resolution timer from the hidden window....\n usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n // we must be running in content space\n // eslint-disable-next-line no-undef\n usablePerfObj = performance;\n} else {\n // This is a dummy object so this file doesn't crash in the node prerendering\n // task.\n usablePerfObj = {\n now() {},\n mark() {}\n };\n}\n\nthis._PerfService = function _PerfService(options) {\n // For testing, so that we can use a fake Window.performance object with\n // known state.\n if (options && options.performanceObj) {\n this._perf = options.performanceObj;\n } else {\n this._perf = usablePerfObj;\n }\n};\n\n_PerfService.prototype = {\n /**\n * Calls the underlying mark() method on the appropriate Window.performance\n * object to add a mark with the given name to the appropriate performance\n * timeline.\n *\n * @param {String} name the name to give the current mark\n * @return {void}\n */\n mark: function mark(str) {\n this._perf.mark(str);\n },\n\n /**\n * Calls the underlying getEntriesByName on the appropriate Window.performance\n * object.\n *\n * @param {String} name\n * @param {String} type eg \"mark\"\n * @return {Array} Performance* objects\n */\n getEntriesByName: function getEntriesByName(name, type) {\n return this._perf.getEntriesByName(name, type);\n },\n\n /**\n * The timeOrigin property from the appropriate performance object.\n * Used to ensure that timestamps from the add-on code and the content code\n * are comparable.\n *\n * @note If this is called from a context without a window\n * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n * window, which appears to be the first created window (and thus\n * timeOrigin) in the browser. Note also, however, there is also a private\n * hidden window, presumably for private browsing, which appears to be\n * created dynamically later. Exactly how/when that shows up needs to be\n * investigated.\n *\n * @return {Number} A double of milliseconds with a precision of 0.5us.\n */\n get timeOrigin() {\n return this._perf.timeOrigin;\n },\n\n /**\n * Returns the \"absolute\" version of performance.now(), i.e. one that\n * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n * be comparable across both chrome and content.\n *\n * @return {Number}\n */\n absNow: function absNow() {\n return this.timeOrigin + this._perf.now();\n },\n\n /**\n * This returns the absolute startTime from the most recent performance.mark()\n * with the given name.\n *\n * @param {String} name the name to lookup the start time for\n *\n * @return {Number} the returned start time, as a DOMHighResTimeStamp\n *\n * @throws {Error} \"No Marks with the name ...\" if none are available\n *\n * @note Always surround calls to this by try/catch. Otherwise your code\n * may fail when the `privacy.resistFingerprinting` pref is true. When\n * this pref is set, all attempts to get marks will likely fail, which will\n * cause this method to throw.\n *\n * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n * for more info.\n */\n getMostRecentAbsMarkStartByName(name) {\n let entries = this.getEntriesByName(name, \"mark\");\n\n if (!entries.length) {\n throw new Error(`No marks with the name ${name}`);\n }\n\n let mostRecentEntry = entries[entries.length - 1];\n return this._perf.timeOrigin + mostRecentEntry.startTime;\n }\n};\n\nthis.perfService = new _PerfService();\nthis.EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/PerfService.jsm","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(\n \n, document.getElementById(\"root\"));\n\naddSnippetsSubscriber(store);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/activity-stream.jsx","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n * the same interface as a Map, but is optionally backed by\n * indexedDB for persistent storage.\n * Call .connect() to open a database connection and restore any\n * previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n constructor(dispatch) {\n super();\n this._db = null;\n this._dispatch = dispatch;\n }\n\n set(key, value) {\n super.set(key, value);\n return this._dbTransaction(db => db.put(value, key));\n }\n\n delete(key) {\n super.delete(key);\n return this._dbTransaction(db => db.delete(key));\n }\n\n clear() {\n super.clear();\n return this._dbTransaction(db => db.clear());\n }\n\n get blockList() {\n return this.get(\"blockList\") || [];\n }\n\n /**\n * blockSnippetById - Blocks a snippet given an id\n *\n * @param {str|int} id The id of the snippet\n * @return {Promise} Resolves when the id has been written to indexedDB,\n * or immediately if the snippetMap is not connected\n */\n async blockSnippetById(id) {\n if (!id) {\n return;\n }\n const {blockList} = this;\n if (!blockList.includes(id)) {\n blockList.push(id);\n this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: blockList}));\n await this.set(\"blockList\", blockList);\n }\n }\n\n disableOnboarding() {\n this._dispatch(ac.AlsoToMain({type: at.DISABLE_ONBOARDING}));\n }\n\n showFirefoxAccounts() {\n this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n }\n\n /**\n * connect - Attaches an indexedDB back-end to the Map so that any set values\n * are also cached in a store. It also restores any existing values\n * that are already stored in the indexedDB store.\n *\n * @return {type} description\n */\n async connect() {\n // Open the connection\n const db = await this._openDB();\n\n // Restore any existing values\n await this._restoreFromDb(db);\n\n // Attach a reference to the db\n this._db = db;\n }\n\n /**\n * _dbTransaction - Returns a db transaction wrapped with the given modifier\n * function as a Promise. If the db has not been connected,\n * it resolves immediately.\n *\n * @param {func} modifier A function to call with the transaction\n * @return {obj} A Promise that resolves when the transaction has\n * completed or errored\n */\n _dbTransaction(modifier) {\n if (!this._db) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const transaction = modifier(\n this._db\n .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n );\n transaction.onsuccess = event => resolve();\n\n /* istanbul ignore next */\n transaction.onerror = event => reject(transaction.error);\n });\n }\n\n _openDB() {\n return new Promise((resolve, reject) => {\n const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n /* istanbul ignore next */\n openRequest.onerror = event => {\n // Try to delete the old database so that we can start this process over\n // next time.\n indexedDB.deleteDatabase(DATABASE_NAME);\n reject(event);\n };\n\n openRequest.onupgradeneeded = event => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n }\n };\n\n openRequest.onsuccess = event => {\n let db = event.target.result;\n\n /* istanbul ignore next */\n db.onerror = err => console.error(err); // eslint-disable-line no-console\n /* istanbul ignore next */\n db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n resolve(db);\n };\n });\n }\n\n _restoreFromDb(db) {\n return new Promise((resolve, reject) => {\n let cursorRequest;\n try {\n cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n } catch (err) {\n // istanbul ignore next\n reject(err);\n // istanbul ignore next\n return;\n }\n\n /* istanbul ignore next */\n cursorRequest.onerror = event => reject(event);\n\n cursorRequest.onsuccess = event => {\n let cursor = event.target.result;\n // Populate the cache from the persistent storage.\n if (cursor) {\n this.set(cursor.key, cursor.value);\n cursor.continue();\n } else {\n // We are done.\n resolve();\n }\n };\n });\n }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n * remote location, or else default snippets if the remote\n * snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n constructor(dispatch) {\n // Initialize the Snippets Map and attaches it to a global so that\n // the snippet payload can interact with it.\n global.gSnippetsMap = new SnippetsMap(dispatch);\n this._onAction = this._onAction.bind(this);\n }\n\n get snippetsMap() {\n return global.gSnippetsMap;\n }\n\n async _refreshSnippets() {\n // Check if the cached version of of the snippets in snippetsMap. If it's too\n // old, blow away the entire snippetsMap.\n const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n if (cachedVersion !== this.appData.version) {\n this.snippetsMap.clear();\n }\n\n // Has enough time passed for us to require an update?\n const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n if (needsUpdate && this.appData.snippetsURL) {\n this.snippetsMap.set(\"snippets-last-update\", Date.now());\n try {\n const response = await fetch(this.appData.snippetsURL);\n if (response.status === 200) {\n const payload = await response.text();\n\n this.snippetsMap.set(\"snippets\", payload);\n this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n _noSnippetFallback() {\n // TODO\n }\n\n _forceOnboardingVisibility(shouldBeVisible) {\n const onboardingEl = document.getElementById(\"onboarding-notification-bar\");\n\n if (onboardingEl) {\n onboardingEl.style.display = shouldBeVisible ? \"\" : \"none\";\n }\n }\n\n _showRemoteSnippets() {\n const snippetsEl = document.getElementById(this.elementId);\n const payload = this.snippetsMap.get(\"snippets\");\n\n if (!snippetsEl) {\n throw new Error(`No element was found with id '${this.elementId}'.`);\n }\n\n // This could happen if fetching failed\n if (!payload) {\n throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n }\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Snippet payload was incorrectly formatted\");\n }\n\n // Note that injecting snippets can throw if they're invalid XML.\n // eslint-disable-next-line no-unsanitized/property\n snippetsEl.innerHTML = payload;\n\n // Scripts injected by innerHTML are inactive, so we have to relocate them\n // through DOM manipulation to activate their contents.\n for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n const relocatedScript = document.createElement(\"script\");\n relocatedScript.text = scriptEl.text;\n scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n }\n }\n\n _onAction(msg) {\n if (msg.data.type === at.SNIPPET_BLOCKED) {\n this.snippetsMap.set(\"blockList\", msg.data.data);\n document.getElementById(\"snippets-container\").style.display = \"none\";\n }\n }\n\n /**\n * init - Fetch the snippet payload and show snippets\n *\n * @param {obj} options\n * @param {str} options.appData.snippetsURL The URL from which we fetch snippets\n * @param {int} options.appData.version The current snippets version\n * @param {str} options.elementId The id of the element in which to inject snippets\n * @param {bool} options.connect Should gSnippetsMap connect to indexedDB?\n */\n async init(options) {\n Object.assign(this, {\n appData: {},\n elementId: \"snippets\",\n connect: true\n }, options);\n\n // Add listener so we know when snippets are blocked on other pages\n if (global.addMessageListener) {\n global.addMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n\n // TODO: Requires enabling indexedDB on newtab\n // Restore the snippets map from indexedDB\n if (this.connect) {\n try {\n await this.snippetsMap.connect();\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n\n // Cache app data values so they can be accessible from gSnippetsMap\n for (const key of Object.keys(this.appData)) {\n this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n }\n\n // Refresh snippets, if enough time has passed.\n await this._refreshSnippets();\n\n // Try showing remote snippets, falling back to defaults if necessary.\n try {\n this._showRemoteSnippets();\n } catch (e) {\n this._noSnippetFallback(e);\n }\n\n window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n this._forceOnboardingVisibility(true);\n this.initialized = true;\n }\n\n uninit() {\n window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n this._forceOnboardingVisibility(false);\n if (global.removeMessageListener) {\n global.removeMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n this.initialized = false;\n }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n * when the store has received the appropriate\n * Snippet data.\n *\n * @param {obj} store The redux store\n * @return {obj} Returns the snippets instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n const snippets = new SnippetsProvider(store.dispatch);\n\n let initializing = false;\n\n store.subscribe(async () => {\n const state = store.getState();\n // state.Prefs.values[\"feeds.snippets\"]: Should snippets be shown?\n // state.Snippets.initialized Is the snippets data initialized?\n // snippets.initialized: Is SnippetsProvider currently initialised?\n if (state.Prefs.values[\"feeds.snippets\"] &&\n !state.Prefs.values.disableSnippets &&\n state.Snippets.initialized &&\n !snippets.initialized &&\n // Don't call init multiple times\n !initializing\n ) {\n initializing = true;\n await snippets.init({appData: state.Snippets});\n initializing = false;\n } else if (\n (state.Prefs.values[\"feeds.snippets\"] === false ||\n state.Prefs.values.disableSnippets === true) &&\n snippets.initialized\n ) {\n snippets.uninit();\n }\n });\n\n // These values are returned for testing purposes\n return snippets;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/snippets.js","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n * // Any sort of data needed to be passed around by actions.\n * payload: site.url,\n * // Primary button AlsoToMain action.\n * action: \"DELETE_HISTORY_URL\",\n * // Primary button USerEvent action.\n * userEvent: \"DELETE\",\n * // Array of locale ids to display.\n * message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n * // Text for primary button.\n * confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n constructor(props) {\n super(props);\n this._handleCancelBtn = this._handleCancelBtn.bind(this);\n this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n }\n\n _handleCancelBtn() {\n this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL}));\n }\n\n _handleConfirmBtn() {\n this.props.data.onConfirm.forEach(this.props.dispatch);\n }\n\n _renderModalMessage() {\n const message_body = this.props.data.body_string_id;\n\n if (!message_body) {\n return null;\n }\n\n return (\n {message_body.map(msg =>

    )}\n
    );\n }\n\n render() {\n if (!this.props.visible) {\n return null;\n }\n\n return (
    \n
    \n
    \n
    \n {this.props.data.icon && }\n {this._renderModalMessage()}\n
    \n
    \n \n \n
    \n
    \n
    );\n }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ConfirmDialog/ConfirmDialog.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1. User clicks \"No Thanks\"\n * 2. User completed the data import\n * 3. After 3 active days\n * 4. User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onLaunchTour = this.onLaunchTour.bind(this);\n this.onCancelTour = this.onCancelTour.bind(this);\n }\n\n onLaunchTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n }\n\n onCancelTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n }\n\n render() {\n return (
    \n

    \n \n \n

    \n
    \n \n \n
    \n
    );\n }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ManualMigration/ManualMigration.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nconst getFormattedMessage = message =>\n (typeof message === \"string\" ? {message} : );\n\nexport const PreferencesInput = props => (\n
    \n \n \n {props.descString &&

    \n {getFormattedMessage(props.descString)}\n

    }\n {React.Children.map(props.children,\n child =>
    {child}
    )}\n
    \n);\n\nexport class _PreferencesPane extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handlePrefChange = this.handlePrefChange.bind(this);\n this.handleSectionChange = this.handleSectionChange.bind(this);\n this.togglePane = this.togglePane.bind(this);\n this.onWrapperMount = this.onWrapperMount.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.PreferencesPane.visible !== this.props.PreferencesPane.visible) {\n // While the sidebar is open, listen for all document clicks.\n if (this.isSidebarOpen()) {\n document.addEventListener(\"click\", this.handleClickOutside);\n } else {\n document.removeEventListener(\"click\", this.handleClickOutside);\n }\n }\n }\n\n isSidebarOpen() {\n return this.props.PreferencesPane.visible;\n }\n\n handleClickOutside(event) {\n // if we are showing the sidebar and there is a click outside, close it.\n if (this.isSidebarOpen() && !this.wrapper.contains(event.target)) {\n this.togglePane();\n }\n }\n\n handlePrefChange({target: {name, checked}}) {\n let value = checked;\n if (name === \"topSitesRows\") {\n value = checked ? 2 : 1;\n }\n this.props.dispatch(ac.SetPref(name, value));\n }\n\n handleSectionChange({target}) {\n const id = target.name;\n const type = target.checked ? at.SECTION_ENABLE : at.SECTION_DISABLE;\n this.props.dispatch(ac.AlsoToMain({type, data: id}));\n }\n\n togglePane() {\n if (this.isSidebarOpen()) {\n this.props.dispatch({type: at.SETTINGS_CLOSE});\n this.props.dispatch(ac.UserEvent({event: \"CLOSE_NEWTAB_PREFS\"}));\n } else {\n this.props.dispatch({type: at.SETTINGS_OPEN});\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n }\n\n onWrapperMount(wrapper) {\n this.wrapper = wrapper;\n }\n\n render() {\n const {props} = this;\n const prefs = props.Prefs.values;\n const sections = props.Sections;\n const isVisible = this.isSidebarOpen();\n return (\n
    \n
    \n \n
    \n
    \n
    \n
    \n

    \n

    \n\n \n\n
    \n\n \n\n \n \n\n {sections\n .filter(section => !section.shouldHidePref)\n .map(({id, title, enabled, pref}) =>\n (\n\n {pref && pref.nestedPrefs && pref.nestedPrefs.map(nestedPref =>\n ()\n )}\n )\n )}\n {!prefs.disableSnippets &&
    }\n\n {!prefs.disableSnippets && }\n\n
    \n
    \n \n
    \n
    \n
    \n
    );\n }\n}\n\nexport const PreferencesPane = connect(state => ({\n Prefs: state.Prefs,\n PreferencesPane: state.PreferencesPane,\n Sections: state.Sections\n}))(injectIntl(_PreferencesPane));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/PreferencesPane/PreferencesPane.jsx","class _PrerenderData {\n constructor(options) {\n this.initialPrefs = options.initialPrefs;\n this.initialSections = options.initialSections;\n this._setValidation(options.validation);\n }\n\n get validation() {\n return this._validation;\n }\n\n set validation(value) {\n this._setValidation(value);\n }\n\n get invalidatingPrefs() {\n return this._invalidatingPrefs;\n }\n\n // This is needed so we can use it in the constructor\n _setValidation(value = []) {\n this._validation = value;\n this._invalidatingPrefs = value.reduce((result, next) => {\n if (typeof next === \"string\") {\n result.push(next);\n return result;\n } else if (next && next.oneOf) {\n return result.concat(next.oneOf);\n }\n throw new Error(\"Your validation configuration is not properly configured\");\n }, []);\n }\n\n arePrefsValid(getPref) {\n for (const prefs of this.validation) {\n // {oneOf: [\"foo\", \"bar\"]}\n if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n return false;\n\n // \"foo\"\n } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n return false;\n }\n }\n return true;\n }\n}\n\nthis.PrerenderData = new _PrerenderData({\n initialPrefs: {\n \"migrationExpired\": true,\n \"showTopSites\": true,\n \"showSearch\": true,\n \"topSitesRows\": 2,\n \"collapseTopSites\": false,\n \"section.highlights.collapsed\": false,\n \"section.topstories.collapsed\": false,\n \"feeds.section.topstories\": true,\n \"feeds.section.highlights\": true\n },\n // Prefs listed as invalidating will prevent the prerendered version\n // of AS from being used if their value is something other than what is listed\n // here. This is required because some preferences cause the page layout to be\n // too different for the prerendered version to be used. Unfortunately, this\n // will result in users who have modified some of their preferences not being\n // able to get the benefits of prerendering.\n validation: [\n \"showTopSites\",\n \"showSearch\",\n \"topSitesRows\",\n \"collapseTopSites\",\n \"section.highlights.collapsed\",\n \"section.topstories.collapsed\",\n // This means if either of these are set to their default values,\n // prerendering can be used.\n {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]}\n ],\n initialSections: [\n {\n enabled: true,\n icon: \"pocket\",\n id: \"topstories\",\n order: 1,\n title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}}\n },\n {\n enabled: true,\n id: \"highlights\",\n icon: \"highlights\",\n order: 2,\n title: {id: \"header_highlights\"}\n }\n ]\n});\n\nthis._PrerenderData = _PrerenderData;\nthis.EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/PrerenderData.jsm","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onInputMount = this.onInputMount.bind(this);\n }\n\n handleEvent(event) {\n // Also track search events with our own telemetry\n if (event.detail.type === \"Search\") {\n this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n }\n }\n\n onClick(event) {\n window.gContentSearchController.search(event);\n }\n\n componentWillUnmount() {\n delete window.gContentSearchController;\n }\n\n onInputMount(input) {\n if (input) {\n // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n // can add the appropriate telemetry probes for search. Without the correct\n // name, certain tests like browser_UsageTelemetry_content.js will fail\n // (See github ticket #2348 for more details)\n const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n // the search data and acts as context for the search request (See\n // nsISearchEngine.getSubmission). It is necessary so that search engine\n // plugins can correctly atribute referrals. (See github ticket #3321 for\n // more details)\n const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n // gContentSearchController needs to exist as a global so that tests for\n // the existing about:home can find it; and so it allows these tests to pass.\n // In the future, when activity stream is default about:home, this can be renamed\n window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n healthReportKey, searchSource);\n addEventListener(\"ContentSearchClient\", this);\n } else {\n window.gContentSearchController = null;\n removeEventListener(\"ContentSearchClient\", this);\n }\n }\n\n /*\n * Do not change the ID on the input field, as legacy newtab code\n * specifically looks for the id 'newtab-search-text' on input fields\n * in order to execute searches in various tests\n */\n render() {\n return (
    \n \n \n \n \n \n
    );\n }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Search/Search.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, IntlProvider} from \"react-intl\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PreferencesPane} from \"content-src/components/PreferencesPane/PreferencesPane\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\nexport class _Base extends React.PureComponent {\n componentWillMount() {\n const {App, locale} = this.props;\n this.sendNewTabRehydrated(App);\n addLocaleDataForReactIntl(locale);\n }\n\n componentDidMount() {\n // Request state AFTER the first render to ensure we don't cause the\n // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n // dispatched right after the store is ready.\n if (this.props.isPrerendered) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n }\n }\n\n componentWillUpdate({App}) {\n this.sendNewTabRehydrated(App);\n }\n\n // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n // data has been consumed e.g. for counting the number of tabs that\n // have rendered that data.\n sendNewTabRehydrated(App) {\n if (App && App.initialized && !this.renderNotified) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n this.renderNotified = true;\n }\n }\n\n render() {\n const {props} = this;\n const {App, locale, strings} = props;\n const {initialized} = App;\n\n if (!props.isPrerendered && !initialized) {\n return null;\n }\n\n return (\n \n \n \n );\n }\n}\n\nexport class BaseContent extends React.PureComponent {\n render() {\n const {props} = this;\n const {App} = props;\n const {initialized} = App;\n const prefs = props.Prefs.values;\n\n const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n\n const outerClassName = `outer-wrapper${shouldBeFixedToTop ? \" fixed-to-top\" : \"\"} ${prefs.enableWideLayout ? \"wide-layout-enabled\" : \"wide-layout-disabled\"}`;\n\n return (\n
    \n
    \n {prefs.showSearch &&\n \n \n }\n
    \n {!prefs.migrationExpired && }\n {prefs.showTopSites && }\n \n
    \n \n
    \n {initialized &&\n
    \n \n
    \n }\n
    );\n }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs}))(_Base);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Base/Base.jsx","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/constants.js","import {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW = 3;\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class Section extends React.PureComponent {\n _dispatchImpressionStats() {\n const {props} = this;\n const maxCards = 3 * props.maxRows;\n const cards = props.rows.slice(0, maxCards);\n\n if (this.needsImpressionStats(cards)) {\n props.dispatch(ac.ImpressionStats({\n source: props.eventSource,\n tiles: cards.map(link => ({id: link.guid}))\n }));\n this.impressionCardGuids = cards.map(link => link.guid);\n }\n }\n\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionStatsOrAddListener() {\n const {props} = this;\n\n if (!props.shouldSendImpressionStats || !props.dispatch) {\n return;\n }\n\n if (props.document.visibilityState === VISIBLE) {\n this._dispatchImpressionStats();\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becoems visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (props.document.visibilityState === VISIBLE) {\n const {id, Prefs} = this.props;\n const isCollapsed = Prefs.values[`section.${id}.collapsed`];\n if (!isCollapsed) {\n this._dispatchImpressionStats();\n }\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentDidMount() {\n const {id, rows, Prefs} = this.props;\n const isCollapsed = Prefs.values[`section.${id}.collapsed`];\n if (rows.length && !isCollapsed) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {props} = this;\n const {id, Prefs} = props;\n const isCollapsedPref = `section.${id}.collapsed`;\n const isCollapsed = Prefs.values[isCollapsedPref];\n const wasCollapsed = prevProps.Prefs.values[isCollapsedPref];\n if (\n // Don't send impression stats for the empty state\n props.rows.length &&\n (\n // We only want to send impression stats if the content of the cards has changed\n // and the section is not collapsed...\n (props.rows !== prevProps.rows && !isCollapsed) ||\n // or if we are expanding a section that was collapsed.\n (wasCollapsed && !isCollapsed)\n )\n ) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n needsImpressionStats(cards) {\n if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n return true;\n }\n\n for (let i = 0; i < cards.length; i++) {\n if (cards[i].guid !== this.impressionCardGuids[i]) {\n return true;\n }\n }\n\n return false;\n }\n\n numberOfPlaceholders(items) {\n if (items === 0) {\n return CARDS_PER_ROW;\n }\n const remainder = items % CARDS_PER_ROW;\n if (remainder === 0) {\n return 0;\n }\n return CARDS_PER_ROW - remainder;\n }\n\n render() {\n const {\n id, eventSource, title, icon, rows,\n infoOption, emptyState, dispatch, maxRows,\n contextMenuOptions, initialized, disclaimer\n } = this.props;\n const maxCards = CARDS_PER_ROW * maxRows;\n\n // Show topics only for top stories and if it's not initialized yet (so\n // content doesn't shift when it is loaded) or has loaded with topics\n const shouldShowTopics = (id === \"topstories\" &&\n (!this.props.topics || this.props.topics.length > 0));\n\n const realRows = rows.slice(0, maxCards);\n const placeholders = this.numberOfPlaceholders(realRows.length);\n\n // The empty state should only be shown after we have initialized and there is no content.\n // Otherwise, we should show placeholders.\n const shouldShowEmptyState = initialized && !rows.length;\n\n //
    <-- React component\n //
    <-- HTML5 element\n return (\n \n\n {!shouldShowEmptyState && (
      \n {realRows.map((link, index) => link &&\n )}\n {placeholders > 0 && [...new Array(placeholders)].map((_, i) => )}\n
    )}\n {shouldShowEmptyState &&\n
    \n
    \n {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n :\n }\n

    \n {getFormattedMessage(emptyState.message)}\n

    \n
    \n
    }\n {shouldShowTopics && }\n
    \n
    );\n }\n}\n\nSection.defaultProps = {\n document: global.document,\n rows: [],\n emptyState: {},\n title: \"\"\n};\n\nexport const SectionIntl = injectIntl(Section);\n\nexport class _Sections extends React.PureComponent {\n render() {\n const sections = this.props.Sections;\n return (\n
    \n {sections\n .filter(section => section.enabled)\n .map(section => )}\n
    \n );\n }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Sections/Sections.jsx","export const cardContextTypes = {\n history: {\n intlID: \"type_label_visited\",\n icon: \"historyItem\"\n },\n bookmark: {\n intlID: \"type_label_bookmarked\",\n icon: \"bookmark-added\"\n },\n trending: {\n intlID: \"type_label_recommended\",\n icon: \"trending\"\n },\n now: {\n intlID: \"type_label_now\",\n icon: \"now\"\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Card/types.js","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {cardContextTypes} from \"./types\";\nimport {FormattedMessage} from \"react-intl\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class Card extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n activeCard: null,\n imageLoaded: false,\n showContextMenu: false\n };\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.onLinkClick = this.onLinkClick.bind(this);\n }\n\n /**\n * Helper to conditionally load an image and update state when it loads.\n */\n async maybeLoadImage() {\n // No need to load if it's already loaded or no image\n const {image} = this.props.link;\n if (!this.state.imageLoaded && image) {\n // Initialize a promise to share a load across multiple card updates\n if (!gImageLoading.has(image)) {\n const loaderPromise = new Promise((resolve, reject) => {\n const loader = new Image();\n loader.addEventListener(\"load\", resolve);\n loader.addEventListener(\"error\", reject);\n loader.src = image;\n });\n\n // Save and remove the promise only while it's pending\n gImageLoading.set(image, loaderPromise);\n loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(image)).catch();\n }\n\n // Wait for the image whether just started loading or reused promise\n await gImageLoading.get(image);\n\n // Only update state if we're still waiting to load the original image\n if (this.props.link.image === image && !this.state.imageLoaded) {\n this.setState({imageLoaded: true});\n }\n }\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({\n activeCard: this.props.index,\n showContextMenu: true\n });\n }\n\n onLinkClick(event) {\n event.preventDefault();\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n this.props.dispatch(ac.AlsoToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n }));\n\n if (this.props.isWebExtension) {\n this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n source: this.props.eventSource,\n url: this.props.link.url,\n action_position: this.props.index\n }));\n } else {\n this.props.dispatch(ac.UserEvent({\n event: \"CLICK\",\n source: this.props.eventSource,\n action_position: this.props.index\n }));\n\n if (this.props.shouldSendImpressionStats) {\n this.props.dispatch(ac.ImpressionStats({\n source: this.props.eventSource,\n click: 0,\n tiles: [{id: this.props.link.guid, pos: this.props.index}]\n }));\n }\n }\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n componentDidMount() {\n this.maybeLoadImage();\n }\n\n componentDidUpdate() {\n this.maybeLoadImage();\n }\n\n componentWillReceiveProps(nextProps) {\n // Clear the image state if changing images\n if (nextProps.link.image !== this.props.link.image) {\n this.setState({imageLoaded: false});\n }\n }\n\n render() {\n const {index, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n const {props} = this;\n const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n // Display \"now\" as \"trending\" until we have new strings #3402\n const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n const hasImage = link.image || link.hasImage;\n const imageStyle = {backgroundImage: link.image ? `url(${link.image})` : \"none\"};\n\n return (
  • \n \n
  • );\n }\n}\nCard.defaultProps = {link: {}};\n\nexport const PlaceholderCard = () => ;\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Card/Card.jsx","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n render() {\n const {url, name} = this.props;\n return (
  • {name}
  • );\n }\n}\n\nexport class Topics extends React.PureComponent {\n render() {\n const {topics, read_more_endpoint} = this.props;\n return (\n
    \n \n
      {topics && topics.map(t => )}
    \n\n {read_more_endpoint && \n \n }\n
    \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Topics/Topics.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n const countTopSitesTypes = (acc, link) => {\n if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n acc.tippytop++;\n } else if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n acc.rich_icon++;\n } else if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n acc.screenshot_with_icon++;\n } else if (link.screenshot) {\n acc.screenshot++;\n } else {\n acc.no_image++;\n }\n\n return acc;\n };\n\n return topSites.reduce(countTopSitesTypes, {\n \"screenshot_with_icon\": 0,\n \"screenshot\": 0,\n \"tippytop\": 0,\n \"rich_icon\": 0,\n \"no_image\": 0\n });\n}\n\nexport class _TopSites extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onAddButtonClick = this.onAddButtonClick.bind(this);\n this.onFormClose = this.onFormClose.bind(this);\n }\n\n /**\n * Dispatch session statistics about the quality of TopSites icons and pinned count.\n */\n _dispatchTopSitesStats() {\n const topSites = this._getVisibleTopSites();\n const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n // Dispatch telemetry event with the count of TopSites images types.\n this.props.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned}\n }));\n }\n\n /**\n * Return the TopSites that are visible based on prefs and window width.\n */\n _getVisibleTopSites() {\n // We hide 2 sites per row when not in the wide layout.\n let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n // $break-point-widest = 1072px (from _variables.scss)\n if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n sitesPerRow -= 2;\n }\n return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n }\n\n componentDidUpdate() {\n this._dispatchTopSitesStats();\n }\n\n componentDidMount() {\n this._dispatchTopSitesStats();\n }\n\n onAddButtonClick() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_ADD_FORM_OPEN\"\n }));\n // Negative index will prepend the TopSite at the beginning of the list\n this.props.dispatch({type: at.TOP_SITES_EDIT, data: {index: -1}});\n }\n\n onFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT_CLOSE\"\n }));\n this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n }\n\n render() {\n const {props} = this;\n const infoOption = {\n header: {id: \"settings_pane_topsites_header\"},\n body: {id: \"settings_pane_topsites_body\"}\n };\n const {editForm} = props.TopSites;\n\n return (\n } infoOption={infoOption} prefName=\"collapseTopSites\" Prefs={props.Prefs} dispatch={props.dispatch}>\n \n
    \n
    \n \n \n \n
    \n {editForm &&\n
    \n
    \n
    \n \n
    \n
    \n }\n
    \n \n );\n }\n}\n\nexport const TopSites = connect(state => ({\n TopSites: state.TopSites,\n Prefs: state.Prefs,\n TopSitesRows: state.Prefs.values.topSitesRows\n}))(injectIntl(_TopSites));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSites.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\n\nexport class TopSiteForm extends React.PureComponent {\n constructor(props) {\n super(props);\n const {site} = props;\n this.state = {\n label: site ? (site.label || site.hostname) : \"\",\n url: site ? site.url : \"\",\n validationError: false\n };\n this.onLabelChange = this.onLabelChange.bind(this);\n this.onUrlChange = this.onUrlChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n this.onUrlInputMount = this.onUrlInputMount.bind(this);\n }\n\n onLabelChange(event) {\n this.resetValidation();\n this.setState({\"label\": event.target.value});\n }\n\n onUrlChange(event) {\n this.resetValidation();\n this.setState({\"url\": event.target.value});\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onDoneButtonClick(ev) {\n ev.preventDefault();\n\n if (this.validateForm()) {\n const site = {url: this.cleanUrl()};\n const {index} = this.props;\n if (this.state.label !== \"\") {\n site.label = this.state.label;\n }\n\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site, index}\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT\",\n action_position: index\n }));\n\n this.props.onClose();\n }\n }\n\n cleanUrl() {\n let {url} = this.state;\n // If we are missing a protocol, prepend http://\n if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n url = `http://${url}`;\n }\n return url;\n }\n\n resetValidation() {\n if (this.state.validationError) {\n this.setState({validationError: false});\n }\n }\n\n validateUrl() {\n try {\n return !!new URL(this.cleanUrl());\n } catch (e) {\n return false;\n }\n }\n\n validateForm() {\n this.resetValidation();\n // Only the URL is required and must be valid.\n if (!this.state.url || !this.validateUrl()) {\n this.setState({validationError: true});\n this.inputUrl.focus();\n return false;\n }\n return true;\n }\n\n onUrlInputMount(input) {\n this.inputUrl = input;\n }\n\n render() {\n // For UI purposes, editing without an existing link is \"add\"\n const showAsAdd = !this.props.site;\n\n return (\n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n \n {this.state.validationError &&\n \n }\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n );\n }\n}\n\nTopSiteForm.defaultProps = {\n TopSite: null,\n index: -1\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSiteForm.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n MIN_CORNER_FAVICON_SIZE,\n MIN_RICH_FAVICON_SIZE,\n TOP_SITES_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SOURCE\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onDragEvent = this.onDragEvent.bind(this);\n }\n\n /*\n * Helper to determine whether the drop zone should allow a drop. We only allow\n * dropping top sites for now.\n */\n _allowDrop(e) {\n return e.dataTransfer.types.includes(\"text/topsite-index\");\n }\n\n onDragEvent(event) {\n switch (event.type) {\n case \"click\":\n // Stop any link clicks if we started any dragging\n if (this.dragged) {\n event.preventDefault();\n }\n break;\n case \"dragstart\":\n this.dragged = true;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n event.target.blur();\n this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n break;\n case \"dragend\":\n this.props.onDragEvent(event);\n break;\n case \"dragenter\":\n case \"dragover\":\n case \"drop\":\n if (this._allowDrop(event)) {\n event.preventDefault();\n this.props.onDragEvent(event, this.props.index);\n }\n break;\n case \"mousedown\":\n // Reset at the first mouse event of a potential drag\n this.dragged = false;\n break;\n }\n }\n\n render() {\n const {children, className, isDraggable, link, onClick, title} = this.props;\n const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}`;\n const {tippyTopIcon, faviconSize} = link;\n const [letterFallback] = title;\n let imageClassName;\n let imageStyle;\n let showSmallFavicon = false;\n let smallFaviconStyle;\n let smallFaviconFallback;\n if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n // styles and class names for top sites with rich icons\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon || link.favicon})`\n };\n } else {\n // styles and class names for top sites with screenshot + small icon in top left corner\n imageClassName = `screenshot${link.screenshot ? \" active\" : \"\"}`;\n imageStyle = {backgroundImage: link.screenshot ? `url(${link.screenshot})` : \"none\"};\n\n // only show a favicon in top left if it's greater than 16x16\n if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n showSmallFavicon = true;\n smallFaviconStyle = {backgroundImage: `url(${link.favicon})`};\n } else if (link.screenshot) {\n // Don't show a small favicon if there is no screenshot, because that\n // would result in two fallback icons\n showSmallFavicon = true;\n smallFaviconFallback = true;\n }\n }\n let draggableProps = {};\n if (isDraggable) {\n draggableProps = {\n onClick: this.onDragEvent,\n onDragEnd: this.onDragEvent,\n onDragStart: this.onDragEvent,\n onMouseDown: this.onDragEvent\n };\n }\n return (
  • \n
  • );\n }\n}\nTopSiteLink.defaultProps = {\n title: \"\",\n link: {},\n isDraggable: true\n};\n\nexport class TopSite extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {showContextMenu: false};\n this.onLinkClick = this.onLinkClick.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n }\n\n userEvent(event) {\n this.props.dispatch(ac.UserEvent({\n event,\n source: TOP_SITES_SOURCE,\n action_position: this.props.index\n }));\n }\n\n onLinkClick(ev) {\n this.userEvent(\"CLICK\");\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.props.onActivate(this.props.index);\n this.setState({showContextMenu: true});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const {props} = this;\n const {link} = props;\n const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n const title = link.label || link.hostname;\n return (\n
    \n \n \n
    \n
    );\n }\n}\nTopSite.defaultProps = {\n link: {},\n onActivate() {}\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditButtonClick = this.onEditButtonClick.bind(this);\n }\n\n onEditButtonClick() {\n this.props.dispatch(\n {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n }\n\n render() {\n return (\n

    Kakube maloyo

    Lami tam obedo Pocket

    Lok macuk gi lamal:

      Wiye madito

      +

      Kakube maloyo

      Lami tam obedo Pocket

      Lok macuk gi lamal:

        Wiye madito

        diff --git a/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js index a5a2157e8053..167f26b5a1dc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ityeko weng. Rot doki lacen pi lok madito mapol ki bot {provider}. Pe itwero kuro? Yer lok macuke lamal me nongo lok mabeco mapol ki i but kakube.", "manual_migration_explanation2": "Tem Firefox ki alamabuk, gin mukato ki mung me donyo ki ii layeny mukene.", "manual_migration_cancel_button": "Pe Apwoyo", - "manual_migration_import_button": "Kel kombedi" + "manual_migration_import_button": "Kel kombedi", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html index 5c5f4a6645f9..45b56ea38578 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

        المواقع الأكثر زيارة

        ينصح به Pocket

        المواضيع الشائعة:

          أهم الأحداث

          +

          المواقع الأكثر زيارة

          ينصح به Pocket

          المواضيع الشائعة:

            أهم الأحداث

            diff --git a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js index f29ba945cc40..473e5b5fbd84 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js @@ -10,7 +10,7 @@ window.gActivityStreamStrings = { "header_recommended_by": "ينصح به {provider}", "header_bookmarks_placeholder": "لا علامات لديك بعد.", "header_stories_from": "من", - "context_menu_button_sr": "Open context menu for {title}", + "context_menu_button_sr": "افتح قائمة {title} السياقية", "type_label_visited": "مُزارة", "type_label_bookmarked": "معلّمة", "type_label_synced": "مُزامنة من جهاز آخر", @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "حرّر هذا الموقع", "edit_topsites_dismiss_button": "احذف هذا الموقع", "edit_topsites_add_button": "أضِفْ", - "edit_topsites_add_button_tooltip": "Add Top Site", + "edit_topsites_add_button_tooltip": "أضف موقعًا شائعًا", "topsites_form_add_header": "موقع شائع جديد", "topsites_form_edit_header": "حرّر الموقع الشائع", "topsites_form_title_placeholder": "أدخل عنوانًا", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "لا جديد. تحقق لاحقًا للحصول على مزيد من أهم الأخبار من {provider}. لا يمكنك الانتظار؟ اختر موضوعًا شائعًا للعثور على المزيد من القصص الرائعة من جميع أنحاء الوِب.", "manual_migration_explanation2": "جرب فَيَرفُكس مع العلامات، و التأريخ، و كلمات السر من متصفح آخر.", "manual_migration_cancel_button": "لا شكرًا", - "manual_migration_import_button": "استورد الآن" + "manual_migration_import_button": "استورد الآن", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html index adf154b53ce4..f1de95c07453 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

            Más visitaos

            Recomendáu por Pocket

            Temes populares:

              Destacaos

              +

              Más visitaos

              Recomendáu por Pocket

              Temes populares:

                Destacaos

                diff --git a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js index 96dacf771d79..1e09d8dcbeb9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Prueba Firefox colos marcadores, hestorial y contraseñes d'otru restolador.", "manual_migration_cancel_button": "Non, gracies", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html index 71a76c266f5e..d718c27a66e6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                Qabaqcıl Saytlar

                Pocket məsləhət görür

                Məşhur Mövzular:

                  Seçilmişlər

                  +

                  Qabaqcıl Saytlar

                  Pocket məsləhət görür

                  Məşhur Mövzular:

                    Seçilmişlər

                    diff --git a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js index ed3d804b8e57..42a0b5436091 100644 --- a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Hamısını oxudunuz. Yeni {provider} məqalələri üçün daha sonra təkrar yoxlayın. Gözləyə bilmirsiz? Məşhur mövzu seçərək internetdən daha çox gözəl məqalələr tapın.", "manual_migration_explanation2": "Firefox səyyahını digər səyyahlardan olan əlfəcin, tarixçə və parollar ilə yoxlayın.", "manual_migration_cancel_button": "Xeyr, Təşəkkürlər", - "manual_migration_import_button": "İndi idxal et" + "manual_migration_import_button": "İndi idxal et", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html index ab581f40cdfa..8c55f735e8f6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                    Папулярныя сайты

                    Рэкамендавана Pocket

                    Папулярныя тэмы:

                      Выбранае

                      +

                      Папулярныя сайты

                      Рэкамендавана Pocket

                      Папулярныя тэмы:

                        Выбранае

                        diff --git a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js index de6c0a2154c9..84c976f21a83 100644 --- a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Гатова. Праверце пазней, каб убачыць больш матэрыялаў ад {provider}. Не жадаеце чакаць? Выберыце папулярную тэму, каб знайсці больш цікавых матэрыялаў з усяго Інтэрнэту.", "manual_migration_explanation2": "Паспрабуйце Firefox з закладкамі, гісторыяй і паролямі з іншага браўзера.", "manual_migration_cancel_button": "Не, дзякуй", - "manual_migration_import_button": "Імпартаваць зараз" + "manual_migration_import_button": "Імпартаваць зараз", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html index 06616bca876c..1334f0149666 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                        Често посещавани

                        Препоръчано от Pocket

                        Популярни теми:

                          Акценти

                          +

                          Често посещавани

                          Препоръчано от Pocket

                          Популярни теми:

                            Акценти

                            diff --git a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js index f2da3753bf7d..b03014f9e145 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Разгледахте всичко. Проверете по-късно за повече истории от {provider}. Нямате търпение? Изберете популярна тема, за да откриете повече истории из цялата Мрежа.", "manual_migration_explanation2": "Опитайте Firefox с отметките, историята и паролите от друг четец.", "manual_migration_cancel_button": "Не, благодаря", - "manual_migration_import_button": "Внасяне" + "manual_migration_import_button": "Внасяне", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html index 4ca874307090..e78e1f3699a1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                            শীর্ঘ সাইট

                            Pocket দ্বারা সুপারিশকৃত

                            জনপ্রিয় বিষয়:

                              হাইলাইটস

                              +

                              শীর্ঘ সাইট

                              Pocket দ্বারা সুপারিশকৃত

                              জনপ্রিয় বিষয়:

                                হাইলাইটস

                                diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js index f997503331b5..33e36bd87be1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন" + "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html index dbe87d8bbed4..1212089ea788 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                শীর্ষ সাইটগুলি

                                Pocket দ্বারা সুপারিশকৃত

                                জনপ্রিয় বিষয়:

                                  হাইলাইটস

                                  +

                                  শীর্ষ সাইটগুলি

                                  Pocket দ্বারা সুপারিশকৃত

                                  জনপ্রিয় বিষয়:

                                    হাইলাইটস

                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js index 4827249b28b5..ecd084886f35 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন" + "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html index 2a9a48cf149f..e7e9874954f4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                    Lec'hiennoù pennañ

                                    Erbedet gant Pocket

                                    Danvezioù brudet:

                                      Mareoù pouezus

                                      +

                                      Lec'hiennoù pennañ

                                      Erbedet gant Pocket

                                      Danvezioù brudet:

                                        Mareoù pouezus

                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js index 87f6303c631f..4d034aa5b49b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Aet oc'h betek penn. Distroit diwezhatoc'h evit muioc’h a istorioù digant {provider}. N’oc'h ket evit gortoz? Dibabit un danvez brudet evit klask muioc’h a bennadoù dedennus eus pep lec’h er web.", "manual_migration_explanation2": "Amprouit Firefox gant sinedoù, roll istor ha gerioù-tremen ur merdeer all.", "manual_migration_cancel_button": "N'am bo ket", - "manual_migration_import_button": "Emporzhiañ bremañ" + "manual_migration_import_button": "Emporzhiañ bremañ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html index 2ec670717798..be0b94dd6622 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                        Najposjećenije stranice

                                        Preporučeno od Pocket

                                        Popularne teme:

                                          Istaknuto

                                          +

                                          Najposjećenije stranice

                                          Preporučeno od Pocket

                                          Popularne teme:

                                            Istaknuto

                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js index 011b24c66ff1..35c87091ee8e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", "manual_migration_explanation2": "Probajte Firefox s zabilješkama, historijom i lozinkama iz drugog pretraživača.", "manual_migration_cancel_button": "Ne, hvala", - "manual_migration_import_button": "Uvezi sada" + "manual_migration_import_button": "Uvezi sada", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html index 594dd3a3fd0f..01cbe0ebc77c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                            Llocs principals

                                            Recomanat per Pocket

                                            Temes populars:

                                              Destacats

                                              +

                                              Llocs principals

                                              Recomanat per Pocket

                                              Temes populars:

                                                Destacats

                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js index 2fbcf7c0015c..5767ffa6c7da 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ja esteu al dia. Torneu més tard per veure més articles populars de {provider}. No podeu esperar? Trieu un tema popular per descobrir els articles més interessants de tot el web.", "manual_migration_explanation2": "Proveu el Firefox amb les adreces d'interès, l'historial i les contrasenyes d'un altre navegador.", "manual_migration_cancel_button": "No, gràcies", - "manual_migration_import_button": "Importa-ho ara" + "manual_migration_import_button": "Importa-ho ara", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html index b666c9f1f8f3..fcbe15acbb52 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                Utziläj taq Ruxaq K'amaya'l

                                                Chilab'en ruma Pocket

                                                Nima'q taq Na'oj:

                                                  Taq k'ewachinïk

                                                  +

                                                  Utziläj taq Ruxaq K'amaya'l

                                                  Chilab'en ruma Pocket

                                                  Nima'q taq Na'oj:

                                                    Taq k'ewachinïk

                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js index 744997be6ebb..4a46e5f49f71 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Xaq'i'. Katzolin chik pe richin ye'ak'ül ri utziläj taq rub'anob'al {provider}. ¿La man noyob'en ta? Tacha' jun ütz na'oj richin nawïl ch'aqa' chik taq b'anob'äl e k'o chi rij ri ajk'amaya'l.", "manual_migration_explanation2": "Tatojtob'ej Firefox kik'in ri taq ruyaketal, runatab'äl chuqa' taq ewan rutzij jun chik okik'amaya'l.", "manual_migration_cancel_button": "Mani matyox", - "manual_migration_import_button": "Tijik' pe" + "manual_migration_import_button": "Tijik' pe", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html index daa9c83e579e..76fa8c14ac7b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                    Top stránky

                                                    Doporučení ze služby Pocket

                                                    Populární témata:

                                                      Vybrané

                                                      +

                                                      Top stránky

                                                      Doporučení ze služby Pocket

                                                      Populární témata:

                                                        Vybrané

                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js index af679f66a7f7..4a7ba6c888e7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js @@ -32,9 +32,9 @@ window.gActivityStreamStrings = { "confirm_history_delete_notice_p2": "Tuto akci nelze vzít zpět.", "menu_action_save_to_pocket": "Uložit do služby Pocket", "search_for_something_with": "Vyhledat {search_term} s:", - "search_button": "Hledat", + "search_button": "Vyhledat", "search_header": "Vyhledat pomocí {search_engine_name}", - "search_web_placeholder": "Hledat na webu", + "search_web_placeholder": "Vyhledat na webu", "search_settings": "Změnit nastavení vyhledávání", "section_info_option": "Informace", "section_info_send_feedback": "Zpětná vazba", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Už jste všechno přečetli. Další příběhy ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké příběhy z celého webu.", "manual_migration_explanation2": "Vyzkoušejte Firefox se záložkami, historií a hesly z jiného vašeho prohlížeče.", "manual_migration_cancel_button": "Ne, děkuji", - "manual_migration_import_button": "Importovat nyní" + "manual_migration_import_button": "Importovat nyní", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html index 866001a7eb01..b550d753191d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                        Hoff Wefannau

                                                        Argymhellwyd gan Pocket

                                                        Pynciau Poblogaidd:

                                                          Goreuon

                                                          +

                                                          Hoff Wefannau

                                                          Argymhellwyd gan Pocket

                                                          Pynciau Poblogaidd:

                                                            Goreuon

                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js index 5ffbbf400f06..877a6e257df7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Rydych wedi dal i fynDewch nôl rhywbryd eto am fwy o'r straeon pwysicaf gan {provider}. Methu aros? Dewiswch bwnc poblogaidd i ganfod straeon da o ar draws y we. ", "manual_migration_explanation2": "Profwch Firefox gyda nodau tudalen, hanes a chyfrineiriau o borwr arall.", "manual_migration_cancel_button": "Dim Diolch", - "manual_migration_import_button": "Mewnforio Nawr" + "manual_migration_import_button": "Mewnforio Nawr", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html index 2e20542146eb..20a50a04ee9d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                            Mest besøgte websider

                                                            Anbefalet af Pocket

                                                            Populære emner:

                                                              Fremhævede

                                                              +

                                                              Mest besøgte websider

                                                              Anbefalet af Pocket

                                                              Populære emner:

                                                                Fremhævede

                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js index 9504be838021..a3e9e6c48cc9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Der er ikke flere nye historier. Kom tilbage senere for at se flere tophistorier fra {provider}. Kan du ikke vente? Vælg et populært emne og find flere spændende historier fra hele verden.", "manual_migration_explanation2": "Prøv Firefox med bogmærkerne, historikken og adgangskoderne fra en anden browser.", "manual_migration_cancel_button": "Nej tak", - "manual_migration_import_button": "Importer nu" + "manual_migration_import_button": "Importer nu", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html index 7ea300ae9cc8..d881892625eb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                Wichtige Seiten

                                                                Empfohlen von Pocket

                                                                Beliebte Themen:

                                                                  Überblick

                                                                  +

                                                                  Wichtige Seiten

                                                                  Empfohlen von Pocket

                                                                  Beliebte Themen:

                                                                    Überblick

                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js index f72bba7876f8..2b0332d048f1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Jetzt kennen Sie die Neuigkeiten. Schauen Sie später wieder vorbei, um neue Informationen von {provider} zu erhalten. Können Sie nicht warten? Wählen Sie ein beliebtes Thema und lesen Sie weitere interessante Geschichten aus dem Internet.", "manual_migration_explanation2": "Probieren Sie Firefox aus und importieren Sie die Lesezeichen, Chronik und Passwörter eines anderen Browsers.", "manual_migration_cancel_button": "Nein, danke", - "manual_migration_import_button": "Jetzt importieren" + "manual_migration_import_button": "Jetzt importieren", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html index 6d1c00faf2de..eaba676b3247 100644 --- a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                    Nejcesćej woglědane sedła

                                                                    Wót Pocket dopórucony

                                                                    Woblubowane temy:

                                                                      Wjerški

                                                                      +

                                                                      Nejcesćej woglědane sedła

                                                                      Wót Pocket dopórucony

                                                                      Woblubowane temy:

                                                                        Wjerški

                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js index 13f718652397..69654bb1dee4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To jo nachylu wšykno. Wrośćo se pózdźej wjelicnych tšojeńkow dla wót {provider}. Njamóžośo cakaś? Wubjeŕśo woblubowanu temu, aby dalšne wjelicne tšojeńka we webje namakał.", "manual_migration_explanation2": "Wopytajśo Firefox z cytanskimi znamjenjami, historiju a gronidłami z drugego wobglědowaka.", "manual_migration_cancel_button": "Ně, źěkujom se", - "manual_migration_import_button": "Něnto importěrowaś" + "manual_migration_import_button": "Něnto importěrowaś", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html index 2c14b5c97819..51cbc14f1f4e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                        Κορυφαίες ιστοσελίδες

                                                                        Προτεινόμενο από τον πάροχο Pocket

                                                                        Δημοφιλή θέματα:

                                                                          Κορυφαίες στιγμές

                                                                          +

                                                                          Κορυφαίες ιστοσελίδες

                                                                          Προτεινόμενο από τον πάροχο Pocket

                                                                          Δημοφιλή θέματα:

                                                                            Κορυφαίες στιγμές

                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js index 2dfc5bce643b..681ce4318084 100644 --- a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Δεν υπάρχει κάτι νεότερο. Ελέγξτε αργότερα για περισσότερες ιστορίες από τον πάροχο {provider}. Δεν μπορείτε να περιμένετε; Διαλέξτε κάποιο από τα δημοφιλή θέματα και ανακαλύψτε ενδιαφέρουσες ιστορίες από όλο τον Ιστό.", "manual_migration_explanation2": "Δοκιμάστε το Firefox με τους σελιδοδείκτες, το ιστορικό και τους κωδικούς πρόσβασης από ένα άλλο πρόγραμμα περιήγησης.", "manual_migration_cancel_button": "Όχι ευχαριστώ", - "manual_migration_import_button": "Εισαγωγή τώρα" + "manual_migration_import_button": "Εισαγωγή τώρα", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html index ccb0c8605e94..45ec68125e39 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                            Top Sites

                                                                            Recommended by Pocket

                                                                            Popular Topics:

                                                                              Highlights

                                                                              +

                                                                              Top Sites

                                                                              Recommended by Pocket

                                                                              Popular Topics:

                                                                                Highlights

                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js index f8fd16c0af44..613bf9027257 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now" + "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html index d663a948d4c0..0e999c083a28 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                Top Sites

                                                                                Recommended by Pocket

                                                                                Popular Topics:

                                                                                  Highlights

                                                                                  +

                                                                                  Top Sites

                                                                                  Recommended by Pocket

                                                                                  Popular Topics:

                                                                                    Highlights

                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js index bd378325eb67..6e63faffd579 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now" + "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html index 2b56de74518f..d252cd8bf147 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                    Plej vizititaj

                                                                                    Rekomendita de Pocket

                                                                                    Ĉefaj temoj:

                                                                                      Elstaraĵoj

                                                                                      +

                                                                                      Plej vizititaj

                                                                                      Rekomendita de Pocket

                                                                                      Ĉefaj temoj:

                                                                                        Elstaraĵoj

                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js index e20a9cb7450d..a8f9b7dd909c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Vi legis ĉion. Kontrolu denove poste ĉu estas pli da novaĵon de {provider}. Ĉu vi ne povas atendi? Elektu popularan temon por trovi pli da interesaj artikoloj en la tuta teksaĵo.", "manual_migration_explanation2": "Provu Firefox kun la legosignoj, historio kaj pasvortoj de alia retumilo.", "manual_migration_cancel_button": "Ne, dankon", - "manual_migration_import_button": "Importi nun" + "manual_migration_import_button": "Importi nun", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html index 6ef7c01c2e0c..492ba1fb73ee 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                        Más visitados

                                                                                        Recomendado por Pocket

                                                                                        Tópicos populares:

                                                                                          Destacados

                                                                                          +

                                                                                          Más visitados

                                                                                          Recomendado por Pocket

                                                                                          Tópicos populares:

                                                                                            Destacados

                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js index 7073abdf9f07..c5ff6797cbc1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya te pusiste al día. Volvé más tarde para más historias de {provider}. ¿No podés esperar? Seleccioná un tema popular para encontrar más historias de todo el mundo.", "manual_migration_explanation2": "Probá Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html index f9a60e8df6f6..418b004bfa16 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                            Sitios frecuentes

                                                                                            Recomendado por Pocket

                                                                                            Temas populares:

                                                                                              Destacados

                                                                                              +

                                                                                              Sitios frecuentes

                                                                                              Recomendado por Pocket

                                                                                              Temas populares:

                                                                                                Destacados

                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js index 3aeb49d3c8d1..288020c88439 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Te has puesto al día. Revisa más tarde para ver más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular para encontrar más historias de todo el mundo.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html index d66e9654f338..d4b83e9d981a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                Sitios favoritos

                                                                                                Recomendado por Pocket

                                                                                                Temas populares:

                                                                                                  Destacados

                                                                                                  +

                                                                                                  Sitios favoritos

                                                                                                  Recomendado por Pocket

                                                                                                  Temas populares:

                                                                                                    Destacados

                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js index 68a3b3382847..f264c75cb067 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya estás al día. Vuelve luego y busca más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular y encontrás más historias alucinantes por toda la web.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html index 18e48be5a12d..70a6707bfd95 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                    Sitios favoritos

                                                                                                    Recomendado por Pocket

                                                                                                    Temas populares:

                                                                                                      Destacados

                                                                                                      +

                                                                                                      Sitios favoritos

                                                                                                      Recomendado por Pocket

                                                                                                      Temas populares:

                                                                                                        Destacados

                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js index c2ead8caca99..15fde5242030 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya estás al día. Vuelve luego y busca más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular y encontrarás más historias interesantes por toda la web.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html index 7c2764ea85de..cfe0a958793d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                        Top saidid

                                                                                                        Pocket soovitab

                                                                                                        Populaarsed teemad:

                                                                                                          Esiletõstetud

                                                                                                          +

                                                                                                          Top saidid

                                                                                                          Pocket soovitab

                                                                                                          Populaarsed teemad:

                                                                                                            Esiletõstetud

                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js index 916da87348b1..60e378a09211 100644 --- a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Vaata hiljem uuesti, et näha parimaid postitusi teenusepakkujalt {provider}. Ei suuda oodata? Vali populaarne teema, et leida veel suurepärast sisu internetist.", "manual_migration_explanation2": "Proovi Firefoxi teisest brauserist pärinevate järjehoidjate, ajaloo ja paroolidega.", "manual_migration_cancel_button": "Ei soovi", - "manual_migration_import_button": "Impordi kohe" + "manual_migration_import_button": "Impordi kohe", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html index db9ab1b44c5b..04c7c5df8065 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                            Gune erabilienak

                                                                                                            Pocket hornitzaileak gomendatuta

                                                                                                            Gai ezagunak:

                                                                                                              Nabarmendutakoak

                                                                                                              +

                                                                                                              Gune erabilienak

                                                                                                              Pocket hornitzaileak gomendatuta

                                                                                                              Gai ezagunak:

                                                                                                                Nabarmendutakoak

                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js index ce2e727750e2..009013d6c0d3 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Egunean zaude jada. Etorri berriro geroago {provider} hornitzailearen istorio ezagun gehiagorako. Ezin duzu itxaron? Hautatu gai ezagun bat webeko istorio gehiago aurkitzeko.", "manual_migration_explanation2": "Probatu Firefox beste nabigatzaile batetik ekarritako laster-marka, historia eta pasahitzekin.", "manual_migration_cancel_button": "Ez, eskerrik asko", - "manual_migration_import_button": "Inportatu orain" + "manual_migration_import_button": "Inportatu orain", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html index 7f9bb93dcb56..cae68ce22a58 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                سایت‌های برتر

                                                                                                                پیشنهاد شده توسط Pocket

                                                                                                                موضوع‌های محبوب:

                                                                                                                  برجسته‌ها

                                                                                                                  +

                                                                                                                  سایت‌های برتر

                                                                                                                  پیشنهاد شده توسط Pocket

                                                                                                                  موضوع‌های محبوب:

                                                                                                                    برجسته‌ها

                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js index 81b2ed2f56e8..daa52d7028d8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "فعلا تموم شد. بعدا دوباره سر بزن تا مطالب جدید از {provider} ببینی. نمی‌تونی صبر کنی؟ یک موضوع محبوب رو انتخاب کن تا مطالب جالب مرتبط از سراسر دنیا رو پیدا کنی.", "manual_migration_explanation2": "فایرفاکس را با نشانک‌ها،‌ تاریخچه‌ها و کلمات عبور از سایر مرورگر ها تجربه کنید.", "manual_migration_cancel_button": "نه ممنون", - "manual_migration_import_button": "هم‌اکنون وارد شوند" + "manual_migration_import_button": "هم‌اکنون وارد شوند", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html index a9b727edccd7..232dca915a31 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                    Lowe dowrowe

                                                                                                                    Recommended by Pocket

                                                                                                                    Loowdiiji lolluɗi:

                                                                                                                      Jalbine

                                                                                                                      +

                                                                                                                      Lowe dowrowe

                                                                                                                      Recommended by Pocket

                                                                                                                      Loowdiiji lolluɗi:

                                                                                                                        Jalbine

                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js index 199305252291..306fdce579eb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Ƴeewndo Firefox wonndude e maantore ɗee, aslol kam e finndeeji iwde e wanngorde woɗnde.", "manual_migration_cancel_button": "Alaa, moƴƴii", - "manual_migration_import_button": "Jiggo Jooni" + "manual_migration_import_button": "Jiggo Jooni", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html index f1700ce65a14..3fb29cfc0701 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                        Ykkössivustot

                                                                                                                        Suositukset lähteestä Pocket

                                                                                                                        Suositut aiheet:

                                                                                                                          Nostot

                                                                                                                          +

                                                                                                                          Ykkössivustot

                                                                                                                          Suositukset lähteestä Pocket

                                                                                                                          Suositut aiheet:

                                                                                                                            Nostot

                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js index bd9247361e67..205641b8798b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ei enempää suosituksia juuri nyt. Katso myöhemmin uudestaan lisää ykkösjuttuja lähteestä {provider}. Etkö malta odottaa? Valitse suosittu aihe ja löydä lisää hyviä juttuja ympäri verkkoa.", "manual_migration_explanation2": "Kokeile Firefoxia toisesta selaimesta tuotujen kirjanmerkkien, historian ja salasanojen kanssa.", "manual_migration_cancel_button": "Ei kiitos", - "manual_migration_import_button": "Tuo nyt" + "manual_migration_import_button": "Tuo nyt", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html index e66f4caec385..436992de05ea 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                            Sites les plus visités

                                                                                                                            Recommandations par Pocket

                                                                                                                            Sujets populaires :

                                                                                                                              Éléments-clés

                                                                                                                              +

                                                                                                                              Sites les plus visités

                                                                                                                              Recommandations par Pocket

                                                                                                                              Sujets populaires :

                                                                                                                                Éléments-clés

                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js index cd98a6e2ee48..a8fd46aebb4a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Il n’y en a pas d’autres. Revenez plus tard pour plus d’articles de {provider}. Vous ne voulez pas attendre ? Choisissez un sujet parmi les plus populaires pour découvrir d’autres articles intéressants sur le Web.", "manual_migration_explanation2": "Essayez Firefox en important les marque-pages, l’historique et les mots de passe depuis un autre navigateur.", "manual_migration_cancel_button": "Non merci", - "manual_migration_import_button": "Importer" + "manual_migration_import_button": "Importer", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html index 7ee7c81d6a72..da513838827d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                Topwebsites

                                                                                                                                Oanrekommandearre troch Pocket

                                                                                                                                Populêre ûnderwerpen:

                                                                                                                                  Hichtepunten

                                                                                                                                  +

                                                                                                                                  Topwebsites

                                                                                                                                  Oanrekommandearre troch Pocket

                                                                                                                                  Populêre ûnderwerpen:

                                                                                                                                    Hichtepunten

                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js index 81103d06054b..18ab87b213fd 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Jo binne by. Kom letter werom foar mear ferhalen fan {provider}. Kin jo net wachtsje? Selektearje in populêr ûnderwerp om mear ferhalen fan it ynternet te finen.", "manual_migration_explanation2": "Probearje Firefox en ymportearje de blêdwizers, skiednis en wachtwurden fan oare browsers.", "manual_migration_cancel_button": "Nee tankewol", - "manual_migration_import_button": "No ymportearje" + "manual_migration_import_button": "No ymportearje", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html index 151af55169cd..db7516737e26 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                    Barrshuímh

                                                                                                                                    Recommended by Pocket

                                                                                                                                    Topaicí i mbéal an phobail:

                                                                                                                                      Highlights

                                                                                                                                      +

                                                                                                                                      Barrshuímh

                                                                                                                                      Recommended by Pocket

                                                                                                                                      Topaicí i mbéal an phobail:

                                                                                                                                        Highlights

                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js index e6441650d4be..78578ef40569 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js @@ -97,6 +97,8 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "Roghnaigh na rudaí a fheicfidh tú nuair a osclóidh tú cluaisín nua.", "settings_pane_pocketstories_header": "Barrscéalta", "settings_pane_pocketstories_body": "Le Pocket, ball de theaghlach Mozilla, beidh tú ábalta teacht ar ábhar den chéad scoth go héasca.", diff --git a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html index bd88a8c1c730..e722efedc042 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                        Brod nan làrach

                                                                                                                                        ’Ga mholadh le Pocket

                                                                                                                                        Cuspairean fèillmhor:

                                                                                                                                          Sàr-roghainn

                                                                                                                                          +

                                                                                                                                          Brod nan làrach

                                                                                                                                          ’Ga mholadh le Pocket

                                                                                                                                          Cuspairean fèillmhor:

                                                                                                                                            Sàr-roghainn

                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js index 6c06ffc87ea5..95600fb13f75 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Sin na naidheachdan uile o {provider} an-dràsta ach bidh barrachd ann a dh’aithghearr. No thoir sùil air cuspair air a bheil fèill mhòr is leugh na tha a’ dol mun cuairt air an lìon an-dràsta.", "manual_migration_explanation2": "Feuch Firefox leis na comharran-lìn, an eachdraidh ’s na faclan-faire o bhrabhsair eile.", "manual_migration_cancel_button": "Chan eil, tapadh leibh", - "manual_migration_import_button": "Ion-phortaich an-dràsta" + "manual_migration_import_button": "Ion-phortaich an-dràsta", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html index af90cc553025..83eb8b31693a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                            Sitios favoritos

                                                                                                                                            Recomendado por Pocket

                                                                                                                                            Temas populares:

                                                                                                                                              Destacados

                                                                                                                                              +

                                                                                                                                              Sitios favoritos

                                                                                                                                              Recomendado por Pocket

                                                                                                                                              Temas populares:

                                                                                                                                                Destacados

                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js index ead635e9a81d..1edf45a98eaf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "Non, grazas", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html index a76a1e142188..90bf41807b1a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                Tenda Ojehechavéva

                                                                                                                                                Pocket he'i ndéve reike hag̃ua

                                                                                                                                                Ñe'ẽmbyrã Ojehayhuvéva:

                                                                                                                                                  Mba'eporãitéva

                                                                                                                                                  +

                                                                                                                                                  Tenda Ojehechavéva

                                                                                                                                                  Pocket he'i ndéve reike hag̃ua

                                                                                                                                                  Ñe'ẽmbyrã Ojehayhuvéva:

                                                                                                                                                    Mba'eporãitéva

                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js index 5a8a87ec6d9e..10a637d518f4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ko'ág̃a reikuaapáma ipyahúva. Eikejey ag̃ave ápe eikuaávo mombe'upy pyahu {provider} oikuave'ẽva ndéve. Ndaikatuvéima reha'ãrõ? Eiporavo peteĩ ñe'ẽmbyrã ha emoñe'ẽve oĩvéva ñande yvy ape ári.", "manual_migration_explanation2": "Eipuru Firefox reheve techaukaha, tembiasakue ha ñe'ẽñemi ambue kundaharapegua.", "manual_migration_cancel_button": "Ag̃amiénte", - "manual_migration_import_button": "Egueroike Ko'ág̃a" + "manual_migration_import_button": "Egueroike Ko'ág̃a", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html index 954013e2606a..650f306da9cf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                    ટોપ સાઇટ્સ

                                                                                                                                                    દ્વારા ભલામણ

                                                                                                                                                    લોકપ્રિય વિષયો:

                                                                                                                                                      વીતી ગયેલું

                                                                                                                                                      +

                                                                                                                                                      ટોપ સાઇટ્સ

                                                                                                                                                      દ્વારા ભલામણ

                                                                                                                                                      લોકપ્રિય વિષયો:

                                                                                                                                                        વીતી ગયેલું

                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js index 66708ef76d51..761b6714e2af 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "તમે પકડાઈ ગયા છો. {પ્રદાતા} તરફથી વધુ ટોચની વાતો માટે પછીથી પાછા તપાસો. રાહ નથી જોઈ શકતા? સમગ્ર વેબ પરથી વધુ સુંદર વાર્તાઓ શોધવા માટે એક લોકપ્રિય વિષય પસંદ કરો.", "manual_migration_explanation2": "અન્ય બ્રાઉઝરથી બુકમાર્ક્સ, ઇતિહાસ અને પાસવર્ડ્સ સાથે ફાયરફોક્સ અજમાવો.", "manual_migration_cancel_button": "ના અભાર", - "manual_migration_import_button": "હવે આયાત કરો" + "manual_migration_import_button": "હવે આયાત કરો", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html index fd0092a3869b..530ccd480809 100644 --- a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                        אתרים מובילים

                                                                                                                                                        מומלץ על ידי Pocket

                                                                                                                                                        נושאים פופולריים:

                                                                                                                                                          מומלצים

                                                                                                                                                          +

                                                                                                                                                          אתרים מובילים

                                                                                                                                                          מומלץ על ידי Pocket

                                                                                                                                                          נושאים פופולריים:

                                                                                                                                                            מומלצים

                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js index b361b4a468c4..2274570ef47e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "התעדכנת בכל הסיפורים. כדאי לנסות שוב מאוחר יותר כדי לקבל עוד סיפורים מובילים מאת {provider}. לא רוצה לחכות? ניתן לבחור נושא נפוץ כדי למצוא עוד סיפורים נפלאים מרחבי הרשת.", "manual_migration_explanation2": "ניתן להתנסות ב־Firefox עם הסימניות, ההיסטוריה והססמאות מדפדפן אחר.", "manual_migration_cancel_button": "לא תודה", - "manual_migration_import_button": "ייבוא כעת" + "manual_migration_import_button": "ייבוא כעת", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html index 7dcde4841d10..3b485fa46f1a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                            सर्वोच्च साइटें

                                                                                                                                                            Pocket द्वारा अनुशंसित

                                                                                                                                                            लोकप्रिय विषय:

                                                                                                                                                              झलकियाँ

                                                                                                                                                              +

                                                                                                                                                              सर्वोच्च साइटें

                                                                                                                                                              Pocket द्वारा अनुशंसित

                                                                                                                                                              लोकप्रिय विषय:

                                                                                                                                                                झलकियाँ

                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js index 04a888cf0980..4d02d0c36185 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "आप अंत तक आ गए हैं. {provider} से और शीर्ष घटनाओं के लिए कुछ समय में पुनः आइए. इंतज़ार नहीं कर सकते? वेब से और प्रमुख घटनाएं ढूंढने के लिए एक लोकप्रिय विषय चुनें.", "manual_migration_explanation2": "Firefox को किसी अन्य ब्राउज़र के पुस्तचिह्नों, इतिहास और पासवर्डों के साथ आज़माएं.", "manual_migration_cancel_button": "नहीं शुक्रिया", - "manual_migration_import_button": "अब आयात करें" + "manual_migration_import_button": "अब आयात करें", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html index a54be4f10c02..cc4dde7b31b9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                Najbolje stranice

                                                                                                                                                                Preporučeno od Pocket

                                                                                                                                                                Popularne teme:

                                                                                                                                                                  Istaknuto

                                                                                                                                                                  +

                                                                                                                                                                  Najbolje stranice

                                                                                                                                                                  Preporučeno od Pocket

                                                                                                                                                                  Popularne teme:

                                                                                                                                                                    Istaknuto

                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js index 2d1cdf973acf..e34da10de0ba 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", "manual_migration_explanation2": "Probajte Firefox s zabilješkama, povijesti i lozinkama iz drugog pretraživača.", "manual_migration_cancel_button": "Ne hvala", - "manual_migration_import_button": "Uvezi sada" + "manual_migration_import_button": "Uvezi sada", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html index ee9c871082db..b4bbc353edbd 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                    Najhusćišo wopytane sydła

                                                                                                                                                                    Wot Pocket doporučeny

                                                                                                                                                                    Woblubowane temy:

                                                                                                                                                                      Wjerški

                                                                                                                                                                      +

                                                                                                                                                                      Najhusćišo wopytane sydła

                                                                                                                                                                      Wot Pocket doporučeny

                                                                                                                                                                      Woblubowane temy:

                                                                                                                                                                        Wjerški

                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js index 67885712e17c..4955b375c739 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To je nachwilu wšitko. Wróćće so pozdźišo dalšich wulkotnych stawiznow dla wot {provider}. Njemóžeće čakać? Wubjerće woblubowanu temu, zo byšće dalše wulkotne stawizny z weba namakał.", "manual_migration_explanation2": "Wupruwujće Firefox ze zapołožkami, historiju a hesłami z druheho wobhladowaka.", "manual_migration_cancel_button": "Ně, dźakuju so", - "manual_migration_import_button": "Nětko importować" + "manual_migration_import_button": "Nětko importować", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html index 0e7e5d0bf7a8..781debc7a3cc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                        Népszerű oldalak

                                                                                                                                                                        A(z) Pocket ajánlásával

                                                                                                                                                                        Népszerű témák:

                                                                                                                                                                          Kiemelések

                                                                                                                                                                          +

                                                                                                                                                                          Népszerű oldalak

                                                                                                                                                                          A(z) Pocket ajánlásával

                                                                                                                                                                          Népszerű témák:

                                                                                                                                                                            Kiemelések

                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js index 8aaa000e8e9f..cec877aca1ca 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Már felzárkózott. Nézzen vissza később a legújabb {provider} hírekért. Nem tud várni? Válasszon egy népszerű témát, hogy még több sztorit találjon a weben.", "manual_migration_explanation2": "Próbálja ki a Firefoxot másik böngészőből származó könyvjelzőkkel, előzményekkel és jelszavakkal.", "manual_migration_cancel_button": "Köszönöm, nem", - "manual_migration_import_button": "Importálás most" + "manual_migration_import_button": "Importálás most", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html index 9cf920c40e91..0aca327c2520 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                            Լավագույն կայքեր

                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                            Popular Topics:

                                                                                                                                                                              Գունանշում

                                                                                                                                                                              +

                                                                                                                                                                              Լավագույն կայքեր

                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                              Popular Topics:

                                                                                                                                                                                Գունանշում

                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js index 587d1efd3922..d697fb15079b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now" + "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html index 3fe0bf061ba7..4652a283a553 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                Sitos popular

                                                                                                                                                                                Recommendate per Pocket

                                                                                                                                                                                Subjectos popular:

                                                                                                                                                                                  In evidentia

                                                                                                                                                                                  +

                                                                                                                                                                                  Sitos popular

                                                                                                                                                                                  Recommendate per Pocket

                                                                                                                                                                                  Subjectos popular:

                                                                                                                                                                                    In evidentia

                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js index 188da3c37914..e9a46d052236 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Tu ja es in die con toto. Reveni plus tarde pro plus historias popular de {provider}. Non vole attender? Selectiona un subjecto popular pro trovar plus altere historias interessante del web.", "manual_migration_explanation2": "Essaya Firefox con le marcapaginas, le chronologia e le contrasignos de un altere navigator.", "manual_migration_cancel_button": "No, gratias", - "manual_migration_import_button": "Importar ora" + "manual_migration_import_button": "Importar ora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html index b8ad0409b734..d058cfd21746 100644 --- a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                    Situs Teratas

                                                                                                                                                                                    Disarankan oleh Pocket

                                                                                                                                                                                    Topik Populer:

                                                                                                                                                                                      Sorotan

                                                                                                                                                                                      +

                                                                                                                                                                                      Situs Teratas

                                                                                                                                                                                      Disarankan oleh Pocket

                                                                                                                                                                                      Topik Populer:

                                                                                                                                                                                        Sorotan

                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js index a29af241a619..715aa21f91d1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Maaf Anda tercegat. Periksa lagi nanti untuk lebih banyak cerita terbaik dari {provider}. Tidak mau menunggu? Pilih topik populer untuk menemukan lebih banyak cerita hebat dari seluruh web.", "manual_migration_explanation2": "Coba Firefox dengan markah, riwayat, dan sandi dari peramban lain.", "manual_migration_cancel_button": "Tidak, Terima kasih", - "manual_migration_import_button": "Impor Sekarang" + "manual_migration_import_button": "Impor Sekarang", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html index bc303710c1e5..8cb5200f9feb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                        Siti principali

                                                                                                                                                                                        Consigliati da Pocket

                                                                                                                                                                                        Argomenti popolari:

                                                                                                                                                                                          In evidenza

                                                                                                                                                                                          +

                                                                                                                                                                                          Siti principali

                                                                                                                                                                                          Consigliati da Pocket

                                                                                                                                                                                          Argomenti popolari:

                                                                                                                                                                                            In evidenza

                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js index 4069c24a8030..e2255bd26617 100644 --- a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Non c'è altro. Controlla più tardi per altre storie da {provider}. Non vuoi aspettare? Seleziona un argomento tra quelli più popolari per scoprire altre notizie interessanti dal Web.", "manual_migration_explanation2": "Prova Firefox con i segnalibri, la cronologia e le password di un altro browser.", "manual_migration_cancel_button": "No grazie", - "manual_migration_import_button": "Importa adesso" + "manual_migration_import_button": "Importa adesso", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html index 53c599d4500d..47f98d27e7bf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                            トップサイト

                                                                                                                                                                                            Pocket のおすすめ

                                                                                                                                                                                            人気のトピック:

                                                                                                                                                                                              ハイライト

                                                                                                                                                                                              +

                                                                                                                                                                                              トップサイト

                                                                                                                                                                                              Pocket のおすすめ

                                                                                                                                                                                              人気のトピック:

                                                                                                                                                                                                ハイライト

                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js index da73834a77ef..4f606248ff67 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "すべて既読です。また後で戻って {provider} からのおすすめ記事をチェックしてください。もし待ちきれないなら、人気のトピックを選択すれば、他にもウェブ上の優れた記事を見つけられます。", "manual_migration_explanation2": "他のブラウザーからブックマークや履歴、パスワードを取り込んで Firefox を使ってみましょう。", "manual_migration_cancel_button": "今はしない", - "manual_migration_import_button": "今すぐインポート" + "manual_migration_import_button": "今すぐインポート", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html index adbbe8790095..628ad71a8a90 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                რჩეული საიტები

                                                                                                                                                                                                რეკომენდებულია Pocket-ის მიერ

                                                                                                                                                                                                პოპულარული თემები:

                                                                                                                                                                                                  მნიშვნელოვანი საიტები

                                                                                                                                                                                                  +

                                                                                                                                                                                                  რჩეული საიტები

                                                                                                                                                                                                  რეკომენდებულია Pocket-ის მიერ

                                                                                                                                                                                                  პოპულარული თემები:

                                                                                                                                                                                                    მნიშვნელოვანი საიტები

                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js index bca1eb51e803..b97ad254602f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "უკვე ყველაფერი წაკითხული გაქვთ. {provider}-იდან ახალი რჩეული სტატიების მისაღებად, მოგვიანებით შემოიარეთ. თუ ვერ ითმენთ, აირჩიეთ რომელიმე მოთხოვნადი თემა, ახალი საინტერესო სტატიების მოსაძიებლად.", "manual_migration_explanation2": "გადმოიტანეთ სხვა ბრაუზერებიდან თქვენი სანიშნები, ისტორია და პაროლები Firefox-ში.", "manual_migration_cancel_button": "არა, გმადლობთ", - "manual_migration_import_button": "ახლავე გადმოტანა" + "manual_migration_import_button": "ახლავე გადმოტანა", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html index d74c51076033..2fdf9c755f1e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                    Ismal ifazen

                                                                                                                                                                                                    Iwelleh-it-id Pocket

                                                                                                                                                                                                    Isental ittwasnen aṭas:

                                                                                                                                                                                                      Asebrureq

                                                                                                                                                                                                      +

                                                                                                                                                                                                      Ismal ifazen

                                                                                                                                                                                                      Iwelleh-it-id Pocket

                                                                                                                                                                                                      Isental ittwasnen aṭas:

                                                                                                                                                                                                        Asebrureq

                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js index f4d759f1df41..dd6f7f769ce4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ulac wiyaḍ. Uɣal-d ticki s wugar n imagraden seg {provider}. Ur tebɣiḍ ara ad terǧuḍ? Fren asentel seg wid yettwasnen akken ad twaliḍ imagraden yelhan di Web.", "manual_migration_explanation2": "Σreḍ Firefox s ticṛaḍ n isebtar, amazray akked awalen uffiren sγur ilinigen nniḍen.", "manual_migration_cancel_button": "Ala, tanemmirt", - "manual_migration_import_button": "Kter tura" + "manual_migration_import_button": "Kter tura", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html index 4a28dc6769b1..d3f07e6380e0 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                        Үздік сайттар

                                                                                                                                                                                                        Ұсынушы Pocket

                                                                                                                                                                                                        Әйгілі тақырыптар:

                                                                                                                                                                                                          Ерекше жаңалықтар

                                                                                                                                                                                                          +

                                                                                                                                                                                                          Үздік сайттар

                                                                                                                                                                                                          Ұсынушы Pocket

                                                                                                                                                                                                          Әйгілі тақырыптар:

                                                                                                                                                                                                            Ерекше жаңалықтар

                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js index 4e5215352f00..2e5095eedebe 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Дайын. {provider} ұсынған көбірек мақалаларды алу үшін кейінірек тексеріңіз. Күте алмайсыз ба? Интернеттен көбірек тамаша мақалаларды алу үшін әйгілі теманы таңдаңыз.", "manual_migration_explanation2": "Firefox қолданбасын басқа браузер бетбелгілері, тарихы және парольдерімен қолданып көріңіз.", "manual_migration_cancel_button": "Жоқ, рахмет", - "manual_migration_import_button": "Қазір импорттау" + "manual_migration_import_button": "Қазір импорттау", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html index eaaba600f3b7..51a112c8bf8e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                            វិបសាយ​លើ​គេ

                                                                                                                                                                                                            បានណែនាំដោយ Pocket

                                                                                                                                                                                                            ប្រធានបទកំពុងពេញនិយម៖

                                                                                                                                                                                                              រឿងសំខាន់ៗ

                                                                                                                                                                                                              +

                                                                                                                                                                                                              វិបសាយ​លើ​គេ

                                                                                                                                                                                                              បានណែនាំដោយ Pocket

                                                                                                                                                                                                              ប្រធានបទកំពុងពេញនិយម៖

                                                                                                                                                                                                                រឿងសំខាន់ៗ

                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js index 26c2acdad370..f3ff78cd257d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "សាកល្បងប្រើ Firefox ជាមួយចំណាំ ប្រវត្តិ និងពាក្យសម្ងាត់ពីកម្មវិធីរុករកផ្សេងទៀត។", "manual_migration_cancel_button": "ទេ អរគុណ", - "manual_migration_import_button": "នាំចូលឥឡូវនេះ" + "manual_migration_import_button": "នាំចូលឥឡូវនេះ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html index 10bb46de6e6e..ccc9b34e6b0f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                ಪ್ರಮುಖ ತಾಣಗಳು

                                                                                                                                                                                                                Pocket ರಿಂದ ಶಿಫಾರಸುಮಾಡುಲಾಗಿದೆ

                                                                                                                                                                                                                ಜನಪ್ರಿಯವಾದ ವಿಷಯಗಳು:

                                                                                                                                                                                                                  ಮುಖ್ಯಾಂಶಗಳು

                                                                                                                                                                                                                  +

                                                                                                                                                                                                                  ಪ್ರಮುಖ ತಾಣಗಳು

                                                                                                                                                                                                                  Pocket ರಿಂದ ಶಿಫಾರಸುಮಾಡುಲಾಗಿದೆ

                                                                                                                                                                                                                  ಜನಪ್ರಿಯವಾದ ವಿಷಯಗಳು:

                                                                                                                                                                                                                    ಮುಖ್ಯಾಂಶಗಳು

                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js index bc7a782435de..d89f660451f8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ಪರವಾಗಿಲ್ಲ", - "manual_migration_import_button": "ಈಗ ಆಮದು ಮಾಡು" + "manual_migration_import_button": "ಈಗ ಆಮದು ಮಾಡು", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html index 465320c4a1cf..91ffd586a1b6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                    상위 사이트

                                                                                                                                                                                                                    Pocket 추천

                                                                                                                                                                                                                    인기 주제:

                                                                                                                                                                                                                      하이라이트

                                                                                                                                                                                                                      +

                                                                                                                                                                                                                      상위 사이트

                                                                                                                                                                                                                      Pocket 추천

                                                                                                                                                                                                                      인기 주제:

                                                                                                                                                                                                                        하이라이트

                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js index 1eed5d748af3..0106972b3e78 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "다 왔습니다. {provider}에서 제공하는 주요 기사를 다시 확인해 보세요. 기다릴 수가 없나요? 주제를 선택하면 웹에서 볼 수 있는 가장 재미있는 글을 볼 수 있습니다.", "manual_migration_explanation2": "다른 브라우저에 있는 북마크, 기록, 비밀번호를 사용해 Firefox를 이용해 보세요.", "manual_migration_cancel_button": "괜찮습니다", - "manual_migration_import_button": "지금 가져오기" + "manual_migration_import_button": "지금 가져오기", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html index 30dfe466f5d8..cd0820b4832b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                        I megio sciti

                                                                                                                                                                                                                        Recommended by Pocket

                                                                                                                                                                                                                        Popular Topics:

                                                                                                                                                                                                                          In evidensa

                                                                                                                                                                                                                          +

                                                                                                                                                                                                                          I megio sciti

                                                                                                                                                                                                                          Recommended by Pocket

                                                                                                                                                                                                                          Popular Topics:

                                                                                                                                                                                                                            In evidensa

                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js index 1e1e626860dc..0a274e725087 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js @@ -97,6 +97,8 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "Çerni cöse ti veu vedde quande t'arvi 'n neuvo feuggio.", "settings_pane_highlights_body": "Veddi i elementi ciù neuvi inta stöia e i urtimi segnalibbri creæ." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html index 1f34df06c9b7..302a08c6bd16 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                            ເວັບໄຊຕ໌ຍອດນິຍົມ

                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                            ຫົວຂໍ້ຍອດນິຍົມ:

                                                                                                                                                                                                                              ລາຍການເດັ່ນ

                                                                                                                                                                                                                              +

                                                                                                                                                                                                                              ເວັບໄຊຕ໌ຍອດນິຍົມ

                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                              ຫົວຂໍ້ຍອດນິຍົມ:

                                                                                                                                                                                                                                ລາຍການເດັ່ນ

                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js index 5b8e9a42141b..24485e3fd240 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ບໍ່, ຂອບໃຈ", - "manual_migration_import_button": "ນຳເຂົ້າຕອນນີ້" + "manual_migration_import_button": "ນຳເຂົ້າຕອນນີ້", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html index 709482cc6e3e..209ea2fbf020 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                Lankomiausios svetainės

                                                                                                                                                                                                                                Rekomendavo „Pocket“

                                                                                                                                                                                                                                Populiarios temos:

                                                                                                                                                                                                                                  Akcentai

                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                  Lankomiausios svetainės

                                                                                                                                                                                                                                  Rekomendavo „Pocket“

                                                                                                                                                                                                                                  Populiarios temos:

                                                                                                                                                                                                                                    Akcentai

                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js index 812001cc0722..eba57bb88b7d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Viską perskaitėte. Užsukite vėliau, norėdami rasti daugiau gerų straipsnių iš „{provider}“. Nekantraujate? Pasirinkite populiarią temą, norėdami rasti daugiau puikių straipsnių saityne.", "manual_migration_explanation2": "Išbandykite „Firefox“ su adresynu, žurnalu bei slaptažodžiais iš kitos naršyklės.", "manual_migration_cancel_button": "Ačiū, ne", - "manual_migration_import_button": "Importuoti dabar" + "manual_migration_import_button": "Importuoti dabar", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html index 16f507cfbd7a..be6036e0dccf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                    Popularōkōs lopys

                                                                                                                                                                                                                                    Pocket īsaceitōs

                                                                                                                                                                                                                                    Popularas tēmas:

                                                                                                                                                                                                                                      Izraudzeitī

                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                      Popularōkōs lopys

                                                                                                                                                                                                                                      Pocket īsaceitōs

                                                                                                                                                                                                                                      Popularas tēmas:

                                                                                                                                                                                                                                        Izraudzeitī

                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js index 39d2dc6da221..f7f27fae0ce9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Esi vysu izlasiejs. Īej vāļōk, kab redzēt vaira ziņu nu {provider}. Nagribi gaidēt? Izavielej popularu tēmu, kab atrostu vaira interesantu rokstu nu vysa interneta.", "manual_migration_explanation2": "Paraugi Firefox ar grōmotzeimem, viesturi un parolem nu cyta porlyuka.", "manual_migration_cancel_button": "Nā, paļdis", - "manual_migration_import_button": "Importeit" + "manual_migration_import_button": "Importeit", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html index a481be39955f..94455a418109 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                        Populārākās lapas

                                                                                                                                                                                                                                        Iesaka Pocket

                                                                                                                                                                                                                                        Populārās tēmas:

                                                                                                                                                                                                                                          Aktualitātes

                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                          Populārākās lapas

                                                                                                                                                                                                                                          Iesaka Pocket

                                                                                                                                                                                                                                          Populārās tēmas:

                                                                                                                                                                                                                                            Aktualitātes

                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js index 26f300d3b02b..cfa3bebf5a7a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Viss ir apskatīts! Atnāciet atpakaļ nedaudz vēlāk, lai redzētu populāros stāstus no {provider}. Nevarat sagaidīt? Izvēlieties kādu no tēmām jau tagad.", "manual_migration_explanation2": "Izmēģiniet Firefox ar grāmatzīmēm, vēsturi un parolēm no cita pārlūka.", "manual_migration_cancel_button": "Nē, paldies", - "manual_migration_import_button": "Importē tagad" + "manual_migration_import_button": "Importē tagad", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html index a5e0b4a093fc..405cbbab0333 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                            Популарни мрежни места

                                                                                                                                                                                                                                            Препорачано од Pocket

                                                                                                                                                                                                                                            Популарни теми:

                                                                                                                                                                                                                                              Интереси

                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                              Популарни мрежни места

                                                                                                                                                                                                                                              Препорачано од Pocket

                                                                                                                                                                                                                                              Популарни теми:

                                                                                                                                                                                                                                                Интереси

                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js index b5bd17daddb1..5e8ba99a5085 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Имате видено сѐ! Навратете се подоцна за нови содржини од {provider}. Не можете да чекате? Изберете популарна тема и откријте уште одлични содржини ширум Интернет.", "manual_migration_explanation2": "Пробајте го Firefox со обележувачите, историјата и лозинките на друг прелистувач.", "manual_migration_cancel_button": "Не, благодарам", - "manual_migration_import_button": "Увези сега" + "manual_migration_import_button": "Увези сега", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html index ef637d89a8a3..148d90c945fe 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                മികച്ച സൈറ്റുകൾ

                                                                                                                                                                                                                                                Pocket ശുപാർശ ചെയ്തത്

                                                                                                                                                                                                                                                ജനപ്രിയ വിഷയങ്ങൾ:

                                                                                                                                                                                                                                                  ഹൈലൈറ്റുകൾ

                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                  മികച്ച സൈറ്റുകൾ

                                                                                                                                                                                                                                                  Pocket ശുപാർശ ചെയ്തത്

                                                                                                                                                                                                                                                  ജനപ്രിയ വിഷയങ്ങൾ:

                                                                                                                                                                                                                                                    ഹൈലൈറ്റുകൾ

                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js index 04d0b5a7bb43..cfe76b2217d6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "നിങ്ങൾ ഇവിടെ വരെ എത്തി. {Provider}ൽ നിന്നുള്ള കൂടുതൽ പ്രധാന വാർത്തകൾക്കായി പിന്നീട് വീണ്ടും പരിശോധിക്കുക. കാത്തിരിക്കാൻ പറ്റില്ലേ? വെബിൽ നിന്ന് കൂടുതൽ മികച്ച കഥകൾ കണ്ടെത്തുന്നതിന് ഒരു ജനപ്രിയ വിഷയം തിരഞ്ഞെടുക്കുക.", "manual_migration_explanation2": "മറ്റൊരു ബ്രൗസറിൽ നിന്നുള്ള ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ എന്നിവ ഉപയോഗിച്ച് ഫയർഫോക്സ് പരീക്ഷിക്കുക.", "manual_migration_cancel_button": "വേണ്ട, നന്ദി", - "manual_migration_import_button": "ഇപ്പോൾ ഇറക്കുമതി ചെയ്യുക" + "manual_migration_import_button": "ഇപ്പോൾ ഇറക്കുമതി ചെയ്യുക", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html index 1daf76efcb7d..4d737e765da1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                    खास साईट्स

                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                    Popular Topics:

                                                                                                                                                                                                                                                      ठळक

                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                      खास साईट्स

                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                      Popular Topics:

                                                                                                                                                                                                                                                        ठळक

                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js index 2fa51c2834a2..c7125f27a9b1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js @@ -97,5 +97,7 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "नवीन टॅब उघडल्यानंतर काय दिसायला हवे ते निवडा." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html index 70c7185c4d8c..1766baaf2f53 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                        Laman Teratas

                                                                                                                                                                                                                                                        Disyorkan oleh Pocket

                                                                                                                                                                                                                                                        Topik Popular:

                                                                                                                                                                                                                                                          Serlahan

                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                          Laman Teratas

                                                                                                                                                                                                                                                          Disyorkan oleh Pocket

                                                                                                                                                                                                                                                          Topik Popular:

                                                                                                                                                                                                                                                            Serlahan

                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js index c833b6c7cac1..373a68e6f781 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Anda sudah di sini. Tapi sila datang lagi untuk mendapatkan lebih banyak berita hangat daripada {provider}. Tidak boleh tunggu? Pilih topik untuk mendapatkannya dari serata dunia.", "manual_migration_explanation2": "Cuba Firefox dengan tandabuku, sejarah dan kata laluan yang disimpan dalam pelayar lain.", "manual_migration_cancel_button": "Tidak, Terima kasih", - "manual_migration_import_button": "Import Sekarang" + "manual_migration_import_button": "Import Sekarang", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html index 75bcf4748482..191eafb0b454 100644 --- a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                            အများဆုံးသုံးဆိုက်များ

                                                                                                                                                                                                                                                            Pocket က အကြံပြုထားသည်

                                                                                                                                                                                                                                                            လူကြိုက်များခေါင်းစဉ်များ

                                                                                                                                                                                                                                                              ဦးစားပေးအကြောင်းအရာများ

                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                              အများဆုံးသုံးဆိုက်များ

                                                                                                                                                                                                                                                              Pocket က အကြံပြုထားသည်

                                                                                                                                                                                                                                                              လူကြိုက်များခေါင်းစဉ်များ

                                                                                                                                                                                                                                                                ဦးစားပေးအကြောင်းအရာများ

                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js index 13f5af336f75..43b9e314f5a6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "အခြားဘရောင်ဇာမှ စာမှတ်များ၊ မှတ်တမ်းများ၊ စကားဝှက်များနှင့်အတူ Firefox တွင် စမ်းသုံးကြည့်ပါ။", "manual_migration_cancel_button": "မလိုတော့ပါ၊ ကျေးဇူးတင်ပါသည်။", - "manual_migration_import_button": "ထည့်သွင်းရန်" + "manual_migration_import_button": "ထည့်သွင်းရန်", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html index ddad57f27bd2..21c24e8f9599 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                Mest besøkte nettsider

                                                                                                                                                                                                                                                                Anbefalt av Pocket

                                                                                                                                                                                                                                                                Populære emner:

                                                                                                                                                                                                                                                                  Høydepunkter

                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                  Mest besøkte nettsider

                                                                                                                                                                                                                                                                  Anbefalt av Pocket

                                                                                                                                                                                                                                                                  Populære emner:

                                                                                                                                                                                                                                                                    Høydepunkter

                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js index 39fbbf6291a0..5d319d47cb91 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Du har tatt igjen. Kom tilbake senere for flere topphistorier fra {provider}. Kan du ikke vente? Velg et populært emne for å finne flere gode artikler fra hele Internett.", "manual_migration_explanation2": "Prøv Firefox med bokmerkene, historikk og passord fra en annen nettleser.", "manual_migration_cancel_button": "Nei takk", - "manual_migration_import_button": "Importer nå" + "manual_migration_import_button": "Importer nå", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html index 7ec3e2282ac6..05dab86d2f05 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                    शीर्ष साइटहरु

                                                                                                                                                                                                                                                                    Pocket द्वारा सिफारिस गरिएको

                                                                                                                                                                                                                                                                    लोकप्रिय शीर्षकहरू:

                                                                                                                                                                                                                                                                      विशेषताहरू

                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                      शीर्ष साइटहरु

                                                                                                                                                                                                                                                                      Pocket द्वारा सिफारिस गरिएको

                                                                                                                                                                                                                                                                      लोकप्रिय शीर्षकहरू:

                                                                                                                                                                                                                                                                        विशेषताहरू

                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js index e7c9db8eb8b2..56bfd2578183 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "पर्दैन, धन्यबाद", - "manual_migration_import_button": "अहिले आयात गर्नुहोस्" + "manual_migration_import_button": "अहिले आयात गर्नुहोस्", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html index 6ffa9ce69075..9a1acc4e68fe 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                        Topwebsites

                                                                                                                                                                                                                                                                        Aanbevolen door Pocket

                                                                                                                                                                                                                                                                        Populaire onderwerpen:

                                                                                                                                                                                                                                                                          Highlights

                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                          Topwebsites

                                                                                                                                                                                                                                                                          Aanbevolen door Pocket

                                                                                                                                                                                                                                                                          Populaire onderwerpen:

                                                                                                                                                                                                                                                                            Highlights

                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js index 137efd9a9aa1..c15a02245d8d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "U bent weer bij. Kijk later nog eens voor meer topverhalen van {provider}. Kunt u niet wachten? Selecteer een populair onderwerp voor meer geweldige verhalen van het hele web.", "manual_migration_explanation2": "Probeer Firefox met de bladwijzers, geschiedenis en wachtwoorden van een andere browser.", "manual_migration_cancel_button": "Nee bedankt", - "manual_migration_import_button": "Nu importeren" + "manual_migration_import_button": "Nu importeren", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html index e5e587c937d2..178d48509767 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                            Mest besøkte nettsider

                                                                                                                                                                                                                                                                            Tilrådd av Pocket

                                                                                                                                                                                                                                                                            Populære emne:

                                                                                                                                                                                                                                                                              Høgdepunkt

                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                              Mest besøkte nettsider

                                                                                                                                                                                                                                                                              Tilrådd av Pocket

                                                                                                                                                                                                                                                                              Populære emne:

                                                                                                                                                                                                                                                                                Høgdepunkt

                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js index b1adaa98be41..cbf083531fd8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Det finst ikkje fleire. Kom tilbake seinare for fleire topphistoriar frå {provider}. Kan du ikkje vente? Vel eit populært emne for å finne fleire gode artiklar frå heile nettet.", "manual_migration_explanation2": "Prøv Firefox med bokmerka, historikk og passord frå ein annan nettlesar.", "manual_migration_cancel_button": "Nei takk", - "manual_migration_import_button": "Importer no" + "manual_migration_import_button": "Importer no", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html index 911a2d887494..d6284170e1e7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                ਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂ

                                                                                                                                                                                                                                                                                Pocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀ

                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                  ਸੁਰਖੀਆਂ

                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                  ਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂ

                                                                                                                                                                                                                                                                                  Pocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀ

                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                    ਸੁਰਖੀਆਂ

                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js index 1003d242e4ce..2baef6950049 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ਨਹੀਂ, ਧੰਨਵਾਦ", - "manual_migration_import_button": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ" + "manual_migration_import_button": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html index 30519b7fd13a..8a52082a08cc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                    Popularne

                                                                                                                                                                                                                                                                                    Poleca: Pocket

                                                                                                                                                                                                                                                                                    Popularne tematy:

                                                                                                                                                                                                                                                                                      Wyróżnione

                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                      Popularne

                                                                                                                                                                                                                                                                                      Poleca: Pocket

                                                                                                                                                                                                                                                                                      Popularne tematy:

                                                                                                                                                                                                                                                                                        Wyróżnione

                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js index 04dac3f4d334..409cd84bc71b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To na razie wszystko. {provider} później będzie mieć więcej popularnych artykułów. Nie możesz się doczekać? Wybierz popularny temat, aby znaleźć więcej artykułów z całego Internetu.", "manual_migration_explanation2": "Używaj Firefoksa z zakładkami, historią i hasłami z innej przeglądarki.", "manual_migration_cancel_button": "Nie, dziękuję", - "manual_migration_import_button": "Importuj teraz" + "manual_migration_import_button": "Importuj teraz", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html index e7f91dd194fa..1458c44bc385 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                        Sites preferidos

                                                                                                                                                                                                                                                                                        Recomendado por Pocket

                                                                                                                                                                                                                                                                                        Tópicos populares:

                                                                                                                                                                                                                                                                                          Destaques

                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                          Sites preferidos

                                                                                                                                                                                                                                                                                          Recomendado por Pocket

                                                                                                                                                                                                                                                                                          Tópicos populares:

                                                                                                                                                                                                                                                                                            Destaques

                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js index 315db11d66ef..ed9bc8e0ce70 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Você já viu tudo. Volte mais tarde para mais histórias do {provider}. Não consegue esperar? Escolha um assunto popular para encontrar mais grandes histórias através da web.", "manual_migration_explanation2": "Experimente o Firefox com os favoritos, histórico e senhas salvas em outro navegador.", "manual_migration_cancel_button": "Não, obrigado", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html index ce83f92725ff..9f10a7760ef5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                            Sites mais visitados

                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                            Tópicos populares:

                                                                                                                                                                                                                                                                                              Destaques

                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                              Sites mais visitados

                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                              Tópicos populares:

                                                                                                                                                                                                                                                                                                Destaques

                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js index f489c56f84bf..853005b90d27 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Já apanhou tudo. Verifique mais tarde para mais histórias principais de {provider}. Não pode esperar? Selecione um tópico popular para encontrar mais boas histórias de toda a web.", "manual_migration_explanation2": "Experimente o Firefox com marcadores, histórico e palavras-passe de outro navegador.", "manual_migration_cancel_button": "Não, obrigado", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html index 1a10d0a29196..2b80269d0ae9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                Paginas preferidas

                                                                                                                                                                                                                                                                                                Recumandà da Pocket

                                                                                                                                                                                                                                                                                                Temas populars:

                                                                                                                                                                                                                                                                                                  Accents

                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                  Paginas preferidas

                                                                                                                                                                                                                                                                                                  Recumandà da Pocket

                                                                                                                                                                                                                                                                                                  Temas populars:

                                                                                                                                                                                                                                                                                                    Accents

                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js index 0774ea3e3bae..7e23403ee60c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ussa has ti legì tut las novitads. Turna pli tard per ulteriuras novitads da {provider}. Na pos betg spetgar? Tscherna in tema popular per chattar ulteriuras istorgias ord il web.", "manual_migration_explanation2": "Emprova Firefox cun ils segnapaginas, la cronologia ed ils pleds-clav importads d'in auter navigatur.", "manual_migration_cancel_button": "Na, grazia", - "manual_migration_import_button": "Importar ussa" + "manual_migration_import_button": "Importar ussa", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html index 5f16a4c37299..2174d5b892ce 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                    Site-uri de top

                                                                                                                                                                                                                                                                                                    Recomandat de Pocket

                                                                                                                                                                                                                                                                                                    Subiecte populare:

                                                                                                                                                                                                                                                                                                      Evidențieri

                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                      Site-uri de top

                                                                                                                                                                                                                                                                                                      Recomandat de Pocket

                                                                                                                                                                                                                                                                                                      Subiecte populare:

                                                                                                                                                                                                                                                                                                        Evidențieri

                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js index 121bfeb2cb0b..47ba2bb02399 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ai ajuns la capăt. Revino mai târziu pentru alte articole de la {provider}. Nu mai vrei să aștepți? Alege un subiect popular și găsește alte articole interesante de pe web.", "manual_migration_explanation2": "Încearcă Firefox cu marcajele, istoricul și parolele din alt navigator.", "manual_migration_cancel_button": "Nu, mulțumesc", - "manual_migration_import_button": "Importă acum" + "manual_migration_import_button": "Importă acum", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html index 9f4d6587f0ca..89771940a0f4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                        Топ сайтов

                                                                                                                                                                                                                                                                                                        Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                        Популярные темы:

                                                                                                                                                                                                                                                                                                          Избранное

                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                          Топ сайтов

                                                                                                                                                                                                                                                                                                          Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                          Популярные темы:

                                                                                                                                                                                                                                                                                                            Избранное

                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js index af28459ea278..7c2719cd963d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Вы всё прочитали. Зайдите попозже, чтобы увидеть больше лучших статей от {provider}. Не можете ждать? Выберите популярную тему, чтобы найти больше интересных статей со всего Интернета.", "manual_migration_explanation2": "Попробуйте Firefox с закладками, историей и паролями из другого браузера.", "manual_migration_cancel_button": "Нет, спасибо", - "manual_migration_import_button": "Импортировать сейчас" + "manual_migration_import_button": "Импортировать сейчас", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html index a5fdbf4ece7f..c5387ba6dc27 100644 --- a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                            ප්‍රමුඛ අඩවි

                                                                                                                                                                                                                                                                                                            Pocket විසින් නිර්දේශිතයි

                                                                                                                                                                                                                                                                                                            ජනප්‍රිය මාතෘකා:

                                                                                                                                                                                                                                                                                                              ඉස්මතු කිරීම්

                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                              ප්‍රමුඛ අඩවි

                                                                                                                                                                                                                                                                                                              Pocket විසින් නිර්දේශිතයි

                                                                                                                                                                                                                                                                                                              ජනප්‍රිය මාතෘකා:

                                                                                                                                                                                                                                                                                                                ඉස්මතු කිරීම්

                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js index 4f045b3470b0..cfc3c8b85465 100644 --- a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Firefox වෙනත් ගවේශයකය පිටය සලකුණු, අතීතය සහ මුරපද සමග උත්සාහ කර බලන්න.", "manual_migration_cancel_button": "එපා, ස්තුතියි", - "manual_migration_import_button": "දැන් ආයාත කරන්න" + "manual_migration_import_button": "දැන් ආයාත කරන්න", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html index 9cabb71df99c..44d4b27071bb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                Top stránky

                                                                                                                                                                                                                                                                                                                Odporúča Pocket

                                                                                                                                                                                                                                                                                                                Populárne témy:

                                                                                                                                                                                                                                                                                                                  Vybrané stránky

                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                  Top stránky

                                                                                                                                                                                                                                                                                                                  Odporúča Pocket

                                                                                                                                                                                                                                                                                                                  Populárne témy:

                                                                                                                                                                                                                                                                                                                    Vybrané stránky

                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js index bdc9e7f89993..5be01623d39e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Už ste prečítali všetko. Ďalšie príbehy zo služby {provider} tu nájdete opäť neskôr. Nemôžete sa dočkať? Vyberte si populárnu tému a pozrite sa na ďalšie skvelé príbehy z celého webu.", "manual_migration_explanation2": "Vyskúšajte Firefox so záložkami, históriou prehliadania a heslami s iných prehliadačov.", "manual_migration_cancel_button": "Nie, ďakujem", - "manual_migration_import_button": "Importovať teraz" + "manual_migration_import_button": "Importovať teraz", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html index 22a86f693ccf..996b3c87e6fa 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                    Glavne strani

                                                                                                                                                                                                                                                                                                                    Priporoča Pocket

                                                                                                                                                                                                                                                                                                                    Priljubljene teme:

                                                                                                                                                                                                                                                                                                                      Poudarki

                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                      Glavne strani

                                                                                                                                                                                                                                                                                                                      Priporoča Pocket

                                                                                                                                                                                                                                                                                                                      Priljubljene teme:

                                                                                                                                                                                                                                                                                                                        Poudarki

                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js index 8c04e84fa51e..609095ff1c85 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Zdaj ste seznanjeni z novicami. Vrnite se pozneje in si oglejte nove prispevke iz {provider}. Komaj čakate? Izberite priljubljeno temo in odkrijte več velikih zgodb na spletu.", "manual_migration_explanation2": "Preskusite Firefox z zaznamki, zgodovino in gesli iz drugega brskalnika.", "manual_migration_cancel_button": "Ne, hvala", - "manual_migration_import_button": "Uvozi zdaj" + "manual_migration_import_button": "Uvozi zdaj", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html index 13f17adeb58c..2ddd500629ed 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                        Sajte Kryesues

                                                                                                                                                                                                                                                                                                                        Rekomanduar nga Pocket

                                                                                                                                                                                                                                                                                                                        Tema Popullore:

                                                                                                                                                                                                                                                                                                                          Highlights

                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                          Sajte Kryesues

                                                                                                                                                                                                                                                                                                                          Rekomanduar nga Pocket

                                                                                                                                                                                                                                                                                                                          Tema Popullore:

                                                                                                                                                                                                                                                                                                                            Highlights

                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js index 670e13ee9246..726c37dd1e45 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js @@ -10,7 +10,7 @@ window.gActivityStreamStrings = { "header_recommended_by": "Rekomanduar nga {provider}", "header_bookmarks_placeholder": "Ende s’keni faqerojtës.", "header_stories_from": "nga", - "context_menu_button_sr": "Open context menu for {title}", + "context_menu_button_sr": "Hapni menu konteksti për {title}", "type_label_visited": "Të vizituara", "type_label_bookmarked": "Të faqeruajtura", "type_label_synced": "Njëkohësuar prej pajisjeje tjetër", @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "Përpunoni këtë sajt", "edit_topsites_dismiss_button": "Hidhe tej këtë sajt", "edit_topsites_add_button": "Shtoni", - "edit_topsites_add_button_tooltip": "Add Top Site", + "edit_topsites_add_button_tooltip": "Shtoni Sajt Kryesues", "topsites_form_add_header": "Sajt i Ri Kryesues", "topsites_form_edit_header": "Përpunoni Sajtin Kryesues", "topsites_form_title_placeholder": "Jepni një titull", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Gjithë ç’kish, e dini. Rikontrolloni më vonë për më tepër histori nga {provider}. S’pritni dot? Përzgjidhni një temë popullore që të gjenden në internet më tepër histori të goditura.", "manual_migration_explanation2": "Provojeni Firefox-in me faqerojtës, historik dhe fjalëkalime nga një tjetër shfletues.", "manual_migration_cancel_button": "Jo, Faleminderit", - "manual_migration_import_button": "Importoje Tani" + "manual_migration_import_button": "Importoje Tani", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html index bd6f5b7e4856..46e04572ff03 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                            Омиљени сајтови

                                                                                                                                                                                                                                                                                                                            Предложио Pocket

                                                                                                                                                                                                                                                                                                                            Популарне теме:

                                                                                                                                                                                                                                                                                                                              Истакнуто

                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                              Омиљени сајтови

                                                                                                                                                                                                                                                                                                                              Предложио Pocket

                                                                                                                                                                                                                                                                                                                              Популарне теме:

                                                                                                                                                                                                                                                                                                                                Истакнуто

                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js index 1740ae28ab6a..9195367420a8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Вратите се касније за нове вести {provider}. Не можете дочекати? Изаберите популарну тему да пронађете још занимљивих вести из света.", "manual_migration_explanation2": "Пробајте FIrefox са коришћењем забелешки, историјата и лозинки из другог прегледача.", "manual_migration_cancel_button": "Не, хвала", - "manual_migration_import_button": "Увези сада" + "manual_migration_import_button": "Увези сада", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html index 3ae0ab799a0a..60b47b9cc517 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                Mest besökta

                                                                                                                                                                                                                                                                                                                                Rekommenderas av Pocket

                                                                                                                                                                                                                                                                                                                                Populära ämnen:

                                                                                                                                                                                                                                                                                                                                  Höjdpunkter

                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                  Mest besökta

                                                                                                                                                                                                                                                                                                                                  Rekommenderas av Pocket

                                                                                                                                                                                                                                                                                                                                  Populära ämnen:

                                                                                                                                                                                                                                                                                                                                    Höjdpunkter

                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js index 2bcfee5fe91f..36cb83669a24 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Det finns inte fler. Kom tillbaka senare för fler huvudnyheter från {provider}. Kan du inte vänta? Välj ett populärt ämne för att hitta fler bra nyheter från hela världen.", "manual_migration_explanation2": "Testa Firefox med bokmärken, historik och lösenord från en annan webbläsare.", "manual_migration_cancel_button": "Nej tack", - "manual_migration_import_button": "Importera nu" + "manual_migration_import_button": "Importera nu", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html index a4def70a5ac7..18339b1d0cb4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                    சிறந்த தளங்கள்

                                                                                                                                                                                                                                                                                                                                    Pocket என்பவரால் பரிந்துரைக்கப்பட்டது

                                                                                                                                                                                                                                                                                                                                    பிரபலமான தலைப்புகள்:

                                                                                                                                                                                                                                                                                                                                      மிளிர்ப்புகள்

                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                      சிறந்த தளங்கள்

                                                                                                                                                                                                                                                                                                                                      Pocket என்பவரால் பரிந்துரைக்கப்பட்டது

                                                                                                                                                                                                                                                                                                                                      பிரபலமான தலைப்புகள்:

                                                                                                                                                                                                                                                                                                                                        மிளிர்ப்புகள்

                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js index 44d2fb486594..fc6155ba2747 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "பரவாயில்லை", - "manual_migration_import_button": "இப்போது இறக்கு" + "manual_migration_import_button": "இப்போது இறக்கு", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html index 649f728f8c63..6b55dbdb0b1c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                        మేటి సైట్లు

                                                                                                                                                                                                                                                                                                                                        Pocketచే సిఫార్సు చేయబడినది

                                                                                                                                                                                                                                                                                                                                        ప్రముఖ అంశాలు:

                                                                                                                                                                                                                                                                                                                                          విశేషాలు

                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                          మేటి సైట్లు

                                                                                                                                                                                                                                                                                                                                          Pocketచే సిఫార్సు చేయబడినది

                                                                                                                                                                                                                                                                                                                                          ప్రముఖ అంశాలు:

                                                                                                                                                                                                                                                                                                                                            విశేషాలు

                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js index 5b70d287646a..309e440524fa 100644 --- a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "మీరు పట్టుబడ్డారు. {provider} నుండి మరింత అగ్ర కథనాల కోసం తరువాత తనిఖీ చేయండి. వేచి ఉండలేరా? జాలములోని అంతటి నుండి మరింత గొప్ప కథనాలను కనుగొనడానికి ప్రసిద్ధ అంశం ఎంచుకోండి.", "manual_migration_explanation2": "మరొక విహారిణి లోని ఇష్టాంశాలు, చరిత్ర, సంకేతపదాలతో Firefoxను ప్రయత్నించండి.", "manual_migration_cancel_button": "అడిగినందుకు ధన్యవాదాలు, వద్దు", - "manual_migration_import_button": "ఇప్పుడే దిగుమతి చేయండి" + "manual_migration_import_button": "ఇప్పుడే దిగుమతి చేయండి", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html index 315421c30a02..e98a6d521fad 100644 --- a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                            ไซต์เด่น

                                                                                                                                                                                                                                                                                                                                            แนะนำโดย Pocket

                                                                                                                                                                                                                                                                                                                                            หัวข้อยอดนิยม:

                                                                                                                                                                                                                                                                                                                                              รายการเด่น

                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                              ไซต์เด่น

                                                                                                                                                                                                                                                                                                                                              แนะนำโดย Pocket

                                                                                                                                                                                                                                                                                                                                              หัวข้อยอดนิยม:

                                                                                                                                                                                                                                                                                                                                                รายการเด่น

                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js index abd5696009ee..5fc132dba9ca 100644 --- a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "แก้ไขไซต์นี้", "edit_topsites_dismiss_button": "ไม่สนใจไซต์นี้", "edit_topsites_add_button": "เพิ่ม", - "edit_topsites_add_button_tooltip": "Add Top Site", + "edit_topsites_add_button_tooltip": "เพิ่มไซต์เด่น", "topsites_form_add_header": "ไซต์เด่นใหม่", "topsites_form_edit_header": "แก้ไขไซต์เด่น", "topsites_form_title_placeholder": "ป้อนชื่อเรื่อง", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "คุณได้อ่านเรื่องราวครบทั้งหมดแล้ว คุณสามารถกลับมาตรวจดูเรื่องราวเด่นจาก {provider} ได้ภายหลัง อดใจรอไม่ได้งั้นหรือ? เลือกหัวข้อยอดนิยมเพื่อค้นหาเรื่องราวที่ยอดเยี่ยมจากเว็บต่าง ๆ", "manual_migration_explanation2": "ลอง Firefox ด้วยที่คั่นหน้า, ประวัติ และรหัสผ่านจากเบราว์เซอร์อื่น", "manual_migration_cancel_button": "ไม่ ขอบคุณ", - "manual_migration_import_button": "นำเข้าตอนนี้" + "manual_migration_import_button": "นำเข้าตอนนี้", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html index 4aed35a4d776..baffebc18703 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                Tuktok na mga Site

                                                                                                                                                                                                                                                                                                                                                Inirekomenda ni Pocket

                                                                                                                                                                                                                                                                                                                                                Tanyag na mga paksa:

                                                                                                                                                                                                                                                                                                                                                  Naka-highlight

                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                  Tuktok na mga Site

                                                                                                                                                                                                                                                                                                                                                  Inirekomenda ni Pocket

                                                                                                                                                                                                                                                                                                                                                  Tanyag na mga paksa:

                                                                                                                                                                                                                                                                                                                                                    Naka-highlight

                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js index 25d578fdf2b2..3dfb49051ab9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Nakahabol ka na. Bumalik sa ibang pagkakataon para sa higit pang mga nangungunang kuwento mula sa {provider}. Hindi makapaghintay? Pumili ng isang tanyag na paksa upang makahanap ng higit pang mahusay na mga kuwento mula sa buong web.", "manual_migration_explanation2": "Subukan ang Firefox gamit ang mga bookmark, kasaysayan at mga password mula sa isa pang browser.", "manual_migration_cancel_button": "Salamat na lang", - "manual_migration_import_button": "Angkatin Ngayon" + "manual_migration_import_button": "Angkatin Ngayon", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html index 2616509e9fce..48d70c22e864 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                    Sık Kullanılan Siteler

                                                                                                                                                                                                                                                                                                                                                    Pocket öneriyor

                                                                                                                                                                                                                                                                                                                                                    Popüler konular:

                                                                                                                                                                                                                                                                                                                                                      Öne Çıkanlar

                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                      Sık Kullanılan Siteler

                                                                                                                                                                                                                                                                                                                                                      Pocket öneriyor

                                                                                                                                                                                                                                                                                                                                                      Popüler konular:

                                                                                                                                                                                                                                                                                                                                                        Öne Çıkanlar

                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js index 9ee44ff2d3e7..fd5687cc96f6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Hepsini bitirdiniz. Yeni {provider} haberleri için daha fazla yine gelin. Beklemek istemiyor musunuz? İlginç yazılara ulaşmak için popüler konulardan birini seçebilirsiniz.", "manual_migration_explanation2": "Öteki tarayıcılarınızdaki yer imlerinizi, geçmişinizi ve parolalarınızı Firefox’a aktarabilirsiniz.", "manual_migration_cancel_button": "Gerek yok", - "manual_migration_import_button": "Olur, aktaralım" + "manual_migration_import_button": "Olur, aktaralım", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html index eebf154fba91..678fc35bc68d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                        Популярні сайти

                                                                                                                                                                                                                                                                                                                                                        Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                        Популярні теми:

                                                                                                                                                                                                                                                                                                                                                          Обране

                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                          Популярні сайти

                                                                                                                                                                                                                                                                                                                                                          Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                          Популярні теми:

                                                                                                                                                                                                                                                                                                                                                            Обране

                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js index ce5fea6781d5..fa8f1435be5b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Готово. Перевірте згодом, щоб побачити більше матеріалів від {provider}. Не хочете чекати? Оберіть популярну тему, щоб знайти більше цікавих матеріалів з усього Інтернету.", "manual_migration_explanation2": "Спробуйте Firefox із закладками, історією та паролями з іншого браузера.", "manual_migration_cancel_button": "Ні, дякую", - "manual_migration_import_button": "Імпортувати зараз" + "manual_migration_import_button": "Імпортувати зараз", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html index bf7f33fb6826..67730533c8ce 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                            بہترین سائٹیں

                                                                                                                                                                                                                                                                                                                                                            Pocket کی جانب سے تجویز کردہ

                                                                                                                                                                                                                                                                                                                                                            مشہور مضامین:

                                                                                                                                                                                                                                                                                                                                                              شہ سرخياں

                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                              بہترین سائٹیں

                                                                                                                                                                                                                                                                                                                                                              Pocket کی جانب سے تجویز کردہ

                                                                                                                                                                                                                                                                                                                                                              مشہور مضامین:

                                                                                                                                                                                                                                                                                                                                                                شہ سرخياں

                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js index 511ebfa071fc..d23eed48ca53 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "نہیں شکریہ", - "manual_migration_import_button": "ابھی درآمد کری" + "manual_migration_import_button": "ابھی درآمد کری", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html index 33074817b78d..c3e33e340450 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                Ommabop saytlar

                                                                                                                                                                                                                                                                                                                                                                Pocket tomonidan tavsiya qilingan

                                                                                                                                                                                                                                                                                                                                                                Mashhur mavzular:

                                                                                                                                                                                                                                                                                                                                                                  Ajratilgan saytlar

                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                  Ommabop saytlar

                                                                                                                                                                                                                                                                                                                                                                  Pocket tomonidan tavsiya qilingan

                                                                                                                                                                                                                                                                                                                                                                  Mashhur mavzular:

                                                                                                                                                                                                                                                                                                                                                                    Ajratilgan saytlar

                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js index a0edbe3954b8..7f85d50f61c7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "Yoʻq, kerak emas", - "manual_migration_import_button": "Hozir import qilish" + "manual_migration_import_button": "Hozir import qilish", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html index 26292ed74daf..e5e1a79cb1a4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                    Trang web hàng đầu

                                                                                                                                                                                                                                                                                                                                                                    Được đề nghị bởi Pocket

                                                                                                                                                                                                                                                                                                                                                                    Các chủ đề phổ biến:

                                                                                                                                                                                                                                                                                                                                                                      Nổi bật

                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                      Trang web hàng đầu

                                                                                                                                                                                                                                                                                                                                                                      Được đề nghị bởi Pocket

                                                                                                                                                                                                                                                                                                                                                                      Các chủ đề phổ biến:

                                                                                                                                                                                                                                                                                                                                                                        Nổi bật

                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js index 92361d5b7ff9..35464dab4702 100644 --- a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Thử Firefox với trang đánh dấu, lịch sử và mật khẩu từ trình duyệt khác.", "manual_migration_cancel_button": "Không, cảm ơn", - "manual_migration_import_button": "Nhập ngay bây giờ" + "manual_migration_import_button": "Nhập ngay bây giờ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html index 9f556f76de5e..708afb4d6047 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                        常用网站

                                                                                                                                                                                                                                                                                                                                                                        Pocket 推荐

                                                                                                                                                                                                                                                                                                                                                                        热门主题:

                                                                                                                                                                                                                                                                                                                                                                          集锦

                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                          常用网站

                                                                                                                                                                                                                                                                                                                                                                          Pocket 推荐

                                                                                                                                                                                                                                                                                                                                                                          热门主题:

                                                                                                                                                                                                                                                                                                                                                                            集锦

                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js index 9d7edb1457ba..157e7d788f50 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "所有文章都读完啦!晚点再来,{provider} 将推荐更多热门文章。等不及了?选择一个热门话题,找到更多网上的好文章。", "manual_migration_explanation2": "把在其他浏览器中保存的书签、历史记录和密码带到 Firefox 吧。", "manual_migration_cancel_button": "不用了", - "manual_migration_import_button": "立即导入" + "manual_migration_import_button": "立即导入", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html index 724ab6ba9a2b..9a86c74c707e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                            熱門網站

                                                                                                                                                                                                                                                                                                                                                                            Pocket 推薦

                                                                                                                                                                                                                                                                                                                                                                            熱門主題:

                                                                                                                                                                                                                                                                                                                                                                              精選網站

                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                              熱門網站

                                                                                                                                                                                                                                                                                                                                                                              Pocket 推薦

                                                                                                                                                                                                                                                                                                                                                                              熱門主題:

                                                                                                                                                                                                                                                                                                                                                                                精選網站

                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js index 675c3901b889..aa961feff52c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "所有文章都讀完啦!晚點再來,{provider} 將提供更多推薦故事。等不及了?選擇熱門主題,看看 Web 上各式精采資訊。", "manual_migration_explanation2": "試試將其他瀏覽器的書籤、瀏覽記錄與密碼匯入 Firefox。", "manual_migration_cancel_button": "不必了", - "manual_migration_import_button": "立即匯入" + "manual_migration_import_button": "立即匯入", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html b/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html index 5b9455cf448f..3bec46f23f74 100644 --- a/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html +++ b/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                Top Sites

                                                                                                                                                                                                                                                                                                                                                                                Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                  Highlights

                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                  Top Sites

                                                                                                                                                                                                                                                                                                                                                                                  Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                    Highlights

                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/test/schemas/pings.js b/browser/extensions/activity-stream/test/schemas/pings.js index 7eca2638a6ab..e064a1dd0106 100644 --- a/browser/extensions/activity-stream/test/schemas/pings.js +++ b/browser/extensions/activity-stream/test/schemas/pings.js @@ -13,6 +13,14 @@ export const baseKeys = { export const BasePing = Joi.object().keys(baseKeys).options({allowUnknown: true}); +export const eventsTelemetryExtraKeys = Joi.object().keys({ + session_id: baseKeys.session_id.required(), + page: baseKeys.page.required(), + addon_version: baseKeys.addon_version.required(), + user_prefs: baseKeys.user_prefs.required(), + action_position: Joi.string().optional() +}).options({allowUnknown: false}); + export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { session_id: baseKeys.session_id.required(), page: baseKeys.page.required(), @@ -24,6 +32,31 @@ export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { recommender_type: Joi.string() })); +export const UTUserEventPing = Joi.array().items( + Joi.string().required().valid("activity_stream"), + Joi.string().required().valid("event"), + Joi.string().required().valid([ + "CLICK", + "SEARCH", + "BLOCK", + "DELETE", + "DELETE_CONFIRM", + "DIALOG_CANCEL", + "DIALOG_OPEN", + "OPEN_NEW_WINDOW", + "OPEN_PRIVATE_WINDOW", + "OPEN_NEWTAB_PREFS", + "CLOSE_NEWTAB_PREFS", + "BOOKMARK_DELETE", + "BOOKMARK_ADD", + "PIN", + "UNPIN", + "SAVE_TO_POCKET" + ]), + Joi.string().required(), + eventsTelemetryExtraKeys +); + // Use this to validate actions generated from Redux export const UserEventAction = Joi.object().keys({ type: Joi.string().required(), @@ -150,6 +183,14 @@ export const SessionPing = Joi.object().keys(Object.assign({}, baseKeys, { }).required() })); +export const UTSessionPing = Joi.array().items( + Joi.string().required().valid("activity_stream"), + Joi.string().required().valid("end"), + Joi.string().required().valid("session"), + Joi.string().required(), + eventsTelemetryExtraKeys +); + export function chaiAssertions(_chai, utils) { const {Assertion} = _chai; diff --git a/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx b/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx index b4055f0d01bf..566c0caea60b 100644 --- a/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx +++ b/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx @@ -35,4 +35,16 @@ describe("prerender", () => { const state = store.getState(); assert.equal(state.App.initialized, false); }); + + it("should throw if zero-length HTML content is returned", () => { + const boundPrerender = prerender.bind(null, "en-US", messages, () => ""); + + assert.throws(boundPrerender, Error, /no HTML returned/); + }); + + it("should throw if falsy HTML content is returned", () => { + const boundPrerender = prerender.bind(null, "en-US", messages, () => null); + + assert.throws(boundPrerender, Error, /no HTML returned/); + }); }); diff --git a/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js b/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js index 921c5edb3683..512bad57fcf3 100644 --- a/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js @@ -230,16 +230,16 @@ describe("ActivityStreamMessageChannel", () => { let sandbox; beforeEach(() => { sandbox = sinon.sandbox.create(); - sandbox.spy(global.Components.utils, "reportError"); + sandbox.spy(global.Cu, "reportError"); }); afterEach(() => sandbox.restore()); it("should report an error if the msg.data is missing", () => { mm.onMessage({target: {portID: "foo"}}); - assert.calledOnce(global.Components.utils.reportError); + assert.calledOnce(global.Cu.reportError); }); it("should report an error if the msg.data.type is missing", () => { mm.onMessage({target: {portID: "foo"}, data: "foo"}); - assert.calledOnce(global.Components.utils.reportError); + assert.calledOnce(global.Cu.reportError); }); it("should call onActionFromContent", () => { sinon.stub(mm, "onActionFromContent"); diff --git a/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js index 23ed69af5253..2c9afa54311e 100644 --- a/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js @@ -10,7 +10,7 @@ describe("filterAdult", () => { init: sinon.stub(), update: sinon.stub() }; - global.Components.classes["@mozilla.org/security/hash;1"] = { + global.Cc["@mozilla.org/security/hash;1"] = { createInstance() { return hashStub; } diff --git a/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js index b3bd5381da97..f0374ccea1c2 100644 --- a/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js @@ -42,19 +42,19 @@ describe("PlacesFeed", () => { } }); globals.set("Pocket", {savePage: sandbox.spy()}); - global.Components.classes["@mozilla.org/browser/nav-history-service;1"] = { + global.Cc["@mozilla.org/browser/nav-history-service;1"] = { getService() { return global.PlacesUtils.history; } }; - global.Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"] = { + global.Cc["@mozilla.org/browser/nav-bookmarks-service;1"] = { getService() { return global.PlacesUtils.bookmarks; } }; sandbox.spy(global.Services.obs, "addObserver"); sandbox.spy(global.Services.obs, "removeObserver"); - sandbox.spy(global.Components.utils, "reportError"); + sandbox.spy(global.Cu, "reportError"); feed = new PlacesFeed(); feed.store = {dispatch: sinon.spy()}; @@ -336,7 +336,7 @@ describe("PlacesFeed", () => { const args = [null, "title", null, null, null, TYPE_BOOKMARK, null, FAKE_BOOKMARK.guid]; await observer.onItemChanged(...args); - assert.calledWith(global.Components.utils.reportError, e); + assert.calledWith(global.Cu.reportError, e); }); it.skip("should ignore events that are not of TYPE_BOOKMARK", async () => { await observer.onItemChanged(null, "title", null, null, null, "nottypebookmark"); diff --git a/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js b/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js index 49218b226c93..46ad45cfe851 100644 --- a/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js @@ -65,14 +65,14 @@ describe("SectionsManager", () => { }); describe("#addBuiltInSection", () => { it("should not report an error if options is undefined", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); SectionsManager.addBuiltInSection("feeds.section.topstories", undefined); - assert.notCalled(Components.utils.reportError); + assert.notCalled(Cu.reportError); }); it("should report an error if options is malformed", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); SectionsManager.addBuiltInSection("feeds.section.topstories", "invalid"); - assert.calledOnce(Components.utils.reportError); + assert.calledOnce(Cu.reportError); }); }); describe("#addSection", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js index b4427707f718..5e98f20782be 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js @@ -25,6 +25,7 @@ describe("TelemetryFeed", () => { let instance; let clock; class PingCentre {sendPing() {} uninit() {}} + class UTEventReporting {sendUserEvent() {} sendSessionEndEvent() {} uninit() {}} class PerfService { getMostRecentAbsMarkStartByName() { return 1234; } mark() {} @@ -37,15 +38,19 @@ describe("TelemetryFeed", () => { USER_PREFS_ENCODING, PREF_IMPRESSION_ID, TELEMETRY_PREF - } = injector({"common/PerfService.jsm": {perfService}}); + } = injector({ + "common/PerfService.jsm": {perfService}, + "lib/UTEventReporting.jsm": {UTEventReporting} + }); beforeEach(() => { globals = new GlobalOverrider(); sandbox = globals.sandbox; clock = sinon.useFakeTimers(); - sandbox.spy(global.Components.utils, "reportError"); + sandbox.spy(global.Cu, "reportError"); globals.set("gUUIDGenerator", {generateUUID: () => FAKE_UUID}); globals.set("PingCentre", PingCentre); + globals.set("UTEventReporting", UTEventReporting); instance = new TelemetryFeed(); instance.store = store; }); @@ -58,6 +63,9 @@ describe("TelemetryFeed", () => { it("should add .pingCentre, a PingCentre instance", () => { assert.instanceOf(instance.pingCentre, PingCentre); }); + it("should add .utEvents, a UTEventReporting instance", () => { + assert.instanceOf(instance.utEvents, UTEventReporting); + }); it("should make this.browserOpenNewtabStart() observe browser-open-newtab-start", () => { sandbox.spy(Services.obs, "addObserver"); @@ -233,13 +241,17 @@ describe("TelemetryFeed", () => { it("should call createSessionSendEvent and sendEvent with the sesssion", () => { sandbox.stub(instance, "sendEvent"); sandbox.stub(instance, "createSessionEndEvent"); + sandbox.stub(instance.utEvents, "sendSessionEndEvent"); const session = instance.addSession("foo"); instance.endSession("foo"); // Did we call sendEvent with the result of createSessionEndEvent? assert.calledWith(instance.createSessionEndEvent, session); - assert.calledWith(instance.sendEvent, instance.createSessionEndEvent.firstCall.returnValue); + + let sessionEndEvent = instance.createSessionEndEvent.firstCall.returnValue; + assert.calledWith(instance.sendEvent, sessionEndEvent); + assert.calledWith(instance.utEvents.sendSessionEndEvent, sessionEndEvent); }); }); describe("ping creators", () => { @@ -524,6 +536,13 @@ describe("TelemetryFeed", () => { assert.calledOnce(stub); }); + it("should call .utEvents.uninit", () => { + const stub = sandbox.stub(instance.utEvents, "uninit"); + + instance.uninit(); + + assert.calledOnce(stub); + }); it("should remove the a-s telemetry pref listener", () => { FakePrefs.prototype.prefs[TELEMETRY_PREF] = true; instance = new TelemetryFeed(); @@ -540,7 +559,7 @@ describe("TelemetryFeed", () => { instance.uninit(); - assert.called(global.Components.utils.reportError); + assert.called(global.Cu.reportError); }); it("should make this.browserOpenNewtabStart() stop observing browser-open-newtab-start", async () => { await instance.init(); @@ -623,12 +642,14 @@ describe("TelemetryFeed", () => { it("should send an event on a TELEMETRY_USER_EVENT action", () => { const sendEvent = sandbox.stub(instance, "sendEvent"); const eventCreator = sandbox.stub(instance, "createUserEvent"); + const sendUserEvent = sandbox.stub(instance.utEvents, "sendUserEvent"); const action = {type: at.TELEMETRY_USER_EVENT}; instance.onAction(action); assert.calledWith(eventCreator, action); assert.calledWith(sendEvent, eventCreator.returnValue); + assert.calledWith(sendUserEvent, eventCreator.returnValue); }); it("should send an event on a TELEMETRY_PERFORMANCE_EVENT action", () => { const sendEvent = sandbox.stub(instance, "sendEvent"); diff --git a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js index f645370838b3..59aeef19fa1e 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js @@ -9,7 +9,7 @@ import {Screenshots} from "lib/Screenshots.jsm"; const FAKE_FAVICON = "data987"; const FAKE_FAVICON_SIZE = 128; const FAKE_FRECENCY = 200; -const FAKE_LINKS = new Array(TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW).fill(null).map((v, i) => ({ +const FAKE_LINKS = new Array(2 * TOP_SITES_MAX_SITES_PER_ROW).fill(null).map((v, i) => ({ frecency: FAKE_FRECENCY, url: `http://www.site${i}.com` })); @@ -344,7 +344,7 @@ describe("Top Sites Feed", () => { const sites = await feed.getLinksWithDefaults(); - assert.lengthOf(sites, TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW); + assert.lengthOf(sites, 2 * TOP_SITES_MAX_SITES_PER_ROW); assert.equal(sites[0].url, fakeNewTabUtils.pinnedLinks.links[0].url); assert.equal(sites[1].url, fakeNewTabUtils.pinnedLinks.links[1].url); assert.equal(sites[0].hostname, sites[1].hostname); @@ -657,17 +657,21 @@ describe("Top Sites Feed", () => { const site4 = {url: "example.biz"}; const site5 = {url: "example.info"}; const site6 = {url: "example.news"}; - fakeNewTabUtils.pinnedLinks.links = [site1, site2, site3, site4, site5, site6]; + const site7 = {url: "example.lol"}; + const site8 = {url: "example.golf"}; + fakeNewTabUtils.pinnedLinks.links = [site1, site2, site3, site4, site5, site6, site7, site8]; feed.store.state.Prefs.values.topSitesRows = 1; const site = {url: "foo.bar", label: "foo"}; feed.insert({data: {site}}); - assert.equal(fakeNewTabUtils.pinnedLinks.pin.callCount, 6); + assert.equal(fakeNewTabUtils.pinnedLinks.pin.callCount, 8); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site, 0); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site1, 1); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site2, 2); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site3, 3); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site4, 4); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site5, 5); + assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site6, 6); + assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site7, 7); }); }); describe("#pin", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js index bf6d0343ab2e..ebc29a0a5f15 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js @@ -121,14 +121,14 @@ describe("Top Stories Feed", () => { assert.notCalled(fetchStub); }); it("should report error for invalid configuration", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); sectionsManagerStub.sections.set("topstories", {options: {api_key_pref: "invalid"}}); instance.init(); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); it("should report error for missing api key", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); sectionsManagerStub.sections.set("topstories", { options: { "stories_endpoint": "https://somedomain.org/stories?key=$apiKey", @@ -137,7 +137,7 @@ describe("Top Stories Feed", () => { }); instance.init(); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); it("should load data from cache on init", () => { instance.loadCachedData = sinon.spy(); @@ -207,7 +207,7 @@ describe("Top Stories Feed", () => { it("should report error for unexpected stories response", async () => { let fetchStub = globals.sandbox.stub(); globals.set("fetch", fetchStub); - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); instance.stories_endpoint = "stories-endpoint"; fetchStub.resolves({ok: false, status: 400}); @@ -216,7 +216,7 @@ describe("Top Stories Feed", () => { assert.calledOnce(fetchStub); assert.calledWithExactly(fetchStub, instance.stories_endpoint); assert.notCalled(sectionsManagerStub.updateSection); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); it("should exclude blocked (dismissed) URLs", async () => { let fetchStub = globals.sandbox.stub(); @@ -283,7 +283,7 @@ describe("Top Stories Feed", () => { it("should report error for unexpected topics response", async () => { let fetchStub = globals.sandbox.stub(); globals.set("fetch", fetchStub); - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); instance.topics_endpoint = "topics-endpoint"; fetchStub.resolves({ok: false, status: 400}); @@ -292,7 +292,7 @@ describe("Top Stories Feed", () => { assert.calledOnce(fetchStub); assert.calledWithExactly(fetchStub, instance.topics_endpoint); assert.notCalled(instance.store.dispatch); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); }); describe("#personalization", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js b/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js new file mode 100644 index 000000000000..a831f3752be1 --- /dev/null +++ b/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js @@ -0,0 +1,92 @@ +import { + UTSessionPing, + UTUserEventPing +} from "test/schemas/pings"; +import {GlobalOverrider} from "test/unit/utils"; +import {UTEventReporting} from "lib/UTEventReporting.jsm"; + +const FAKE_EVENT_PING_PC = { + "event": "CLICK", + "source": "TOP_SITES", + "addon_version": "123", + "user_prefs": 63, + "session_id": "abc", + "page": "about:newtab", + "action_position": 5, + "locale": "en-US" +}; +const FAKE_SESSION_PING_PC = { + "session_duration": 1234, + "addon_version": "123", + "user_prefs": 63, + "session_id": "abc", + "page": "about:newtab", + "locale": "en-US" +}; +const FAKE_EVENT_PING_UT = [ + "activity_stream", "event", "CLICK", "TOP_SITES", { + "addon_version": "123", + "user_prefs": "63", + "session_id": "abc", + "page": "about:newtab", + "action_position": "5" + } +]; +const FAKE_SESSION_PING_UT = [ + "activity_stream", "end", "session", "1234", { + "addon_version": "123", + "user_prefs": "63", + "session_id": "abc", + "page": "about:newtab" + } +]; + +describe("UTEventReporting", () => { + let globals; + let sandbox; + let utEvents; + + beforeEach(() => { + globals = new GlobalOverrider(); + sandbox = globals.sandbox; + sandbox.stub(global.Services.telemetry, "setEventRecordingEnabled"); + sandbox.stub(global.Services.telemetry, "recordEvent"); + + utEvents = new UTEventReporting(); + }); + + afterEach(() => { + globals.restore(); + }); + + describe("#sendUserEvent()", () => { + it("should queue up the correct data to send to Events Telemetry", async () => { + utEvents.sendUserEvent(FAKE_EVENT_PING_PC); + assert.calledWithExactly(global.Services.telemetry.recordEvent, ...FAKE_EVENT_PING_UT); + + let ping = global.Services.telemetry.recordEvent.firstCall.args; + assert.validate(ping, UTUserEventPing); + }); + }); + + describe("#sendSessionEndEvent()", () => { + it("should queue up the correct data to send to Events Telemetry", async () => { + utEvents.sendSessionEndEvent(FAKE_SESSION_PING_PC); + assert.calledWithExactly(global.Services.telemetry.recordEvent, ...FAKE_SESSION_PING_UT); + + let ping = global.Services.telemetry.recordEvent.firstCall.args; + assert.validate(ping, UTSessionPing); + }); + }); + + describe("#uninit()", () => { + it("should call setEventRecordingEnabled with a false value", () => { + assert.equal(global.Services.telemetry.setEventRecordingEnabled.firstCall.args[0], "activity_stream"); + assert.equal(global.Services.telemetry.setEventRecordingEnabled.firstCall.args[1], true); + + utEvents.uninit(); + assert.equal(global.Services.telemetry.setEventRecordingEnabled.secondCall.args[0], "activity_stream"); + assert.equal(global.Services.telemetry.setEventRecordingEnabled.secondCall.args[1], false); + }); + }); +}); diff --git a/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js b/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js index 0415b7c5c7b8..68166d33deb7 100644 --- a/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js @@ -44,7 +44,7 @@ describe("User Domain Affinity Provider", () => { executeQuery: () => ({root: {childCount: 1, getChild: index => ({uri: "www.somedomain.org", accessCount: 1})}}) } }); - global.Components.classes["@mozilla.org/browser/nav-history-service;1"] = { + global.Cc["@mozilla.org/browser/nav-history-service;1"] = { getService() { return global.PlacesUtils.history; } diff --git a/browser/extensions/activity-stream/test/unit/unit-entry.js b/browser/extensions/activity-stream/test/unit/unit-entry.js index 7b6e188dc28b..2cf49a1de209 100644 --- a/browser/extensions/activity-stream/test/unit/unit-entry.js +++ b/browser/extensions/activity-stream/test/unit/unit-entry.js @@ -1,8 +1,7 @@ import {EventEmitter, FakePerformance, FakePrefs, GlobalOverrider} from "test/unit/utils"; -import Adapter from "enzyme-adapter-react-15"; +import Adapter from "enzyme-adapter-react-16"; import {chaiAssertions} from "test/schemas/pings"; import enzyme from "enzyme"; - enzyme.configure({adapter: new Adapter()}); // Cause React warnings to make tests that trigger them fail @@ -28,23 +27,20 @@ let overrider = new GlobalOverrider(); overrider.set({ AppConstants: {MOZILLA_OFFICIAL: true}, - Components: { - classes: {}, - interfaces: {nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5}}, - utils: { - import() {}, - importGlobalProperties() {}, - reportError() {}, - now: () => window.performance.now() - }, - isSuccessCode: () => true - }, ChromeUtils: { defineModuleGetter() {}, import() {} }, + Components: {isSuccessCode: () => true}, // eslint-disable-next-line object-shorthand ContentSearchUIController: function() {}, // NB: This is a function/constructor + Cc: {}, + Ci: {nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5}}, + Cu: { + importGlobalProperties() {}, + now: () => window.performance.now(), + reportError() {} + }, dump() {}, fetch() {}, // eslint-disable-next-line object-shorthand @@ -66,6 +62,10 @@ overrider.set({ addObserver() {}, removeObserver() {} }, + telemetry: { + setEventRecordingEnabled: () => {}, + recordEvent: eventDetails => {} + }, console: {logStringMessage: () => {}}, prefs: { addObserver() {}, diff --git a/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE b/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE new file mode 100644 index 000000000000..188fb2b0bd8e --- /dev/null +++ b/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/browser/extensions/activity-stream/vendor/react-dev.js b/browser/extensions/activity-stream/vendor/react-dev.js index 9f8f480fcf02..654f3a82b6d5 100644 --- a/browser/extensions/activity-stream/vendor/react-dev.js +++ b/browser/extensions/activity-stream/vendor/react-dev.js @@ -1,3328 +1,27 @@ - /** - * React v15.5.4 - */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oHello World; - * } - * }); - * - * The class specification supports a specific protocol of methods that have - * special meaning (e.g. `render`). See `ReactClassInterface` for - * more the comprehensive protocol. Any other properties and methods in the - * class specification will be available on the prototype. - * - * @interface ReactClassInterface - * @internal - */ -var ReactClassInterface = { - - /** - * An array of Mixin objects to include when defining your component. - * - * @type {array} - * @optional - */ - mixins: 'DEFINE_MANY', - - /** - * An object containing properties and methods that should be defined on - * the component's constructor instead of its prototype (static methods). - * - * @type {object} - * @optional - */ - statics: 'DEFINE_MANY', - - /** - * Definition of prop types for this component. - * - * @type {object} - * @optional - */ - propTypes: 'DEFINE_MANY', - - /** - * Definition of context types for this component. - * - * @type {object} - * @optional - */ - contextTypes: 'DEFINE_MANY', - - /** - * Definition of context types this component sets for its children. - * - * @type {object} - * @optional - */ - childContextTypes: 'DEFINE_MANY', - - // ==== Definition methods ==== - - /** - * Invoked when the component is mounted. Values in the mapping will be set on - * `this.props` if that prop is not specified (i.e. using an `in` check). - * - * This method is invoked before `getInitialState` and therefore cannot rely - * on `this.state` or use `this.setState`. - * - * @return {object} - * @optional - */ - getDefaultProps: 'DEFINE_MANY_MERGED', - - /** - * Invoked once before the component is mounted. The return value will be used - * as the initial value of `this.state`. - * - * getInitialState: function() { - * return { - * isOn: false, - * fooBaz: new BazFoo() - * } - * } - * - * @return {object} - * @optional - */ - getInitialState: 'DEFINE_MANY_MERGED', - - /** - * @return {object} - * @optional - */ - getChildContext: 'DEFINE_MANY_MERGED', - - /** - * Uses props from `this.props` and state from `this.state` to render the - * structure of the component. - * - * No guarantees are made about when or how often this method is invoked, so - * it must not have side effects. - * - * render: function() { - * var name = this.props.name; - * return
                                                                                                                                                                                                                                                                                                                                                                                    Hello, {name}!
                                                                                                                                                                                                                                                                                                                                                                                    ; - * } - * - * @return {ReactComponent} - * @required - */ - render: 'DEFINE_ONCE', - - // ==== Delegate methods ==== - - /** - * Invoked when the component is initially created and about to be mounted. - * This may have side effects, but any external subscriptions or data created - * by this method must be cleaned up in `componentWillUnmount`. - * - * @optional - */ - componentWillMount: 'DEFINE_MANY', - - /** - * Invoked when the component has been mounted and has a DOM representation. - * However, there is no guarantee that the DOM node is in the document. - * - * Use this as an opportunity to operate on the DOM when the component has - * been mounted (initialized and rendered) for the first time. - * - * @param {DOMElement} rootNode DOM element representing the component. - * @optional - */ - componentDidMount: 'DEFINE_MANY', - - /** - * Invoked before the component receives new props. - * - * Use this as an opportunity to react to a prop transition by updating the - * state using `this.setState`. Current props are accessed via `this.props`. - * - * componentWillReceiveProps: function(nextProps, nextContext) { - * this.setState({ - * likesIncreasing: nextProps.likeCount > this.props.likeCount - * }); - * } - * - * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop - * transition may cause a state change, but the opposite is not true. If you - * need it, you are probably looking for `componentWillUpdate`. - * - * @param {object} nextProps - * @optional - */ - componentWillReceiveProps: 'DEFINE_MANY', - - /** - * Invoked while deciding if the component should be updated as a result of - * receiving new props, state and/or context. - * - * Use this as an opportunity to `return false` when you're certain that the - * transition to the new props/state/context will not require a component - * update. - * - * shouldComponentUpdate: function(nextProps, nextState, nextContext) { - * return !equal(nextProps, this.props) || - * !equal(nextState, this.state) || - * !equal(nextContext, this.context); - * } - * - * @param {object} nextProps - * @param {?object} nextState - * @param {?object} nextContext - * @return {boolean} True if the component should update. - * @optional - */ - shouldComponentUpdate: 'DEFINE_ONCE', - - /** - * Invoked when the component is about to update due to a transition from - * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` - * and `nextContext`. - * - * Use this as an opportunity to perform preparation before an update occurs. - * - * NOTE: You **cannot** use `this.setState()` in this method. - * - * @param {object} nextProps - * @param {?object} nextState - * @param {?object} nextContext - * @param {ReactReconcileTransaction} transaction - * @optional - */ - componentWillUpdate: 'DEFINE_MANY', - - /** - * Invoked when the component's DOM representation has been updated. - * - * Use this as an opportunity to operate on the DOM when the component has - * been updated. - * - * @param {object} prevProps - * @param {?object} prevState - * @param {?object} prevContext - * @param {DOMElement} rootNode DOM element representing the component. - * @optional - */ - componentDidUpdate: 'DEFINE_MANY', - - /** - * Invoked when the component is about to be removed from its parent and have - * its DOM representation destroyed. - * - * Use this as an opportunity to deallocate any external resources. - * - * NOTE: There is no `componentDidUnmount` since your component will have been - * destroyed by that point. - * - * @optional - */ - componentWillUnmount: 'DEFINE_MANY', - - // ==== Advanced methods ==== - - /** - * Updates the component's currently mounted DOM representation. - * - * By default, this implements React's rendering and reconciliation algorithm. - * Sophisticated clients may wish to override this. - * - * @param {ReactReconcileTransaction} transaction - * @internal - * @overridable - */ - updateComponent: 'OVERRIDE_BASE' - -}; - -/** - * Mapping from class specification keys to special processing functions. - * - * Although these are declared like instance properties in the specification - * when defining classes using `React.createClass`, they are actually static - * and are accessible on the constructor instead of the prototype. Despite - * being static, they must be defined outside of the "statics" key under - * which all other static methods are defined. - */ -var RESERVED_SPEC_KEYS = { - displayName: function (Constructor, displayName) { - Constructor.displayName = displayName; - }, - mixins: function (Constructor, mixins) { - if (mixins) { - for (var i = 0; i < mixins.length; i++) { - mixSpecIntoComponent(Constructor, mixins[i]); - } - } - }, - childContextTypes: function (Constructor, childContextTypes) { - if ("development" !== 'production') { - validateTypeDef(Constructor, childContextTypes, 'childContext'); - } - Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); - }, - contextTypes: function (Constructor, contextTypes) { - if ("development" !== 'production') { - validateTypeDef(Constructor, contextTypes, 'context'); - } - Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); - }, - /** - * Special case getDefaultProps which should move into statics but requires - * automatic merging. - */ - getDefaultProps: function (Constructor, getDefaultProps) { - if (Constructor.getDefaultProps) { - Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); - } else { - Constructor.getDefaultProps = getDefaultProps; - } - }, - propTypes: function (Constructor, propTypes) { - if ("development" !== 'production') { - validateTypeDef(Constructor, propTypes, 'prop'); - } - Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); - }, - statics: function (Constructor, statics) { - mixStaticSpecIntoComponent(Constructor, statics); - }, - autobind: function () {} }; - -function validateTypeDef(Constructor, typeDef, location) { - for (var propName in typeDef) { - if (typeDef.hasOwnProperty(propName)) { - // use a warning instead of an invariant so components - // don't show up in prod but only in __DEV__ - "development" !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0; - } - } -} - -function validateMethodOverride(isAlreadyDefined, name) { - var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; - - // Disallow overriding of base class methods unless explicitly allowed. - if (ReactClassMixin.hasOwnProperty(name)) { - !(specPolicy === 'OVERRIDE_BASE') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0; - } - - // Disallow defining methods more than once unless explicitly allowed. - if (isAlreadyDefined) { - !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0; - } -} - -/** - * Mixin helper which handles policy validation and reserved - * specification keys when building React classes. - */ -function mixSpecIntoComponent(Constructor, spec) { - if (!spec) { - if ("development" !== 'production') { - var typeofSpec = typeof spec; - var isMixinValid = typeofSpec === 'object' && spec !== null; - - "development" !== 'production' ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0; - } - - return; - } - - !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0; - !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0; - - var proto = Constructor.prototype; - var autoBindPairs = proto.__reactAutoBindPairs; - - // By handling mixins before any other properties, we ensure the same - // chaining order is applied to methods with DEFINE_MANY policy, whether - // mixins are listed before or after these methods in the spec. - if (spec.hasOwnProperty(MIXINS_KEY)) { - RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); - } - - for (var name in spec) { - if (!spec.hasOwnProperty(name)) { - continue; - } - - if (name === MIXINS_KEY) { - // We have already handled mixins in a special case above. - continue; - } - - var property = spec[name]; - var isAlreadyDefined = proto.hasOwnProperty(name); - validateMethodOverride(isAlreadyDefined, name); - - if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { - RESERVED_SPEC_KEYS[name](Constructor, property); - } else { - // Setup methods on prototype: - // The following member methods should not be automatically bound: - // 1. Expected ReactClass methods (in the "interface"). - // 2. Overridden methods (that were mixed in). - var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); - var isFunction = typeof property === 'function'; - var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; - - if (shouldAutoBind) { - autoBindPairs.push(name, property); - proto[name] = property; - } else { - if (isAlreadyDefined) { - var specPolicy = ReactClassInterface[name]; - - // These cases should already be caught by validateMethodOverride. - !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0; - - // For methods which are defined more than once, call the existing - // methods before calling the new property, merging if appropriate. - if (specPolicy === 'DEFINE_MANY_MERGED') { - proto[name] = createMergedResultFunction(proto[name], property); - } else if (specPolicy === 'DEFINE_MANY') { - proto[name] = createChainedFunction(proto[name], property); - } - } else { - proto[name] = property; - if ("development" !== 'production') { - // Add verbose displayName to the function, which helps when looking - // at profiling tools. - if (typeof property === 'function' && spec.displayName) { - proto[name].displayName = spec.displayName + '_' + name; - } - } - } - } - } - } -} - -function mixStaticSpecIntoComponent(Constructor, statics) { - if (!statics) { - return; - } - for (var name in statics) { - var property = statics[name]; - if (!statics.hasOwnProperty(name)) { - continue; - } - - var isReserved = name in RESERVED_SPEC_KEYS; - !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0; - - var isInherited = name in Constructor; - !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0; - Constructor[name] = property; - } -} - -/** - * Merge two objects, but throw if both contain the same key. - * - * @param {object} one The first object, which is mutated. - * @param {object} two The second object - * @return {object} one after it has been mutated to contain everything in two. - */ -function mergeIntoWithNoDuplicateKeys(one, two) { - !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0; - - for (var key in two) { - if (two.hasOwnProperty(key)) { - !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0; - one[key] = two[key]; - } - } - return one; -} - -/** - * Creates a function that invokes two functions and merges their return values. - * - * @param {function} one Function to invoke first. - * @param {function} two Function to invoke second. - * @return {function} Function that invokes the two argument functions. - * @private - */ -function createMergedResultFunction(one, two) { - return function mergedResult() { - var a = one.apply(this, arguments); - var b = two.apply(this, arguments); - if (a == null) { - return b; - } else if (b == null) { - return a; - } - var c = {}; - mergeIntoWithNoDuplicateKeys(c, a); - mergeIntoWithNoDuplicateKeys(c, b); - return c; - }; -} - -/** - * Creates a function that invokes two functions and ignores their return vales. - * - * @param {function} one Function to invoke first. - * @param {function} two Function to invoke second. - * @return {function} Function that invokes the two argument functions. - * @private - */ -function createChainedFunction(one, two) { - return function chainedFunction() { - one.apply(this, arguments); - two.apply(this, arguments); - }; -} - -/** - * Binds a method to the component. - * - * @param {object} component Component whose method is going to be bound. - * @param {function} method Method to be bound. - * @return {function} The bound method. - */ -function bindAutoBindMethod(component, method) { - var boundMethod = method.bind(component); - if ("development" !== 'production') { - boundMethod.__reactBoundContext = component; - boundMethod.__reactBoundMethod = method; - boundMethod.__reactBoundArguments = null; - var componentName = component.constructor.displayName; - var _bind = boundMethod.bind; - boundMethod.bind = function (newThis) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - // User is trying to bind() an autobound method; we effectively will - // ignore the value of "this" that the user is trying to use, so - // let's warn. - if (newThis !== component && newThis !== null) { - "development" !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0; - } else if (!args.length) { - "development" !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0; - return boundMethod; - } - var reboundMethod = _bind.apply(boundMethod, arguments); - reboundMethod.__reactBoundContext = component; - reboundMethod.__reactBoundMethod = method; - reboundMethod.__reactBoundArguments = args; - return reboundMethod; - }; - } - return boundMethod; -} - -/** - * Binds all auto-bound methods in a component. - * - * @param {object} component Component whose method is going to be bound. - */ -function bindAutoBindMethods(component) { - var pairs = component.__reactAutoBindPairs; - for (var i = 0; i < pairs.length; i += 2) { - var autoBindKey = pairs[i]; - var method = pairs[i + 1]; - component[autoBindKey] = bindAutoBindMethod(component, method); - } -} - -/** - * Add more to the ReactClass base class. These are all legacy features and - * therefore not already part of the modern ReactComponent. - */ -var ReactClassMixin = { - - /** - * TODO: This will be deprecated because state should always keep a consistent - * type signature and the only use case for this, is to avoid that. - */ - replaceState: function (newState, callback) { - this.updater.enqueueReplaceState(this, newState); - if (callback) { - this.updater.enqueueCallback(this, callback, 'replaceState'); - } - }, - - /** - * Checks whether or not this composite component is mounted. - * @return {boolean} True if mounted, false otherwise. - * @protected - * @final - */ - isMounted: function () { - return this.updater.isMounted(this); - } -}; - -var ReactClassComponent = function () {}; -_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); - -var didWarnDeprecated = false; - -/** - * Module for creating composite components. - * - * @class ReactClass - */ -var ReactClass = { - - /** - * Creates a composite component class given a class specification. - * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass - * - * @param {object} spec Class specification (which must define `render`). - * @return {function} Component constructor function. - * @public - */ - createClass: function (spec) { - if ("development" !== 'production') { - "development" !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0; - didWarnDeprecated = true; - } - - // To keep our warnings more understandable, we'll use a little hack here to - // ensure that Constructor.name !== 'Constructor'. This makes sure we don't - // unnecessarily identify a class without displayName as 'Constructor'. - var Constructor = identity(function (props, context, updater) { - // This constructor gets overridden by mocks. The argument is used - // by mocks to assert on what gets mounted. - - if ("development" !== 'production') { - "development" !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0; - } - - // Wire up auto-binding - if (this.__reactAutoBindPairs.length) { - bindAutoBindMethods(this); - } - - this.props = props; - this.context = context; - this.refs = emptyObject; - this.updater = updater || ReactNoopUpdateQueue; - - this.state = null; - - // ReactClasses doesn't have constructors. Instead, they use the - // getInitialState and componentWillMount methods for initialization. - - var initialState = this.getInitialState ? this.getInitialState() : null; - if ("development" !== 'production') { - // We allow auto-mocks to proceed as if they're returning null. - if (initialState === undefined && this.getInitialState._isMockFunction) { - // This is probably bad practice. Consider warning here and - // deprecating this convenience. - initialState = null; - } - } - !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0; - - this.state = initialState; - }); - Constructor.prototype = new ReactClassComponent(); - Constructor.prototype.constructor = Constructor; - Constructor.prototype.__reactAutoBindPairs = []; - - injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); - - mixSpecIntoComponent(Constructor, spec); - - // Initialize the defaultProps property after all mixins have been merged. - if (Constructor.getDefaultProps) { - Constructor.defaultProps = Constructor.getDefaultProps(); - } - - if ("development" !== 'production') { - // This is a tag to indicate that the use of these method names is ok, - // since it's used with createClass. If it's not, then it's likely a - // mistake so we'll warn you to use the static property, property - // initializer or constructor respectively. - if (Constructor.getDefaultProps) { - Constructor.getDefaultProps.isReactClassApproved = {}; - } - if (Constructor.prototype.getInitialState) { - Constructor.prototype.getInitialState.isReactClassApproved = {}; - } - } - - !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0; - - if ("development" !== 'production') { - "development" !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0; - "development" !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0; - } - - // Reduce time spent doing lookups by setting these on the prototype. - for (var methodName in ReactClassInterface) { - if (!Constructor.prototype[methodName]) { - Constructor.prototype[methodName] = null; - } - } - - return Constructor; - }, - - injection: { - injectMixin: function (mixin) { - injectedMixins.push(mixin); - } - } - -}; - -module.exports = ReactClass; -},{"10":10,"13":13,"14":14,"25":25,"28":28,"29":29,"30":30,"31":31,"6":6}],6:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactNoopUpdateQueue = _dereq_(13); - -var canDefineProperty = _dereq_(20); -var emptyObject = _dereq_(28); -var invariant = _dereq_(29); -var warning = _dereq_(30); - -/** - * Base class helpers for the updating state of a component. - */ -function ReactComponent(props, context, updater) { - this.props = props; - this.context = context; - this.refs = emptyObject; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -ReactComponent.prototype.isReactComponent = {}; - -/** - * Sets a subset of the state. Always use this to mutate - * state. You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * There is no guarantee that calls to `setState` will run synchronously, - * as they may eventually be batched together. You can provide an optional - * callback that will be executed when the call to setState is actually - * completed. - * - * When a function is provided to setState, it will be called at some point in - * the future (not synchronously). It will be called with the up to date - * component arguments (state, props, context). These values can be different - * from this.* because your function may be called after receiveProps but before - * shouldComponentUpdate, and this new state, props, and context will not yet be - * assigned to this. - * - * @param {object|function} partialState Next partial state or function to - * produce next partial state to be merged with current state. - * @param {?function} callback Called after state is updated. - * @final - * @protected - */ -ReactComponent.prototype.setState = function (partialState, callback) { - !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0; - this.updater.enqueueSetState(this, partialState); - if (callback) { - this.updater.enqueueCallback(this, callback, 'setState'); - } -}; - -/** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {?function} callback Called after update is complete. - * @final - * @protected - */ -ReactComponent.prototype.forceUpdate = function (callback) { - this.updater.enqueueForceUpdate(this); - if (callback) { - this.updater.enqueueCallback(this, callback, 'forceUpdate'); - } -}; - -/** - * Deprecated APIs. These APIs used to exist on classic React classes but since - * we would like to deprecate them, we're not going to move them over to this - * modern base class. Instead, we define a getter that warns if it's accessed. - */ -if ("development" !== 'production') { - var deprecatedAPIs = { - isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], - replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] - }; - var defineDeprecationWarning = function (methodName, info) { - if (canDefineProperty) { - Object.defineProperty(ReactComponent.prototype, methodName, { - get: function () { - "development" !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0; - return undefined; - } - }); - } - }; - for (var fnName in deprecatedAPIs) { - if (deprecatedAPIs.hasOwnProperty(fnName)) { - defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); - } - } -} - -module.exports = ReactComponent; -},{"13":13,"20":20,"25":25,"28":28,"29":29,"30":30}],7:[function(_dereq_,module,exports){ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactCurrentOwner = _dereq_(8); - -var invariant = _dereq_(29); -var warning = _dereq_(30); - -function isNative(fn) { - // Based on isNative() from Lodash - var funcToString = Function.prototype.toString; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var reIsNative = RegExp('^' + funcToString - // Take an example native function source for comparison - .call(hasOwnProperty) - // Strip regex characters so we can use it for regex - .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - // Remove hasOwnProperty from the template to make it generic - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); - try { - var source = funcToString.call(fn); - return reIsNative.test(source); - } catch (err) { - return false; - } -} - -var canUseCollections = -// Array.from -typeof Array.from === 'function' && -// Map -typeof Map === 'function' && isNative(Map) && -// Map.prototype.keys -Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) && -// Set -typeof Set === 'function' && isNative(Set) && -// Set.prototype.keys -Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys); - -var setItem; -var getItem; -var removeItem; -var getItemIDs; -var addRoot; -var removeRoot; -var getRootIDs; - -if (canUseCollections) { - var itemMap = new Map(); - var rootIDSet = new Set(); - - setItem = function (id, item) { - itemMap.set(id, item); - }; - getItem = function (id) { - return itemMap.get(id); - }; - removeItem = function (id) { - itemMap['delete'](id); - }; - getItemIDs = function () { - return Array.from(itemMap.keys()); - }; - - addRoot = function (id) { - rootIDSet.add(id); - }; - removeRoot = function (id) { - rootIDSet['delete'](id); - }; - getRootIDs = function () { - return Array.from(rootIDSet.keys()); - }; -} else { - var itemByKey = {}; - var rootByKey = {}; - - // Use non-numeric keys to prevent V8 performance issues: - // https://github.com/facebook/react/pull/7232 - var getKeyFromID = function (id) { - return '.' + id; - }; - var getIDFromKey = function (key) { - return parseInt(key.substr(1), 10); - }; - - setItem = function (id, item) { - var key = getKeyFromID(id); - itemByKey[key] = item; - }; - getItem = function (id) { - var key = getKeyFromID(id); - return itemByKey[key]; - }; - removeItem = function (id) { - var key = getKeyFromID(id); - delete itemByKey[key]; - }; - getItemIDs = function () { - return Object.keys(itemByKey).map(getIDFromKey); - }; - - addRoot = function (id) { - var key = getKeyFromID(id); - rootByKey[key] = true; - }; - removeRoot = function (id) { - var key = getKeyFromID(id); - delete rootByKey[key]; - }; - getRootIDs = function () { - return Object.keys(rootByKey).map(getIDFromKey); - }; -} - -var unmountedIDs = []; - -function purgeDeep(id) { - var item = getItem(id); - if (item) { - var childIDs = item.childIDs; - - removeItem(id); - childIDs.forEach(purgeDeep); - } -} - -function describeComponentFrame(name, source, ownerName) { - return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); -} - -function getDisplayName(element) { - if (element == null) { - return '#empty'; - } else if (typeof element === 'string' || typeof element === 'number') { - return '#text'; - } else if (typeof element.type === 'string') { - return element.type; - } else { - return element.type.displayName || element.type.name || 'Unknown'; - } -} - -function describeID(id) { - var name = ReactComponentTreeHook.getDisplayName(id); - var element = ReactComponentTreeHook.getElement(id); - var ownerID = ReactComponentTreeHook.getOwnerID(id); - var ownerName; - if (ownerID) { - ownerName = ReactComponentTreeHook.getDisplayName(ownerID); - } - "development" !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0; - return describeComponentFrame(name, element && element._source, ownerName); -} - -var ReactComponentTreeHook = { - onSetChildren: function (id, nextChildIDs) { - var item = getItem(id); - !item ? "development" !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; - item.childIDs = nextChildIDs; - - for (var i = 0; i < nextChildIDs.length; i++) { - var nextChildID = nextChildIDs[i]; - var nextChild = getItem(nextChildID); - !nextChild ? "development" !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0; - !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? "development" !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0; - !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0; - if (nextChild.parentID == null) { - nextChild.parentID = id; - // TODO: This shouldn't be necessary but mounting a new root during in - // componentWillMount currently causes not-yet-mounted components to - // be purged from our tree data so their parent id is missing. - } - !(nextChild.parentID === id) ? "development" !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0; - } - }, - onBeforeMountComponent: function (id, element, parentID) { - var item = { - element: element, - parentID: parentID, - text: null, - childIDs: [], - isMounted: false, - updateCount: 0 - }; - setItem(id, item); - }, - onBeforeUpdateComponent: function (id, element) { - var item = getItem(id); - if (!item || !item.isMounted) { - // We may end up here as a result of setState() in componentWillUnmount(). - // In this case, ignore the element. - return; - } - item.element = element; - }, - onMountComponent: function (id) { - var item = getItem(id); - !item ? "development" !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; - item.isMounted = true; - var isRoot = item.parentID === 0; - if (isRoot) { - addRoot(id); - } - }, - onUpdateComponent: function (id) { - var item = getItem(id); - if (!item || !item.isMounted) { - // We may end up here as a result of setState() in componentWillUnmount(). - // In this case, ignore the element. - return; - } - item.updateCount++; - }, - onUnmountComponent: function (id) { - var item = getItem(id); - if (item) { - // We need to check if it exists. - // `item` might not exist if it is inside an error boundary, and a sibling - // error boundary child threw while mounting. Then this instance never - // got a chance to mount, but it still gets an unmounting event during - // the error boundary cleanup. - item.isMounted = false; - var isRoot = item.parentID === 0; - if (isRoot) { - removeRoot(id); - } - } - unmountedIDs.push(id); - }, - purgeUnmountedComponents: function () { - if (ReactComponentTreeHook._preventPurging) { - // Should only be used for testing. - return; - } - - for (var i = 0; i < unmountedIDs.length; i++) { - var id = unmountedIDs[i]; - purgeDeep(id); - } - unmountedIDs.length = 0; - }, - isMounted: function (id) { - var item = getItem(id); - return item ? item.isMounted : false; - }, - getCurrentStackAddendum: function (topElement) { - var info = ''; - if (topElement) { - var name = getDisplayName(topElement); - var owner = topElement._owner; - info += describeComponentFrame(name, topElement._source, owner && owner.getName()); - } - - var currentOwner = ReactCurrentOwner.current; - var id = currentOwner && currentOwner._debugID; - - info += ReactComponentTreeHook.getStackAddendumByID(id); - return info; - }, - getStackAddendumByID: function (id) { - var info = ''; - while (id) { - info += describeID(id); - id = ReactComponentTreeHook.getParentID(id); - } - return info; - }, - getChildIDs: function (id) { - var item = getItem(id); - return item ? item.childIDs : []; - }, - getDisplayName: function (id) { - var element = ReactComponentTreeHook.getElement(id); - if (!element) { - return null; - } - return getDisplayName(element); - }, - getElement: function (id) { - var item = getItem(id); - return item ? item.element : null; - }, - getOwnerID: function (id) { - var element = ReactComponentTreeHook.getElement(id); - if (!element || !element._owner) { - return null; - } - return element._owner._debugID; - }, - getParentID: function (id) { - var item = getItem(id); - return item ? item.parentID : null; - }, - getSource: function (id) { - var item = getItem(id); - var element = item ? item.element : null; - var source = element != null ? element._source : null; - return source; - }, - getText: function (id) { - var element = ReactComponentTreeHook.getElement(id); - if (typeof element === 'string') { - return element; - } else if (typeof element === 'number') { - return '' + element; - } else { - return null; - } - }, - getUpdateCount: function (id) { - var item = getItem(id); - return item ? item.updateCount : 0; - }, - - - getRootIDs: getRootIDs, - getRegisteredIDs: getItemIDs -}; - -module.exports = ReactComponentTreeHook; -},{"25":25,"29":29,"30":30,"8":8}],8:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -/** - * Keeps track of the current owner. - * - * The current owner is the component who should own any components that are - * currently being constructed. - */ -var ReactCurrentOwner = { - - /** - * @internal - * @type {ReactComponent} - */ - current: null - -}; - -module.exports = ReactCurrentOwner; -},{}],9:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactElement = _dereq_(10); - -/** - * Create a factory that creates HTML tag elements. - * - * @private - */ -var createDOMFactory = ReactElement.createFactory; -if ("development" !== 'production') { - var ReactElementValidator = _dereq_(12); - createDOMFactory = ReactElementValidator.createFactory; -} - -/** - * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes. - * This is also accessible via `React.DOM`. - * - * @public - */ -var ReactDOMFactories = { - a: createDOMFactory('a'), - abbr: createDOMFactory('abbr'), - address: createDOMFactory('address'), - area: createDOMFactory('area'), - article: createDOMFactory('article'), - aside: createDOMFactory('aside'), - audio: createDOMFactory('audio'), - b: createDOMFactory('b'), - base: createDOMFactory('base'), - bdi: createDOMFactory('bdi'), - bdo: createDOMFactory('bdo'), - big: createDOMFactory('big'), - blockquote: createDOMFactory('blockquote'), - body: createDOMFactory('body'), - br: createDOMFactory('br'), - button: createDOMFactory('button'), - canvas: createDOMFactory('canvas'), - caption: createDOMFactory('caption'), - cite: createDOMFactory('cite'), - code: createDOMFactory('code'), - col: createDOMFactory('col'), - colgroup: createDOMFactory('colgroup'), - data: createDOMFactory('data'), - datalist: createDOMFactory('datalist'), - dd: createDOMFactory('dd'), - del: createDOMFactory('del'), - details: createDOMFactory('details'), - dfn: createDOMFactory('dfn'), - dialog: createDOMFactory('dialog'), - div: createDOMFactory('div'), - dl: createDOMFactory('dl'), - dt: createDOMFactory('dt'), - em: createDOMFactory('em'), - embed: createDOMFactory('embed'), - fieldset: createDOMFactory('fieldset'), - figcaption: createDOMFactory('figcaption'), - figure: createDOMFactory('figure'), - footer: createDOMFactory('footer'), - form: createDOMFactory('form'), - h1: createDOMFactory('h1'), - h2: createDOMFactory('h2'), - h3: createDOMFactory('h3'), - h4: createDOMFactory('h4'), - h5: createDOMFactory('h5'), - h6: createDOMFactory('h6'), - head: createDOMFactory('head'), - header: createDOMFactory('header'), - hgroup: createDOMFactory('hgroup'), - hr: createDOMFactory('hr'), - html: createDOMFactory('html'), - i: createDOMFactory('i'), - iframe: createDOMFactory('iframe'), - img: createDOMFactory('img'), - input: createDOMFactory('input'), - ins: createDOMFactory('ins'), - kbd: createDOMFactory('kbd'), - keygen: createDOMFactory('keygen'), - label: createDOMFactory('label'), - legend: createDOMFactory('legend'), - li: createDOMFactory('li'), - link: createDOMFactory('link'), - main: createDOMFactory('main'), - map: createDOMFactory('map'), - mark: createDOMFactory('mark'), - menu: createDOMFactory('menu'), - menuitem: createDOMFactory('menuitem'), - meta: createDOMFactory('meta'), - meter: createDOMFactory('meter'), - nav: createDOMFactory('nav'), - noscript: createDOMFactory('noscript'), - object: createDOMFactory('object'), - ol: createDOMFactory('ol'), - optgroup: createDOMFactory('optgroup'), - option: createDOMFactory('option'), - output: createDOMFactory('output'), - p: createDOMFactory('p'), - param: createDOMFactory('param'), - picture: createDOMFactory('picture'), - pre: createDOMFactory('pre'), - progress: createDOMFactory('progress'), - q: createDOMFactory('q'), - rp: createDOMFactory('rp'), - rt: createDOMFactory('rt'), - ruby: createDOMFactory('ruby'), - s: createDOMFactory('s'), - samp: createDOMFactory('samp'), - script: createDOMFactory('script'), - section: createDOMFactory('section'), - select: createDOMFactory('select'), - small: createDOMFactory('small'), - source: createDOMFactory('source'), - span: createDOMFactory('span'), - strong: createDOMFactory('strong'), - style: createDOMFactory('style'), - sub: createDOMFactory('sub'), - summary: createDOMFactory('summary'), - sup: createDOMFactory('sup'), - table: createDOMFactory('table'), - tbody: createDOMFactory('tbody'), - td: createDOMFactory('td'), - textarea: createDOMFactory('textarea'), - tfoot: createDOMFactory('tfoot'), - th: createDOMFactory('th'), - thead: createDOMFactory('thead'), - time: createDOMFactory('time'), - title: createDOMFactory('title'), - tr: createDOMFactory('tr'), - track: createDOMFactory('track'), - u: createDOMFactory('u'), - ul: createDOMFactory('ul'), - 'var': createDOMFactory('var'), - video: createDOMFactory('video'), - wbr: createDOMFactory('wbr'), - - // SVG - circle: createDOMFactory('circle'), - clipPath: createDOMFactory('clipPath'), - defs: createDOMFactory('defs'), - ellipse: createDOMFactory('ellipse'), - g: createDOMFactory('g'), - image: createDOMFactory('image'), - line: createDOMFactory('line'), - linearGradient: createDOMFactory('linearGradient'), - mask: createDOMFactory('mask'), - path: createDOMFactory('path'), - pattern: createDOMFactory('pattern'), - polygon: createDOMFactory('polygon'), - polyline: createDOMFactory('polyline'), - radialGradient: createDOMFactory('radialGradient'), - rect: createDOMFactory('rect'), - stop: createDOMFactory('stop'), - svg: createDOMFactory('svg'), - text: createDOMFactory('text'), - tspan: createDOMFactory('tspan') -}; - -module.exports = ReactDOMFactories; -},{"10":10,"12":12}],10:[function(_dereq_,module,exports){ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = _dereq_(31); - -var ReactCurrentOwner = _dereq_(8); - -var warning = _dereq_(30); -var canDefineProperty = _dereq_(20); -var hasOwnProperty = Object.prototype.hasOwnProperty; - -var REACT_ELEMENT_TYPE = _dereq_(11); - -var RESERVED_PROPS = { - key: true, - ref: true, - __self: true, - __source: true -}; - -var specialPropKeyWarningShown, specialPropRefWarningShown; - -function hasValidRef(config) { - if ("development" !== 'production') { - if (hasOwnProperty.call(config, 'ref')) { - var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.ref !== undefined; -} - -function hasValidKey(config) { - if ("development" !== 'production') { - if (hasOwnProperty.call(config, 'key')) { - var getter = Object.getOwnPropertyDescriptor(config, 'key').get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.key !== undefined; -} - -function defineKeyPropWarningGetter(props, displayName) { - var warnAboutAccessingKey = function () { - if (!specialPropKeyWarningShown) { - specialPropKeyWarningShown = true; - "development" !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; - } - }; - warnAboutAccessingKey.isReactWarning = true; - Object.defineProperty(props, 'key', { - get: warnAboutAccessingKey, - configurable: true - }); -} - -function defineRefPropWarningGetter(props, displayName) { - var warnAboutAccessingRef = function () { - if (!specialPropRefWarningShown) { - specialPropRefWarningShown = true; - "development" !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; - } - }; - warnAboutAccessingRef.isReactWarning = true; - Object.defineProperty(props, 'ref', { - get: warnAboutAccessingRef, - configurable: true - }); -} - -/** - * Factory method to create a new React element. This no longer adheres to - * the class pattern, so do not use new to call it. Also, no instanceof check - * will work. Instead test $$typeof field against Symbol.for('react.element') to check - * if something is a React Element. - * - * @param {*} type - * @param {*} key - * @param {string|object} ref - * @param {*} self A *temporary* helper to detect places where `this` is - * different from the `owner` when React.createElement is called, so that we - * can warn. We want to get rid of owner and replace string `ref`s with arrow - * functions, and as long as `this` and owner are the same, there will be no - * change in behavior. - * @param {*} source An annotation object (added by a transpiler or otherwise) - * indicating filename, line number, and/or other information. - * @param {*} owner - * @param {*} props - * @internal - */ -var ReactElement = function (type, key, ref, self, source, owner, props) { - var element = { - // This tag allow us to uniquely identify this as a React Element - $$typeof: REACT_ELEMENT_TYPE, - - // Built-in properties that belong on the element - type: type, - key: key, - ref: ref, - props: props, - - // Record the component responsible for creating this element. - _owner: owner - }; - - if ("development" !== 'production') { - // The validation flag is currently mutative. We put it on - // an external backing store so that we can freeze the whole object. - // This can be replaced with a WeakMap once they are implemented in - // commonly used development environments. - element._store = {}; - - // To make comparing ReactElements easier for testing purposes, we make - // the validation flag non-enumerable (where possible, which should - // include every environment we run tests in), so the test framework - // ignores it. - if (canDefineProperty) { - Object.defineProperty(element._store, 'validated', { - configurable: false, - enumerable: false, - writable: true, - value: false - }); - // self and source are DEV only properties. - Object.defineProperty(element, '_self', { - configurable: false, - enumerable: false, - writable: false, - value: self - }); - // Two elements created in two different places should be considered - // equal for testing purposes and therefore we hide it from enumeration. - Object.defineProperty(element, '_source', { - configurable: false, - enumerable: false, - writable: false, - value: source - }); - } else { - element._store.validated = false; - element._self = self; - element._source = source; - } - if (Object.freeze) { - Object.freeze(element.props); - Object.freeze(element); - } - } - - return element; -}; - -/** - * Create and return a new ReactElement of the given type. - * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement - */ -ReactElement.createElement = function (type, config, children) { - var propName; - - // Reserved names are extracted - var props = {}; - - var key = null; - var ref = null; - var self = null; - var source = null; - - if (config != null) { - if (hasValidRef(config)) { - ref = config.ref; - } - if (hasValidKey(config)) { - key = '' + config.key; - } - - self = config.__self === undefined ? null : config.__self; - source = config.__source === undefined ? null : config.__source; - // Remaining properties are added to a new props object - for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - props[propName] = config[propName]; - } - } - } - - // Children can be more than one argument, and those are transferred onto - // the newly allocated props object. - var childrenLength = arguments.length - 2; - if (childrenLength === 1) { - props.children = children; - } else if (childrenLength > 1) { - var childArray = Array(childrenLength); - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 2]; - } - if ("development" !== 'production') { - if (Object.freeze) { - Object.freeze(childArray); - } - } - props.children = childArray; - } - - // Resolve default props - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; - } - } - } - if ("development" !== 'production') { - if (key || ref) { - if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { - var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; - if (key) { - defineKeyPropWarningGetter(props, displayName); - } - if (ref) { - defineRefPropWarningGetter(props, displayName); - } - } - } - } - return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); -}; - -/** - * Return a function that produces ReactElements of a given type. - * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory - */ -ReactElement.createFactory = function (type) { - var factory = ReactElement.createElement.bind(null, type); - // Expose the type on the factory and the prototype so that it can be - // easily accessed on elements. E.g. `.type === Foo`. - // This should not be named `constructor` since this may not be the function - // that created the element, and it may not even be a constructor. - // Legacy hook TODO: Warn if this is accessed - factory.type = type; - return factory; -}; - -ReactElement.cloneAndReplaceKey = function (oldElement, newKey) { - var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); - - return newElement; -}; - -/** - * Clone and return a new ReactElement using element as the starting point. - * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement - */ -ReactElement.cloneElement = function (element, config, children) { - var propName; - - // Original props are copied - var props = _assign({}, element.props); - - // Reserved names are extracted - var key = element.key; - var ref = element.ref; - // Self is preserved since the owner is preserved. - var self = element._self; - // Source is preserved since cloneElement is unlikely to be targeted by a - // transpiler, and the original source is probably a better indicator of the - // true owner. - var source = element._source; - - // Owner will be preserved, unless ref is overridden - var owner = element._owner; - - if (config != null) { - if (hasValidRef(config)) { - // Silently steal the ref from the parent. - ref = config.ref; - owner = ReactCurrentOwner.current; - } - if (hasValidKey(config)) { - key = '' + config.key; - } - - // Remaining properties override existing props - var defaultProps; - if (element.type && element.type.defaultProps) { - defaultProps = element.type.defaultProps; - } - for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - if (config[propName] === undefined && defaultProps !== undefined) { - // Resolve default props - props[propName] = defaultProps[propName]; - } else { - props[propName] = config[propName]; - } - } - } - } - - // Children can be more than one argument, and those are transferred onto - // the newly allocated props object. - var childrenLength = arguments.length - 2; - if (childrenLength === 1) { - props.children = children; - } else if (childrenLength > 1) { - var childArray = Array(childrenLength); - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 2]; - } - props.children = childArray; - } - - return ReactElement(element.type, key, ref, self, source, owner, props); -}; - -/** - * Verifies the object is a ReactElement. - * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement - * @param {?object} object - * @return {boolean} True if `object` is a valid component. - * @final - */ -ReactElement.isValidElement = function (object) { - return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; -}; - -module.exports = ReactElement; -},{"11":11,"20":20,"30":30,"31":31,"8":8}],11:[function(_dereq_,module,exports){ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -// The Symbol used to tag the ReactElement type. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. - -var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; - -module.exports = REACT_ELEMENT_TYPE; -},{}],12:[function(_dereq_,module,exports){ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -/** - * ReactElementValidator provides a wrapper around a element factory - * which validates the props passed to the element. This is intended to be - * used only in DEV and could be replaced by a static type checker for languages - * that support it. - */ - -'use strict'; - -var ReactCurrentOwner = _dereq_(8); -var ReactComponentTreeHook = _dereq_(7); -var ReactElement = _dereq_(10); - -var checkReactTypeSpec = _dereq_(21); - -var canDefineProperty = _dereq_(20); -var getIteratorFn = _dereq_(22); -var warning = _dereq_(30); - -function getDeclarationErrorAddendum() { - if (ReactCurrentOwner.current) { - var name = ReactCurrentOwner.current.getName(); - if (name) { - return ' Check the render method of `' + name + '`.'; - } - } - return ''; -} - -function getSourceInfoErrorAddendum(elementProps) { - if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { - var source = elementProps.__source; - var fileName = source.fileName.replace(/^.*[\\\/]/, ''); - var lineNumber = source.lineNumber; - return ' Check your code at ' + fileName + ':' + lineNumber + '.'; - } - return ''; -} - -/** - * Warn if there's no key explicitly set on dynamic arrays of children or - * object keys are not valid. This allows us to keep track of children between - * updates. - */ -var ownerHasKeyUseWarning = {}; - -function getCurrentComponentErrorInfo(parentType) { - var info = getDeclarationErrorAddendum(); - - if (!info) { - var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; - if (parentName) { - info = ' Check the top-level render call using <' + parentName + '>.'; - } - } - return info; -} - -/** - * Warn if the element doesn't have an explicit key assigned to it. - * This element is in an array. The array could grow and shrink or be - * reordered. All children that haven't already been validated are required to - * have a "key" property assigned to it. Error statuses are cached so a warning - * will only be shown once. - * - * @internal - * @param {ReactElement} element Element that requires a key. - * @param {*} parentType element's parent's type. - */ -function validateExplicitKey(element, parentType) { - if (!element._store || element._store.validated || element.key != null) { - return; - } - element._store.validated = true; - - var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {}); - - var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); - if (memoizer[currentComponentErrorInfo]) { - return; - } - memoizer[currentComponentErrorInfo] = true; - - // Usually the current owner is the offender, but if it accepts children as a - // property, it may be the creator of the child that's responsible for - // assigning it a key. - var childOwner = ''; - if (element && element._owner && element._owner !== ReactCurrentOwner.current) { - // Give the component that originally created this child. - childOwner = ' It was passed a child from ' + element._owner.getName() + '.'; - } - - "development" !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0; -} - -/** - * Ensure that every element either is passed in a static location, in an - * array with an explicit keys property defined, or in an object literal - * with valid key property. - * - * @internal - * @param {ReactNode} node Statically passed child of any type. - * @param {*} parentType node's parent's type. - */ -function validateChildKeys(node, parentType) { - if (typeof node !== 'object') { - return; - } - if (Array.isArray(node)) { - for (var i = 0; i < node.length; i++) { - var child = node[i]; - if (ReactElement.isValidElement(child)) { - validateExplicitKey(child, parentType); - } - } - } else if (ReactElement.isValidElement(node)) { - // This element was passed in a valid location. - if (node._store) { - node._store.validated = true; - } - } else if (node) { - var iteratorFn = getIteratorFn(node); - // Entry iterators provide implicit keys. - if (iteratorFn) { - if (iteratorFn !== node.entries) { - var iterator = iteratorFn.call(node); - var step; - while (!(step = iterator.next()).done) { - if (ReactElement.isValidElement(step.value)) { - validateExplicitKey(step.value, parentType); - } - } - } - } - } -} - -/** - * Given an element, validate that its props follow the propTypes definition, - * provided by the type. - * - * @param {ReactElement} element - */ -function validatePropTypes(element) { - var componentClass = element.type; - if (typeof componentClass !== 'function') { - return; - } - var name = componentClass.displayName || componentClass.name; - if (componentClass.propTypes) { - checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null); - } - if (typeof componentClass.getDefaultProps === 'function') { - "development" !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0; - } -} - -var ReactElementValidator = { - - createElement: function (type, props, children) { - var validType = typeof type === 'string' || typeof type === 'function'; - // We warn in this case but don't throw. We expect the element creation to - // succeed and there will likely be errors in render. - if (!validType) { - if (typeof type !== 'function' && typeof type !== 'string') { - var info = ''; - if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { - info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.'; - } - - var sourceInfo = getSourceInfoErrorAddendum(props); - if (sourceInfo) { - info += sourceInfo; - } else { - info += getDeclarationErrorAddendum(); - } - - info += ReactComponentTreeHook.getCurrentStackAddendum(); - - "development" !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0; - } - } - - var element = ReactElement.createElement.apply(this, arguments); - - // The result can be nullish if a mock or a custom function is used. - // TODO: Drop this when these are no longer allowed as the type argument. - if (element == null) { - return element; - } - - // Skip key warning if the type isn't valid since our key validation logic - // doesn't expect a non-string/function type and can throw confusing errors. - // We don't want exception behavior to differ between dev and prod. - // (Rendering will throw with a helpful message and as soon as the type is - // fixed, the key warnings will appear.) - if (validType) { - for (var i = 2; i < arguments.length; i++) { - validateChildKeys(arguments[i], type); - } - } - - validatePropTypes(element); - - return element; - }, - - createFactory: function (type) { - var validatedFactory = ReactElementValidator.createElement.bind(null, type); - // Legacy hook TODO: Warn if this is accessed - validatedFactory.type = type; - - if ("development" !== 'production') { - if (canDefineProperty) { - Object.defineProperty(validatedFactory, 'type', { - enumerable: false, - get: function () { - "development" !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0; - Object.defineProperty(this, 'type', { - value: type - }); - return type; - } - }); - } - } - - return validatedFactory; - }, - - cloneElement: function (element, props, children) { - var newElement = ReactElement.cloneElement.apply(this, arguments); - for (var i = 2; i < arguments.length; i++) { - validateChildKeys(arguments[i], newElement.type); - } - validatePropTypes(newElement); - return newElement; - } - -}; - -module.exports = ReactElementValidator; -},{"10":10,"20":20,"21":21,"22":22,"30":30,"7":7,"8":8}],13:[function(_dereq_,module,exports){ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var warning = _dereq_(30); - -function warnNoop(publicInstance, callerName) { - if ("development" !== 'production') { - var constructor = publicInstance.constructor; - "development" !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; - } -} - -/** - * This is the abstract API for an update queue. - */ -var ReactNoopUpdateQueue = { - - /** - * Checks whether or not this composite component is mounted. - * @param {ReactClass} publicInstance The instance we want to test. - * @return {boolean} True if mounted, false otherwise. - * @protected - * @final - */ - isMounted: function (publicInstance) { - return false; - }, - - /** - * Enqueue a callback that will be executed after all the pending updates - * have processed. - * - * @param {ReactClass} publicInstance The instance to use as `this` context. - * @param {?function} callback Called after state is updated. - * @internal - */ - enqueueCallback: function (publicInstance, callback) {}, - - /** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @internal - */ - enqueueForceUpdate: function (publicInstance) { - warnNoop(publicInstance, 'forceUpdate'); - }, - - /** - * Replaces all of the state. Always use this or `setState` to mutate state. - * You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} completeState Next state. - * @internal - */ - enqueueReplaceState: function (publicInstance, completeState) { - warnNoop(publicInstance, 'replaceState'); - }, - - /** - * Sets a subset of the state. This only exists because _pendingState is - * internal. This provides a merging strategy that is not available to deep - * properties which is confusing. TODO: Expose pendingState or don't use it - * during the merge. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} partialState Next partial state to be merged with state. - * @internal - */ - enqueueSetState: function (publicInstance, partialState) { - warnNoop(publicInstance, 'setState'); - } -}; - -module.exports = ReactNoopUpdateQueue; -},{"30":30}],14:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var ReactPropTypeLocationNames = {}; - -if ("development" !== 'production') { - ReactPropTypeLocationNames = { - prop: 'prop', - context: 'context', - childContext: 'child context' - }; -} - -module.exports = ReactPropTypeLocationNames; -},{}],15:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _require = _dereq_(10), - isValidElement = _require.isValidElement; - -var factory = _dereq_(33); - -module.exports = factory(isValidElement); -},{"10":10,"33":33}],16:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -module.exports = ReactPropTypesSecret; -},{}],17:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = _dereq_(31); - -var ReactComponent = _dereq_(6); -var ReactNoopUpdateQueue = _dereq_(13); - -var emptyObject = _dereq_(28); - -/** - * Base class helpers for the updating state of a component. - */ -function ReactPureComponent(props, context, updater) { - // Duplicated from ReactComponent. - this.props = props; - this.context = context; - this.refs = emptyObject; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -function ComponentDummy() {} -ComponentDummy.prototype = ReactComponent.prototype; -ReactPureComponent.prototype = new ComponentDummy(); -ReactPureComponent.prototype.constructor = ReactPureComponent; -// Avoid an extra prototype jump for these methods. -_assign(ReactPureComponent.prototype, ReactComponent.prototype); -ReactPureComponent.prototype.isPureReactComponent = true; - -module.exports = ReactPureComponent; -},{"13":13,"28":28,"31":31,"6":6}],18:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = _dereq_(31); - -var React = _dereq_(3); - -// `version` will be added here by the React module. -var ReactUMDEntry = _assign(React, { - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { - ReactCurrentOwner: _dereq_(8) - } -}); - -if ("development" !== 'production') { - _assign(ReactUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { - // ReactComponentTreeHook should not be included in production. - ReactComponentTreeHook: _dereq_(7), - getNextDebugID: _dereq_(23) - }); -} - -module.exports = ReactUMDEntry; -},{"23":23,"3":3,"31":31,"7":7,"8":8}],19:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -module.exports = '15.5.4'; -},{}],20:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var canDefineProperty = false; -if ("development" !== 'production') { - try { - // $FlowFixMe https://github.com/facebook/flow/issues/285 - Object.defineProperty({}, 'x', { get: function () {} }); - canDefineProperty = true; - } catch (x) { - // IE will fail on defineProperty - } -} - -module.exports = canDefineProperty; -},{}],21:[function(_dereq_,module,exports){ -(function (process){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactPropTypeLocationNames = _dereq_(14); -var ReactPropTypesSecret = _dereq_(16); - -var invariant = _dereq_(29); -var warning = _dereq_(30); - -var ReactComponentTreeHook; - -if (typeof process !== 'undefined' && process.env && "development" === 'test') { - // Temporary hack. - // Inline requires don't work well with Jest: - // https://github.com/facebook/react/issues/7240 - // Remove the inline requires when we don't need them anymore: - // https://github.com/facebook/react/pull/7178 - ReactComponentTreeHook = _dereq_(7); -} - -var loggedTypeFailures = {}; - -/** - * Assert that the values match with the type specs. - * Error messages are memorized and will only be shown once. - * - * @param {object} typeSpecs Map of name to a ReactPropType - * @param {object} values Runtime values that need to be type-checked - * @param {string} location e.g. "prop", "context", "child context" - * @param {string} componentName Name of the component for error messages. - * @param {?object} element The React element that is being type-checked - * @param {?number} debugID The React component instance that is being type-checked - * @private - */ -function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { - for (var typeSpecName in typeSpecs) { - if (typeSpecs.hasOwnProperty(typeSpecName)) { - var error; - // Prop type validation may throw. In case they do, we don't want to - // fail the render phase where it didn't fail before. So we log it. - // After these have been cleaned up, we'll let them throw. - try { - // This is intentionally an invariant that gets caught. It's the same - // behavior as without this statement except with a better message. - !(typeof typeSpecs[typeSpecName] === 'function') ? "development" !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); - } catch (ex) { - error = ex; - } - "development" !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - // Only monitor this failure once because there tends to be a lot of the - // same error. - loggedTypeFailures[error.message] = true; - - var componentStackInfo = ''; - - if ("development" !== 'production') { - if (!ReactComponentTreeHook) { - ReactComponentTreeHook = _dereq_(7); - } - if (debugID !== null) { - componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); - } else if (element !== null) { - componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); - } - } - - "development" !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; - } - } - } -} - -module.exports = checkReactTypeSpec; -}).call(this,undefined) -},{"14":14,"16":16,"25":25,"29":29,"30":30,"7":7}],22:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -/* global Symbol */ - -var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; -var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - -/** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ -function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; - } -} - -module.exports = getIteratorFn; -},{}],23:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var nextDebugID = 1; - -function getNextDebugID() { - return nextDebugID++; -} - -module.exports = getNextDebugID; -},{}],24:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactElement = _dereq_(10); - -var invariant = _dereq_(29); - -/** - * Returns the first child in a collection of children and verifies that there - * is only one child in the collection. - * - * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only - * - * The current implementation of this function assumes that a single child gets - * passed without a wrapper, but the purpose of this helper function is to - * abstract away the particular structure of children. - * - * @param {?object} children Child collection structure. - * @return {ReactElement} The first and only `ReactElement` contained in the - * structure. - */ -function onlyChild(children) { - !ReactElement.isValidElement(children) ? "development" !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0; - return children; -} - -module.exports = onlyChild; -},{"10":10,"25":25,"29":29}],25:[function(_dereq_,module,exports){ -/** * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ -'use strict'; - -/** - * WARNING: DO NOT manually require this module. - * This is a replacement for `invariant(...)` used by the error code system - * and will _only_ be required by the corresponding babel pass. - * It always throws. - */ - -function reactProdInvariant(code) { - var argCount = arguments.length - 1; - - var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; - - for (var argIdx = 0; argIdx < argCount; argIdx++) { - message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); - } - - message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; - - var error = new Error(message); - error.name = 'Invariant Violation'; - error.framesToPop = 1; // we don't care about reactProdInvariant's own frame - - throw error; -} - -module.exports = reactProdInvariant; -},{}],26:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ 'use strict'; -var _prodInvariant = _dereq_(25); +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.React = factory()); +}(this, (function () { 'use strict'; -var ReactCurrentOwner = _dereq_(8); -var REACT_ELEMENT_TYPE = _dereq_(11); - -var getIteratorFn = _dereq_(22); -var invariant = _dereq_(29); -var KeyEscapeUtils = _dereq_(1); -var warning = _dereq_(30); - -var SEPARATOR = '.'; -var SUBSEPARATOR = ':'; - -/** - * This is inlined from ReactElement since this file is shared between - * isomorphic and renderers. We could extract this to a - * - */ - -/** - * TODO: Test that a single child and an array with one item have the same key - * pattern. - */ - -var didWarnAboutMaps = false; - -/** - * Generate a key string that identifies a component within a set. - * - * @param {*} component A component that could contain a manual key. - * @param {number} index Index that is used if a manual key is not provided. - * @return {string} - */ -function getComponentKey(component, index) { - // Do some typechecking here since we call this blindly. We want to ensure - // that we don't block potential future ES APIs. - if (component && typeof component === 'object' && component.key != null) { - // Explicit key - return KeyEscapeUtils.escape(component.key); - } - // Implicit key determined by the index in the set - return index.toString(36); -} - -/** - * @param {?*} children Children tree container. - * @param {!string} nameSoFar Name of the key path so far. - * @param {!function} callback Callback to invoke with each child found. - * @param {?*} traverseContext Used to pass information throughout the traversal - * process. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { - var type = typeof children; - - if (type === 'undefined' || type === 'boolean') { - // All of the above are perceived as null. - children = null; - } - - if (children === null || type === 'string' || type === 'number' || - // The following is inlined from ReactElement. This means we can optimize - // some checks. React Fiber also inlines this logic for similar purposes. - type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { - callback(traverseContext, children, - // If it's the only child, treat the name as if it was wrapped in an array - // so that it's consistent if the number of children grows. - nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); - return 1; - } - - var child; - var nextName; - var subtreeCount = 0; // Count of children found in the current subtree. - var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; - - if (Array.isArray(children)) { - for (var i = 0; i < children.length; i++) { - child = children[i]; - nextName = nextNamePrefix + getComponentKey(child, i); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } else { - var iteratorFn = getIteratorFn(children); - if (iteratorFn) { - var iterator = iteratorFn.call(children); - var step; - if (iteratorFn !== children.entries) { - var ii = 0; - while (!(step = iterator.next()).done) { - child = step.value; - nextName = nextNamePrefix + getComponentKey(child, ii++); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } else { - if ("development" !== 'production') { - var mapsAsChildrenAddendum = ''; - if (ReactCurrentOwner.current) { - var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); - if (mapsAsChildrenOwnerName) { - mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; - } - } - "development" !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; - didWarnAboutMaps = true; - } - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - child = entry[1]; - nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } - } - } else if (type === 'object') { - var addendum = ''; - if ("development" !== 'production') { - addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; - if (children._isReactElement) { - addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.'; - } - if (ReactCurrentOwner.current) { - var name = ReactCurrentOwner.current.getName(); - if (name) { - addendum += ' Check the render method of `' + name + '`.'; - } - } - } - var childrenString = String(children); - !false ? "development" !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; - } - } - - return subtreeCount; -} - -/** - * Traverses children that are typically specified as `props.children`, but - * might also be specified through attributes: - * - * - `traverseAllChildren(this.props.children, ...)` - * - `traverseAllChildren(this.props.leftPanelChildren, ...)` - * - * The `traverseContext` is an optional argument that is passed through the - * entire traversal. It can be used to store accumulations or anything else that - * the callback might find relevant. - * - * @param {?*} children Children tree object. - * @param {!function} callback To invoke upon traversing each child. - * @param {?*} traverseContext Context for traversal. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildren(children, callback, traverseContext) { - if (children == null) { - return 0; - } - - return traverseAllChildrenImpl(children, '', callback, traverseContext); -} - -module.exports = traverseAllChildren; -},{"1":1,"11":11,"22":22,"25":25,"29":29,"30":30,"8":8}],27:[function(_dereq_,module,exports){ -"use strict"; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -function makeEmptyFunction(arg) { - return function () { - return arg; - }; -} - -/** - * This function accepts and discards inputs; it has no side effects. This is - * primarily useful idiomatically for overridable function endpoints which - * always need to be callable, since JS lacks a null-call idiom ala Cocoa. - */ -var emptyFunction = function emptyFunction() {}; - -emptyFunction.thatReturns = makeEmptyFunction; -emptyFunction.thatReturnsFalse = makeEmptyFunction(false); -emptyFunction.thatReturnsTrue = makeEmptyFunction(true); -emptyFunction.thatReturnsNull = makeEmptyFunction(null); -emptyFunction.thatReturnsThis = function () { - return this; -}; -emptyFunction.thatReturnsArgument = function (arg) { - return arg; -}; - -module.exports = emptyFunction; -},{}],28:[function(_dereq_,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var emptyObject = {}; - -if ("development" !== 'production') { - Object.freeze(emptyObject); -} - -module.exports = emptyObject; -},{}],29:[function(_dereq_,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var validateFormat = function validateFormat(format) {}; - -if ("development" !== 'production') { - validateFormat = function validateFormat(format) { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - }; -} - -function invariant(condition, format, a, b, c, d, e, f) { - validateFormat(format); - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error(format.replace(/%s/g, function () { - return args[argIndex++]; - })); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -} - -module.exports = invariant; -},{}],30:[function(_dereq_,module,exports){ -/** - * Copyright 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var emptyFunction = _dereq_(27); - -/** - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - -var warning = emptyFunction; - -if ("development" !== 'production') { - (function () { - var printWarning = function printWarning(format) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - warning = function warning(condition, format) { - if (format === undefined) { - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (format.indexOf('Failed Composite propType: ') === 0) { - return; // Ignore CompositeComponent proptype check. - } - - if (!condition) { - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(undefined, [format].concat(args)); - } - }; - })(); -} - -module.exports = warning; -},{"27":27}],31:[function(_dereq_,module,exports){ /* object-assign (c) Sindre Sorhus @license MIT */ -'use strict'; + /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -3380,7 +79,7 @@ function shouldUseNative() { } } -module.exports = shouldUseNative() ? Object.assign : function (target, source) { +var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; @@ -3407,22 +106,1172 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) { return to; }; -},{}],32:[function(_dereq_,module,exports){ +// TODO: this is special because it gets imported during build. + +var ReactVersion = '16.2.0'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol['for']; + +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7; +var REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8; +var REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb; + +var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = '@@iterator'; + +function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable === 'undefined') { + return null; + } + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + if (typeof maybeIterator === 'function') { + return maybeIterator; + } + return null; +} + /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * WARNING: DO NOT manually require this module. + * This is a replacement for `invariant(...)` used by the error code system + * and will _only_ be required by the corresponding babel pass. + * It always throws. */ -'use strict'; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ -if ("development" !== 'production') { - var invariant = _dereq_(29); - var warning = _dereq_(30); - var ReactPropTypesSecret = _dereq_(35); + + +var emptyObject = {}; + +{ + Object.freeze(emptyObject); +} + +var emptyObject_1 = emptyObject; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var validateFormat = function validateFormat(format) {}; + +{ + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; +} + +function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +} + +var invariant_1 = invariant; + +/** + * Forked from fbjs/warning: + * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js + * + * Only change is we use console.warn instead of console.error, + * and do nothing when 'console' is not supported. + * This really simplifies the code. + * --- + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var lowPriorityWarning = function () {}; + +{ + var printWarning = function (format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.warn(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + lowPriorityWarning = function (condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; +} + +var lowPriorityWarning$1 = lowPriorityWarning; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + +function makeEmptyFunction(arg) { + return function () { + return arg; + }; +} + +/** + * This function accepts and discards inputs; it has no side effects. This is + * primarily useful idiomatically for overridable function endpoints which + * always need to be callable, since JS lacks a null-call idiom ala Cocoa. + */ +var emptyFunction = function emptyFunction() {}; + +emptyFunction.thatReturns = makeEmptyFunction; +emptyFunction.thatReturnsFalse = makeEmptyFunction(false); +emptyFunction.thatReturnsTrue = makeEmptyFunction(true); +emptyFunction.thatReturnsNull = makeEmptyFunction(null); +emptyFunction.thatReturnsThis = function () { + return this; +}; +emptyFunction.thatReturnsArgument = function (arg) { + return arg; +}; + +var emptyFunction_1 = emptyFunction; + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + + + + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var warning = emptyFunction_1; + +{ + var printWarning$1 = function printWarning(format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning$1.apply(undefined, [format].concat(args)); + } + }; +} + +var warning_1 = warning; + +var didWarnStateUpdateForUnmountedComponent = {}; + +function warnNoop(publicInstance, callerName) { + { + var constructor = publicInstance.constructor; + var componentName = constructor && (constructor.displayName || constructor.name) || 'ReactClass'; + var warningKey = componentName + '.' + callerName; + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + warning_1(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName); + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } +} + +/** + * This is the abstract API for an update queue. + */ +var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } +}; + +/** + * Base class helpers for the updating state of a component. + */ +function Component(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject_1; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +Component.prototype.isReactComponent = {}; + +/** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ +Component.prototype.setState = function (partialState, callback) { + !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant_1(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0; + this.updater.enqueueSetState(this, partialState, callback, 'setState'); +}; + +/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ +Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); +}; + +/** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ +{ + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + var defineDeprecationWarning = function (methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function () { + lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + return undefined; + } + }); + }; + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } +} + +/** + * Base class helpers for the updating state of a component. + */ +function PureComponent(props, context, updater) { + // Duplicated from Component. + this.props = props; + this.context = context; + this.refs = emptyObject_1; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +function ComponentDummy() {} +ComponentDummy.prototype = Component.prototype; +var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); +pureComponentPrototype.constructor = PureComponent; +// Avoid an extra prototype jump for these methods. +objectAssign(pureComponentPrototype, Component.prototype); +pureComponentPrototype.isPureReactComponent = true; + +function AsyncComponent(props, context, updater) { + // Duplicated from Component. + this.props = props; + this.context = context; + this.refs = emptyObject_1; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +var asyncComponentPrototype = AsyncComponent.prototype = new ComponentDummy(); +asyncComponentPrototype.constructor = AsyncComponent; +// Avoid an extra prototype jump for these methods. +objectAssign(asyncComponentPrototype, Component.prototype); +asyncComponentPrototype.unstable_isAsyncReactComponent = true; +asyncComponentPrototype.render = function () { + return this.props.children; +}; + +/** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ +var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ + current: null +}; + +var hasOwnProperty$1 = Object.prototype.hasOwnProperty; + +var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true +}; + +var specialPropKeyWarningShown; +var specialPropRefWarningShown; + +function hasValidRef(config) { + { + if (hasOwnProperty$1.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; +} + +function hasValidKey(config) { + { + if (hasOwnProperty$1.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; +} + +function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + warning_1(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); +} + +function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + warning_1(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); +} + +/** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, no instanceof check + * will work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} key + * @param {string|object} ref + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @param {*} owner + * @param {*} props + * @internal + */ +var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allow us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + + // Record the component responsible for creating this element. + _owner: owner + }; + + { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; + + // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + // self and source are DEV only properties. + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; +}; + +/** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */ +function createElement(type, config, children) { + var propName; + + // Reserved names are extracted + var props = {}; + + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; + // Remaining properties are added to a new props object + for (propName in config) { + if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + { + if (key || ref) { + if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); +} + +/** + * Return a function that produces ReactElements of a given type. + * See https://reactjs.org/docs/react-api.html#createfactory + */ + + +function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + + return newElement; +} + +/** + * Clone and return a new ReactElement using element as the starting point. + * See https://reactjs.org/docs/react-api.html#cloneelement + */ +function cloneElement(element, config, children) { + var propName; + + // Original props are copied + var props = objectAssign({}, element.props); + + // Reserved names are extracted + var key = element.key; + var ref = element.ref; + // Self is preserved since the owner is preserved. + var self = element._self; + // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + var source = element._source; + + // Owner will be preserved, unless ref is overridden + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + // Remaining properties override existing props + var defaultProps; + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + for (propName in config) { + if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); +} + +/** + * Verifies the object is a ReactElement. + * See https://reactjs.org/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a valid component. + * @final + */ +function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} + +var ReactDebugCurrentFrame = {}; + +{ + // Component that is being worked on + ReactDebugCurrentFrame.getCurrentStack = null; + + ReactDebugCurrentFrame.getStackAddendum = function () { + var impl = ReactDebugCurrentFrame.getCurrentStack; + if (impl) { + return impl(); + } + return null; + }; +} + +var SEPARATOR = '.'; +var SUBSEPARATOR = ':'; + +/** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ +function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = ('' + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + + return '$' + escapedString; +} + +/** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + +var didWarnAboutMaps = false; + +var userProvidedKeyEscapeRegex = /\/+/g; +function escapeUserProvidedKey(text) { + return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); +} + +var POOL_SIZE = 10; +var traverseContextPool = []; +function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) { + if (traverseContextPool.length) { + var traverseContext = traverseContextPool.pop(); + traverseContext.result = mapResult; + traverseContext.keyPrefix = keyPrefix; + traverseContext.func = mapFunction; + traverseContext.context = mapContext; + traverseContext.count = 0; + return traverseContext; + } else { + return { + result: mapResult, + keyPrefix: keyPrefix, + func: mapFunction, + context: mapContext, + count: 0 + }; + } +} + +function releaseTraverseContext(traverseContext) { + traverseContext.result = null; + traverseContext.keyPrefix = null; + traverseContext.func = null; + traverseContext.context = null; + traverseContext.count = 0; + if (traverseContextPool.length < POOL_SIZE) { + traverseContextPool.push(traverseContext); + } +} + +/** + * @param {?*} children Children tree container. + * @param {!string} nameSoFar Name of the key path so far. + * @param {!function} callback Callback to invoke with each child found. + * @param {?*} traverseContext Used to pass information throughout the traversal + * process. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_CALL_TYPE: + case REACT_RETURN_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + } + } + + if (invokeCallback) { + callback(traverseContext, children, + // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows. + nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + if (typeof iteratorFn === 'function') { + { + // Warn about using Maps as children + if (iteratorFn === children.entries) { + warning_1(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum()); + didWarnAboutMaps = true; + } + } + + var iterator = iteratorFn.call(children); + var step; + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else if (type === 'object') { + var addendum = ''; + { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum(); + } + var childrenString = '' + children; + invariant_1(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum); + } + } + + return subtreeCount; +} + +/** + * Traverses children that are typically specified as `props.children`, but + * might also be specified through attributes: + * + * - `traverseAllChildren(this.props.children, ...)` + * - `traverseAllChildren(this.props.leftPanelChildren, ...)` + * + * The `traverseContext` is an optional argument that is passed through the + * entire traversal. It can be used to store accumulations or anything else that + * the callback might find relevant. + * + * @param {?*} children Children tree object. + * @param {!function} callback To invoke upon traversing each child. + * @param {?*} traverseContext Context for traversal. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); +} + +/** + * Generate a key string that identifies a component within a set. + * + * @param {*} component A component that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ +function getComponentKey(component, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (typeof component === 'object' && component !== null && component.key != null) { + // Explicit key + return escape(component.key); + } + // Implicit key determined by the index in the set + return index.toString(36); +} + +function forEachSingleChild(bookKeeping, child, name) { + var func = bookKeeping.func, + context = bookKeeping.context; + + func.call(context, child, bookKeeping.count++); +} + +/** + * Iterates through children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#react.children.foreach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ +function forEachChildren(children, forEachFunc, forEachContext) { + if (children == null) { + return children; + } + var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext); + traverseAllChildren(children, forEachSingleChild, traverseContext); + releaseTraverseContext(traverseContext); +} + +function mapSingleChildIntoContext(bookKeeping, child, childKey) { + var result = bookKeeping.result, + keyPrefix = bookKeeping.keyPrefix, + func = bookKeeping.func, + context = bookKeeping.context; + + + var mappedChild = func.call(context, child, bookKeeping.count++); + if (Array.isArray(mappedChild)) { + mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction_1.thatReturnsArgument); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + mappedChild = cloneAndReplaceKey(mappedChild, + // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); + } + result.push(mappedChild); + } +} + +function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { + var escapedPrefix = ''; + if (prefix != null) { + escapedPrefix = escapeUserProvidedKey(prefix) + '/'; + } + var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context); + traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); + releaseTraverseContext(traverseContext); +} + +/** + * Maps children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#react.children.map + * + * The provided mapFunction(child, key, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ +function mapChildren(children, func, context) { + if (children == null) { + return children; + } + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, func, context); + return result; +} + +/** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://reactjs.org/docs/react-api.html#react.children.count + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ +function countChildren(children, context) { + return traverseAllChildren(children, emptyFunction_1.thatReturnsNull, null); +} + +/** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://reactjs.org/docs/react-api.html#react.children.toarray + */ +function toArray(children) { + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction_1.thatReturnsArgument); + return result; +} + +/** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://reactjs.org/docs/react-api.html#react.children.only + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ +function onlyChild(children) { + !isValidElement(children) ? invariant_1(false, 'React.Children.only expected to receive a single React element child.') : void 0; + return children; +} + +var describeComponentFrame = function (name, source, ownerName) { + return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); +}; + +function getComponentName(fiber) { + var type = fiber.type; + + if (typeof type === 'string') { + return type; + } + if (typeof type === 'function') { + return type.displayName || type.name; + } + return null; +} + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret$1 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +var ReactPropTypesSecret_1 = ReactPropTypesSecret$1; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +{ + var invariant$2 = invariant_1; + var warning$2 = warning_1; + var ReactPropTypesSecret = ReactPropTypesSecret_1; var loggedTypeFailures = {}; } @@ -3438,7 +1287,7 @@ if ("development" !== 'production') { * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - if ("development" !== 'production') { + { for (var typeSpecName in typeSpecs) { if (typeSpecs.hasOwnProperty(typeSpecName)) { var error; @@ -3448,12 +1297,12 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. - invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); + invariant$2(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } - warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); + warning$2(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. @@ -3461,527 +1310,375 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { var stack = getStack ? getStack() : ''; - warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); + warning$2(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); } } } } } -module.exports = checkPropTypes; +var checkPropTypes_1 = checkPropTypes; -},{"29":29,"30":30,"35":35}],33:[function(_dereq_,module,exports){ /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * ReactElementValidator provides a wrapper around a element factory + * which validates the props passed to the element. This is intended to be + * used only in DEV and could be replaced by a static type checker for languages + * that support it. */ -'use strict'; +{ + var currentlyValidatingElement = null; -// React 15.5 references this module, and assumes PropTypes are still callable in production. -// Therefore we re-export development-only version with all the PropTypes checks here. -// However if one is migrating to the `prop-types` npm library, they will go through the -// `index.js` entry point, and it will branch depending on the environment. -var factory = _dereq_(34); -module.exports = function(isValidElement) { - // It is still allowed in 15.5. - var throwOnDirectAccess = false; - return factory(isValidElement, throwOnDirectAccess); -}; + var propTypesMisspellWarningShown = false; -},{"34":34}],34:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -'use strict'; - -var emptyFunction = _dereq_(27); -var invariant = _dereq_(29); -var warning = _dereq_(30); - -var ReactPropTypesSecret = _dereq_(35); -var checkPropTypes = _dereq_(32); - -module.exports = function(isValidElement, throwOnDirectAccess) { - /* global Symbol */ - var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - - /** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; + var getDisplayName = function (element) { + if (element == null) { + return '#empty'; + } else if (typeof element === 'string' || typeof element === 'number') { + return '#text'; + } else if (typeof element.type === 'string') { + return element.type; + } else if (element.type === REACT_FRAGMENT_TYPE) { + return 'React.Fragment'; + } else { + return element.type.displayName || element.type.name || 'Unknown'; } - } - - /** - * Collection of methods that allow declaration and validation of props that are - * supplied to React components. Example usage: - * - * var Props = require('ReactPropTypes'); - * var MyArticle = React.createClass({ - * propTypes: { - * // An optional string prop named "description". - * description: Props.string, - * - * // A required enum prop named "category". - * category: Props.oneOf(['News','Photos']).isRequired, - * - * // A prop named "dialog" that requires an instance of Dialog. - * dialog: Props.instanceOf(Dialog).isRequired - * }, - * render: function() { ... } - * }); - * - * A more formal specification of how these methods are used: - * - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) - * decl := ReactPropTypes.{type}(.isRequired)? - * - * Each and every declaration produces a function with the same signature. This - * allows the creation of custom validation functions. For example: - * - * var MyLink = React.createClass({ - * propTypes: { - * // An optional string or URI prop named "href". - * href: function(props, propName, componentName) { - * var propValue = props[propName]; - * if (propValue != null && typeof propValue !== 'string' && - * !(propValue instanceof URI)) { - * return new Error( - * 'Expected a string or an URI for ' + propName + ' in ' + - * componentName - * ); - * } - * } - * }, - * render: function() {...} - * }); - * - * @internal - */ - - var ANONYMOUS = '<>'; - - // Important! - // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. - var ReactPropTypes = { - array: createPrimitiveTypeChecker('array'), - bool: createPrimitiveTypeChecker('boolean'), - func: createPrimitiveTypeChecker('function'), - number: createPrimitiveTypeChecker('number'), - object: createPrimitiveTypeChecker('object'), - string: createPrimitiveTypeChecker('string'), - symbol: createPrimitiveTypeChecker('symbol'), - - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker }; - /** - * inlined Object.is polyfill to avoid requiring consumers ship their own - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is - */ - /*eslint-disable no-self-compare*/ - function is(x, y) { - // SameValue algorithm - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; + var getStackAddendum = function () { + var stack = ''; + if (currentlyValidatingElement) { + var name = getDisplayName(currentlyValidatingElement); + var owner = currentlyValidatingElement._owner; + stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner)); + } + stack += ReactDebugCurrentFrame.getStackAddendum() || ''; + return stack; + }; + + var VALID_FRAGMENT_PROPS = new Map([['children', true], ['key', true]]); +} + +function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentName(ReactCurrentOwner.current); + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + return ''; +} + +function getSourceInfoErrorAddendum(elementProps) { + if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { + var source = elementProps.__source; + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + return ''; +} + +/** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ +var ownerHasKeyUseWarning = {}; + +function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + if (parentName) { + info = '\n\nCheck the top-level render call using <' + parentName + '>.'; + } + } + return info; +} + +/** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ +function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + element._store.validated = true; + + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + + // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + var childOwner = ''; + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.'; + } + + currentlyValidatingElement = element; + { + warning_1(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum()); + } + currentlyValidatingElement = null; +} + +/** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ +function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + if (typeof iteratorFn === 'function') { + // Entry iterators used to provide implicit keys, + // but now we print a separate warning for them later. + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } +} + +/** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ +function validatePropTypes(element) { + var componentClass = element.type; + if (typeof componentClass !== 'function') { + return; + } + var name = componentClass.displayName || componentClass.name; + var propTypes = componentClass.propTypes; + if (propTypes) { + currentlyValidatingElement = element; + checkPropTypes_1(propTypes, element.props, 'prop', name, getStackAddendum); + currentlyValidatingElement = null; + } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; + warning_1(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown'); + } + if (typeof componentClass.getDefaultProps === 'function') { + warning_1(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } +} + +/** + * Given a fragment, validate that it can only be provided with fragment props + * @param {ReactElement} fragment + */ +function validateFragmentProps(fragment) { + currentlyValidatingElement = fragment; + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = Object.keys(fragment.props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var key = _step.value; + + if (!VALID_FRAGMENT_PROPS.has(key)) { + warning_1(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum()); + break; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator['return']) { + _iterator['return'](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (fragment.ref !== null) { + warning_1(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum()); + } + + currentlyValidatingElement = null; +} + +function createElementWithValidation(type, props, children) { + var validType = typeof type === 'string' || typeof type === 'function' || typeof type === 'symbol' || typeof type === 'number'; + // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + if (!validType) { + var info = ''; + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendum(props); + if (sourceInfo) { + info += sourceInfo; } else { - // Step 6.a: NaN == NaN - return x !== x && y !== y; + info += getDeclarationErrorAddendum(); + } + + info += getStackAddendum() || ''; + + warning_1(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info); + } + + var element = createElement.apply(this, arguments); + + // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + if (element == null) { + return element; + } + + // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); } } - /*eslint-enable no-self-compare*/ - /** - * We use an Error-like object for backward compatibility as people may call - * PropTypes directly and inspect their output. However, we don't use real - * Errors anymore. We don't inspect their stack anyway, and creating them - * is prohibitively expensive if they are created too often, such as what - * happens in oneOfType() for any type before the one that matched. - */ - function PropTypeError(message) { - this.message = message; - this.stack = ''; + if (typeof type === 'symbol' && type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); } - // Make `instanceof Error` still work for returned errors. - PropTypeError.prototype = Error.prototype; - function createChainableTypeChecker(validate) { - if ("development" !== 'production') { - var manualPropTypeCallCache = {}; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; + return element; +} - if (secret !== ReactPropTypesSecret) { - if (throwOnDirectAccess) { - // New behavior only for users of `prop-types` package - invariant( - false, - 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + - 'Use `PropTypes.checkPropTypes()` to call them. ' + - 'Read more at http://fb.me/use-check-prop-types' - ); - } else if ("development" !== 'production' && typeof console !== 'undefined') { - // Old behavior for people using React.PropTypes - var cacheKey = componentName + ':' + propName; - if (!manualPropTypeCallCache[cacheKey]) { - warning( - false, - 'You are manually calling a React.PropTypes validation ' + - 'function for the `%s` prop on `%s`. This is deprecated ' + - 'and will throw in the standalone `prop-types` package. ' + - 'You may be seeing this warning due to a third-party PropTypes ' + - 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', - propFullName, - componentName - ); - manualPropTypeCallCache[cacheKey] = true; - } - } +function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + // Legacy hook TODO: Warn if this is accessed + validatedFactory.type = type; + + { + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + Object.defineProperty(this, 'type', { + value: type + }); + return type; } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); - } - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - - return chainedCheckType; + }); } - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - // `propValue` being instance of, say, date/regexp, pass the 'object' - // check, but we can offer a more precise error message here rather than - // 'of type `object`'. - var preciseType = getPreciseType(propValue); + return validatedFactory; +} - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); +function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); } + validatePropTypes(newElement); + return newElement; +} - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunction.thatReturnsNull); +var React = { + Children: { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }, + + Component: Component, + PureComponent: PureComponent, + unstable_AsyncComponent: AsyncComponent, + + Fragment: REACT_FRAGMENT_TYPE, + + createElement: createElementWithValidation, + cloneElement: cloneElementWithValidation, + createFactory: createFactoryWithValidation, + isValidElement: isValidElement, + + version: ReactVersion, + + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + ReactCurrentOwner: ReactCurrentOwner, + // Used by renderers to avoid bundling object-assign twice in UMD bundles: + assign: objectAssign } - - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); - } - for (var i = 0; i < propValue.length; i++) { - var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i = 0; i < expectedValues.length; i++) { - if (is(propValue, expectedValues[i])) { - return null; - } - } - - var valuesString = JSON.stringify(expectedValues); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); - } - return createChainableTypeChecker(validate); - } - - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); - } - for (var key in propValue) { - if (propValue.hasOwnProperty(key)) { - var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { - return null; - } - } - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); - } - return createChainableTypeChecker(validate); - } - - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode(props[propName])) { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - for (var key in shapeTypes) { - var checker = shapeTypes[key]; - if (!checker) { - continue; - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function isNode(propValue) { - switch (typeof propValue) { - case 'number': - case 'string': - case 'undefined': - return true; - case 'boolean': - return !propValue; - case 'object': - if (Array.isArray(propValue)) { - return propValue.every(isNode); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode(step.value)) { - return false; - } - } - } else { - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - - return true; - default: - return false; - } - } - - function isSymbol(propType, propValue) { - // Native Symbol. - if (propType === 'symbol') { - return true; - } - - // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' - if (propValue['@@toStringTag'] === 'Symbol') { - return true; - } - - // Fallback for non-spec compliant Symbols which are polyfilled. - if (typeof Symbol === 'function' && propValue instanceof Symbol) { - return true; - } - - return false; - } - - // Equivalent of `typeof` but with special handling for array and regexp. - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return 'array'; - } - if (propValue instanceof RegExp) { - // Old webkits (at least until Android 4.0) return 'function' rather than - // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ - // passes PropTypes.object. - return 'object'; - } - if (isSymbol(propType, propValue)) { - return 'symbol'; - } - return propType; - } - - // This handles more types than `getPropType`. Only used for error messages. - // See `createPrimitiveTypeChecker`. - function getPreciseType(propValue) { - var propType = getPropType(propValue); - if (propType === 'object') { - if (propValue instanceof Date) { - return 'date'; - } else if (propValue instanceof RegExp) { - return 'regexp'; - } - } - return propType; - } - - // Returns class name of the object, if any. - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - - ReactPropTypes.checkPropTypes = checkPropTypes; - ReactPropTypes.PropTypes = ReactPropTypes; - - return ReactPropTypes; }; -},{"27":27,"29":29,"30":30,"32":32,"35":35}],35:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ +{ + objectAssign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { + // These should not be included in production. + ReactDebugCurrentFrame: ReactDebugCurrentFrame, + // Shim for React DOM 16.0.0 which still destructured (but not used) this. + // TODO: remove in React 17.0. + ReactComponentTreeHook: {} + }); +} -'use strict'; -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; -module.exports = ReactPropTypesSecret; +var React$2 = Object.freeze({ + default: React +}); -},{}]},{},[18])(18) -}); \ No newline at end of file +var React$3 = ( React$2 && React ) || React$2; + +// TODO: decide on the top-level export form. +// This is hacky but makes it work with both Rollup and Jest. +var react = React$3['default'] ? React$3['default'] : React$3; + +return react; + +}))); diff --git a/browser/extensions/activity-stream/vendor/react-dom-dev.js b/browser/extensions/activity-stream/vendor/react-dom-dev.js index f40eeb6fd15f..371c3816e306 100644 --- a/browser/extensions/activity-stream/vendor/react-dom-dev.js +++ b/browser/extensions/activity-stream/vendor/react-dom-dev.js @@ -1,170 +1,2065 @@ - /** - * ReactDOM v15.5.4 - */ +/** @license React v16.2.0 + * react-dom.development.js + * + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ -;(function(f) { - // CommonJS - if (typeof exports === "object" && typeof module !== "undefined") { - module.exports = f(require('react')); +'use strict'; - // RequireJS - } else if (typeof define === "function" && define.amd) { - define(['react'], f); +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react')) : + typeof define === 'function' && define.amd ? define(['react'], factory) : + (global.ReactDOM = factory(global.React)); +}(this, (function (React) { 'use strict'; - // + diff --git a/layout/reftests/bugs/pinwheel_logo.svg b/layout/reftests/bugs/pinwheel_logo.svg new file mode 100644 index 000000000000..f224699d162e --- /dev/null +++ b/layout/reftests/bugs/pinwheel_logo.svg @@ -0,0 +1,12 @@ + + + Phusion logo + + + + + + + + + \ No newline at end of file diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 4115bb21459f..4736b342c857 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -2058,4 +2058,5 @@ test-pref(font.size.systemFontScale,200) == 1412743.html 1412743-ref.html == 1424177.html 1424177-ref.html == 1424680.html 1424680-ref.html == 1424798-1.html 1424798-ref.html +fuzzy(74,2234) random-if(webrender) == 1425243-1.html 1425243-1-ref.html == 1432541.html 1432541-ref.html From b10f62c5f000cf720fd6561afae58ab95ca48453 Mon Sep 17 00:00:00 2001 From: Botond Ballo Date: Wed, 7 Feb 2018 18:03:03 -0500 Subject: [PATCH 13/41] Bug 1425243 - Second reftest to catch the coordinate problem with the first fix attempt on desktop. r=mstange MozReview-Commit-ID: 9BMUE6k4uiU --HG-- extra : rebase_source : 90c16b5fad7d138ea76a5adc74daa47f93b0dea0 --- layout/reftests/bugs/1425243-2-ref.html | 8 ++++++++ layout/reftests/bugs/1425243-2.html | 8 ++++++++ layout/reftests/bugs/reftest.list | 1 + 3 files changed, 17 insertions(+) create mode 100644 layout/reftests/bugs/1425243-2-ref.html create mode 100644 layout/reftests/bugs/1425243-2.html diff --git a/layout/reftests/bugs/1425243-2-ref.html b/layout/reftests/bugs/1425243-2-ref.html new file mode 100644 index 000000000000..bda12712438d --- /dev/null +++ b/layout/reftests/bugs/1425243-2-ref.html @@ -0,0 +1,8 @@ + +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    + diff --git a/layout/reftests/bugs/1425243-2.html b/layout/reftests/bugs/1425243-2.html new file mode 100644 index 000000000000..7fb33e4aad2d --- /dev/null +++ b/layout/reftests/bugs/1425243-2.html @@ -0,0 +1,8 @@ + +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                    + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 4736b342c857..764d3dbd5b3c 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -2059,4 +2059,5 @@ test-pref(font.size.systemFontScale,200) == 1412743.html 1412743-ref.html == 1424680.html 1424680-ref.html == 1424798-1.html 1424798-ref.html fuzzy(74,2234) random-if(webrender) == 1425243-1.html 1425243-1-ref.html +fuzzy-if(Android,66,574) fuzzy-if(d2d,55,777) fuzzy-if(!Android&&!d2d,1,31219) == 1425243-2.html 1425243-2-ref.html == 1432541.html 1432541-ref.html From b0948ed25dbeb74979ffb476a64a9948eeec26bc Mon Sep 17 00:00:00 2001 From: "arthur.iakab" Date: Fri, 9 Feb 2018 22:43:04 +0200 Subject: [PATCH 14/41] Backed out changeset 47b8cc3b625e (bug 1426705) for build bustage on a CLOSED TREE --- .../activity-stream/common/Reducers.jsm | 4 +- .../css/activity-stream-linux.css | 124 +- .../css/activity-stream-linux.css.map | 44 - .../css/activity-stream-mac.css | 124 +- .../css/activity-stream-mac.css.map | 44 - .../css/activity-stream-windows.css | 124 +- .../css/activity-stream-windows.css.map | 44 - .../data/content/activity-stream.bundle.js | 1921 +- .../content/activity-stream.bundle.js.map | 1 - .../extensions/activity-stream/install.rdf.in | 2 +- browser/extensions/activity-stream/jar.mn | 16 +- .../activity-stream/lib/ActivityStream.jsm | 6 +- .../activity-stream/lib/TelemetryFeed.jsm | 21 +- .../activity-stream/lib/TopSitesFeed.jsm | 6 +- .../activity-stream/lib/UTEventReporting.jsm | 59 - .../ach/activity-stream-prerendered.html | 2 +- .../locales/ach/activity-stream-strings.js | 4 +- .../ar/activity-stream-prerendered.html | 2 +- .../locales/ar/activity-stream-strings.js | 8 +- .../ast/activity-stream-prerendered.html | 2 +- .../locales/ast/activity-stream-strings.js | 4 +- .../az/activity-stream-prerendered.html | 2 +- .../locales/az/activity-stream-strings.js | 4 +- .../be/activity-stream-prerendered.html | 2 +- .../locales/be/activity-stream-strings.js | 4 +- .../bg/activity-stream-prerendered.html | 2 +- .../locales/bg/activity-stream-strings.js | 4 +- .../bn-BD/activity-stream-prerendered.html | 2 +- .../locales/bn-BD/activity-stream-strings.js | 4 +- .../bn-IN/activity-stream-prerendered.html | 2 +- .../locales/bn-IN/activity-stream-strings.js | 4 +- .../br/activity-stream-prerendered.html | 2 +- .../locales/br/activity-stream-strings.js | 4 +- .../bs/activity-stream-prerendered.html | 2 +- .../locales/bs/activity-stream-strings.js | 4 +- .../ca/activity-stream-prerendered.html | 2 +- .../locales/ca/activity-stream-strings.js | 4 +- .../cak/activity-stream-prerendered.html | 2 +- .../locales/cak/activity-stream-strings.js | 4 +- .../cs/activity-stream-prerendered.html | 2 +- .../locales/cs/activity-stream-strings.js | 8 +- .../cy/activity-stream-prerendered.html | 2 +- .../locales/cy/activity-stream-strings.js | 4 +- .../da/activity-stream-prerendered.html | 2 +- .../locales/da/activity-stream-strings.js | 4 +- .../de/activity-stream-prerendered.html | 2 +- .../locales/de/activity-stream-strings.js | 4 +- .../dsb/activity-stream-prerendered.html | 2 +- .../locales/dsb/activity-stream-strings.js | 4 +- .../el/activity-stream-prerendered.html | 2 +- .../locales/el/activity-stream-strings.js | 4 +- .../en-GB/activity-stream-prerendered.html | 2 +- .../locales/en-GB/activity-stream-strings.js | 4 +- .../en-US/activity-stream-prerendered.html | 2 +- .../locales/en-US/activity-stream-strings.js | 4 +- .../eo/activity-stream-prerendered.html | 2 +- .../locales/eo/activity-stream-strings.js | 4 +- .../es-AR/activity-stream-prerendered.html | 2 +- .../locales/es-AR/activity-stream-strings.js | 4 +- .../es-CL/activity-stream-prerendered.html | 2 +- .../locales/es-CL/activity-stream-strings.js | 4 +- .../es-ES/activity-stream-prerendered.html | 2 +- .../locales/es-ES/activity-stream-strings.js | 4 +- .../es-MX/activity-stream-prerendered.html | 2 +- .../locales/es-MX/activity-stream-strings.js | 4 +- .../et/activity-stream-prerendered.html | 2 +- .../locales/et/activity-stream-strings.js | 4 +- .../eu/activity-stream-prerendered.html | 2 +- .../locales/eu/activity-stream-strings.js | 4 +- .../fa/activity-stream-prerendered.html | 2 +- .../locales/fa/activity-stream-strings.js | 4 +- .../ff/activity-stream-prerendered.html | 2 +- .../locales/ff/activity-stream-strings.js | 4 +- .../fi/activity-stream-prerendered.html | 2 +- .../locales/fi/activity-stream-strings.js | 4 +- .../fr/activity-stream-prerendered.html | 2 +- .../locales/fr/activity-stream-strings.js | 4 +- .../fy-NL/activity-stream-prerendered.html | 2 +- .../locales/fy-NL/activity-stream-strings.js | 4 +- .../ga-IE/activity-stream-prerendered.html | 2 +- .../locales/ga-IE/activity-stream-strings.js | 2 - .../gd/activity-stream-prerendered.html | 2 +- .../locales/gd/activity-stream-strings.js | 4 +- .../gl/activity-stream-prerendered.html | 2 +- .../locales/gl/activity-stream-strings.js | 4 +- .../gn/activity-stream-prerendered.html | 2 +- .../locales/gn/activity-stream-strings.js | 4 +- .../gu-IN/activity-stream-prerendered.html | 2 +- .../locales/gu-IN/activity-stream-strings.js | 4 +- .../he/activity-stream-prerendered.html | 2 +- .../locales/he/activity-stream-strings.js | 4 +- .../hi-IN/activity-stream-prerendered.html | 2 +- .../locales/hi-IN/activity-stream-strings.js | 4 +- .../hr/activity-stream-prerendered.html | 2 +- .../locales/hr/activity-stream-strings.js | 4 +- .../hsb/activity-stream-prerendered.html | 2 +- .../locales/hsb/activity-stream-strings.js | 4 +- .../hu/activity-stream-prerendered.html | 2 +- .../locales/hu/activity-stream-strings.js | 4 +- .../hy-AM/activity-stream-prerendered.html | 2 +- .../locales/hy-AM/activity-stream-strings.js | 4 +- .../ia/activity-stream-prerendered.html | 2 +- .../locales/ia/activity-stream-strings.js | 4 +- .../id/activity-stream-prerendered.html | 2 +- .../locales/id/activity-stream-strings.js | 4 +- .../it/activity-stream-prerendered.html | 2 +- .../locales/it/activity-stream-strings.js | 4 +- .../ja/activity-stream-prerendered.html | 2 +- .../locales/ja/activity-stream-strings.js | 4 +- .../ka/activity-stream-prerendered.html | 2 +- .../locales/ka/activity-stream-strings.js | 4 +- .../kab/activity-stream-prerendered.html | 2 +- .../locales/kab/activity-stream-strings.js | 4 +- .../kk/activity-stream-prerendered.html | 2 +- .../locales/kk/activity-stream-strings.js | 4 +- .../km/activity-stream-prerendered.html | 2 +- .../locales/km/activity-stream-strings.js | 4 +- .../kn/activity-stream-prerendered.html | 2 +- .../locales/kn/activity-stream-strings.js | 4 +- .../ko/activity-stream-prerendered.html | 2 +- .../locales/ko/activity-stream-strings.js | 4 +- .../lij/activity-stream-prerendered.html | 2 +- .../locales/lij/activity-stream-strings.js | 2 - .../lo/activity-stream-prerendered.html | 2 +- .../locales/lo/activity-stream-strings.js | 4 +- .../lt/activity-stream-prerendered.html | 2 +- .../locales/lt/activity-stream-strings.js | 4 +- .../ltg/activity-stream-prerendered.html | 2 +- .../locales/ltg/activity-stream-strings.js | 4 +- .../lv/activity-stream-prerendered.html | 2 +- .../locales/lv/activity-stream-strings.js | 4 +- .../mk/activity-stream-prerendered.html | 2 +- .../locales/mk/activity-stream-strings.js | 4 +- .../ml/activity-stream-prerendered.html | 2 +- .../locales/ml/activity-stream-strings.js | 4 +- .../mr/activity-stream-prerendered.html | 2 +- .../locales/mr/activity-stream-strings.js | 2 - .../ms/activity-stream-prerendered.html | 2 +- .../locales/ms/activity-stream-strings.js | 4 +- .../my/activity-stream-prerendered.html | 2 +- .../locales/my/activity-stream-strings.js | 4 +- .../nb-NO/activity-stream-prerendered.html | 2 +- .../locales/nb-NO/activity-stream-strings.js | 4 +- .../ne-NP/activity-stream-prerendered.html | 2 +- .../locales/ne-NP/activity-stream-strings.js | 4 +- .../nl/activity-stream-prerendered.html | 2 +- .../locales/nl/activity-stream-strings.js | 4 +- .../nn-NO/activity-stream-prerendered.html | 2 +- .../locales/nn-NO/activity-stream-strings.js | 4 +- .../pa-IN/activity-stream-prerendered.html | 2 +- .../locales/pa-IN/activity-stream-strings.js | 4 +- .../pl/activity-stream-prerendered.html | 2 +- .../locales/pl/activity-stream-strings.js | 4 +- .../pt-BR/activity-stream-prerendered.html | 2 +- .../locales/pt-BR/activity-stream-strings.js | 4 +- .../pt-PT/activity-stream-prerendered.html | 2 +- .../locales/pt-PT/activity-stream-strings.js | 4 +- .../rm/activity-stream-prerendered.html | 2 +- .../locales/rm/activity-stream-strings.js | 4 +- .../ro/activity-stream-prerendered.html | 2 +- .../locales/ro/activity-stream-strings.js | 4 +- .../ru/activity-stream-prerendered.html | 2 +- .../locales/ru/activity-stream-strings.js | 4 +- .../si/activity-stream-prerendered.html | 2 +- .../locales/si/activity-stream-strings.js | 4 +- .../sk/activity-stream-prerendered.html | 2 +- .../locales/sk/activity-stream-strings.js | 4 +- .../sl/activity-stream-prerendered.html | 2 +- .../locales/sl/activity-stream-strings.js | 4 +- .../sq/activity-stream-prerendered.html | 2 +- .../locales/sq/activity-stream-strings.js | 8 +- .../sr/activity-stream-prerendered.html | 2 +- .../locales/sr/activity-stream-strings.js | 4 +- .../sv-SE/activity-stream-prerendered.html | 2 +- .../locales/sv-SE/activity-stream-strings.js | 4 +- .../ta/activity-stream-prerendered.html | 2 +- .../locales/ta/activity-stream-strings.js | 4 +- .../te/activity-stream-prerendered.html | 2 +- .../locales/te/activity-stream-strings.js | 4 +- .../th/activity-stream-prerendered.html | 2 +- .../locales/th/activity-stream-strings.js | 6 +- .../tl/activity-stream-prerendered.html | 2 +- .../locales/tl/activity-stream-strings.js | 4 +- .../tr/activity-stream-prerendered.html | 2 +- .../locales/tr/activity-stream-strings.js | 4 +- .../uk/activity-stream-prerendered.html | 2 +- .../locales/uk/activity-stream-strings.js | 4 +- .../ur/activity-stream-prerendered.html | 2 +- .../locales/ur/activity-stream-strings.js | 4 +- .../uz/activity-stream-prerendered.html | 2 +- .../locales/uz/activity-stream-strings.js | 4 +- .../vi/activity-stream-prerendered.html | 2 +- .../locales/vi/activity-stream-strings.js | 4 +- .../zh-CN/activity-stream-prerendered.html | 2 +- .../locales/zh-CN/activity-stream-strings.js | 4 +- .../zh-TW/activity-stream-prerendered.html | 2 +- .../locales/zh-TW/activity-stream-strings.js | 4 +- .../activity-stream-prerendered-debug.html | 2 +- .../activity-stream/test/schemas/pings.js | 41 - .../unit/activity-stream-prerender.test.jsx | 12 - .../lib/ActivityStreamMessageChannel.test.js | 6 +- .../test/unit/lib/FilterAdult.test.js | 2 +- .../test/unit/lib/PlacesFeed.test.js | 8 +- .../test/unit/lib/SectionsManager.test.js | 8 +- .../test/unit/lib/TelemetryFeed.test.js | 29 +- .../test/unit/lib/TopSitesFeed.test.js | 12 +- .../test/unit/lib/TopStoriesFeed.test.js | 16 +- .../test/unit/lib/UTEventReporting.test.js | 92 - .../lib/UserDomainAffinityProvider.test.js | 2 +- .../activity-stream/test/unit/unit-entry.js | 26 +- .../vendor/REACT_AND_REACT_DOM_LICENSE | 21 - .../activity-stream/vendor/react-dev.js | 5327 ++- .../activity-stream/vendor/react-dom-dev.js | 31567 +++++++++------- .../activity-stream/vendor/react-dom.js | 203 +- .../activity-stream/vendor/react.js | 27 +- 215 files changed, 22224 insertions(+), 18271 deletions(-) delete mode 100644 browser/extensions/activity-stream/css/activity-stream-linux.css.map delete mode 100644 browser/extensions/activity-stream/css/activity-stream-mac.css.map delete mode 100644 browser/extensions/activity-stream/css/activity-stream-windows.css.map delete mode 100644 browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map delete mode 100644 browser/extensions/activity-stream/lib/UTEventReporting.jsm delete mode 100644 browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js delete mode 100644 browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE diff --git a/browser/extensions/activity-stream/common/Reducers.jsm b/browser/extensions/activity-stream/common/Reducers.jsm index 964c66696487..e258968c339b 100644 --- a/browser/extensions/activity-stream/common/Reducers.jsm +++ b/browser/extensions/activity-stream/common/Reducers.jsm @@ -6,8 +6,8 @@ const {actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {}); const {Dedupe} = ChromeUtils.import("resource://activity-stream/common/Dedupe.jsm", {}); -const TOP_SITES_DEFAULT_ROWS = 1; -const TOP_SITES_MAX_SITES_PER_ROW = 8; +const TOP_SITES_DEFAULT_ROWS = 2; +const TOP_SITES_MAX_SITES_PER_ROW = 6; const dedupe = new Dedupe(site => site && site.url); diff --git a/browser/extensions/activity-stream/css/activity-stream-linux.css b/browser/extensions/activity-stream/css/activity-stream-linux.css index f98350c64568..63c9b18b39be 100644 --- a/browser/extensions/activity-stream/css/activity-stream-linux.css +++ b/browser/extensions/activity-stream/css/activity-stream-linux.css @@ -210,23 +210,19 @@ main { margin: auto; padding-bottom: 48px; width: 224px; } - @media (min-width: 432px) { + @media (min-width: 416px) { main { width: 352px; } } - @media (min-width: 560px) { + @media (min-width: 544px) { main { width: 480px; } } - @media (min-width: 816px) { + @media (min-width: 800px) { main { width: 736px; } } main section { margin-bottom: 40px; position: relative; } -@media (min-width: 1072px) { - .wide-layout-enabled main { - width: 992px; } } - .section-top-bar { height: 16px; margin-bottom: 16px; } @@ -240,9 +236,6 @@ main { fill: #737373; vertical-align: middle; } -.base-content-fallback { - height: 100vh; } - .body-wrapper .section-title, .body-wrapper .sections-list .section:last-of-type, @@ -255,27 +248,12 @@ main { .body-wrapper.on .topic { opacity: 1; } -.as-error-fallback { - align-items: center; - border-radius: 3px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); - color: #4A4A4F; - display: flex; - flex-direction: column; - font-size: 12px; - justify-content: center; - justify-items: center; - line-height: 1.5; } - .as-error-fallback a { - color: #4A4A4F; - text-decoration: underline; } - .top-sites-list { list-style: none; margin: 0 -16px; margin-bottom: -18px; padding: 0; } - @media (max-width: 432px) { + @media (max-width: 416px) { .top-sites-list :nth-child(2n+1) .context-menu { margin-inline-end: auto; margin-inline-start: auto; @@ -286,32 +264,32 @@ main { margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 432px) and (max-width: 560px) { + @media (min-width: 416px) and (max-width: 544px) { .top-sites-list :nth-child(3n+2) .context-menu, .top-sites-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 816px) { + @media (min-width: 544px) and (max-width: 800px) { .top-sites-list :nth-child(4n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 784px) { + @media (min-width: 544px) and (max-width: 768px) { .top-sites-list :nth-child(4n+3) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1264px) { + @media (min-width: 800px) and (max-width: 1248px) { .top-sites-list :nth-child(6n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1040px) { + @media (min-width: 800px) and (max-width: 1024px) { .top-sites-list :nth-child(6n+5) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -434,13 +412,6 @@ main { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .top-sites-list .top-site-outer.placeholder .screenshot { display: none; } - .top-sites-list .top-site-outer.dragged .tile { - background: #EDEDF0; - box-shadow: none; } - .top-sites-list .top-site-outer.dragged .tile * { - display: none; } - .top-sites-list .top-site-outer.dragged .title { - visibility: hidden; } .top-sites-list:not(.dnd-active) .top-site-outer:-moz-any(.active, :focus, :hover) .tile { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -448,27 +419,6 @@ main { opacity: 1; transform: scale(1); } -.wide-layout-disabled .top-sites-list .hide-for-narrow { - display: none; } - -@media (min-width: 1072px) and (max-width: 1520px) { - .wide-layout-enabled .top-sites-list :nth-child(8n) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media (min-width: 1072px) and (max-width: 1296px) { - .wide-layout-enabled .top-sites-list :nth-child(8n+7) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media not all and (min-width: 1072px) { - .wide-layout-enabled .top-sites-list .hide-for-narrow { - display: none; } } - .edit-topsites-wrapper .add-topsites-button { border-right: 1px solid #D7D7DB; line-height: 13px; @@ -575,19 +525,19 @@ main { grid-gap: 32px; grid-template-columns: repeat(auto-fit, 224px); margin: 0; } - @media (max-width: 560px) { + @media (max-width: 544px) { .sections-list .section-list .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 816px) { + @media (min-width: 544px) and (max-width: 800px) { .sections-list .section-list :nth-child(2n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1264px) { + @media (min-width: 800px) and (max-width: 1248px) { .sections-list .section-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -619,29 +569,18 @@ main { margin-bottom: 0; text-align: center; } -@media (min-width: 1072px) and (max-width: 1520px) { - .wide-layout-enabled .sections-list .section-list :nth-child(3n) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media (min-width: 1072px) { - .wide-layout-enabled .sections-list .section-list { - grid-template-columns: repeat(auto-fit, 309px); } } - .topic { color: #737373; font-size: 12px; line-height: 1.6; margin-top: 12px; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic { line-height: 16px; } } .topic ul { margin: 0; padding: 0; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic ul { display: inline; padding-inline-start: 12px; } } @@ -656,7 +595,7 @@ main { color: #008EA4; } .topic .topic-read-more { color: #008EA4; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic .topic-read-more { float: right; } .topic .topic-read-more:dir(rtl) { @@ -971,7 +910,7 @@ main { height: 266px; margin-inline-end: 32px; position: relative; - width: 100%; } + width: 224px; } .card-outer .context-menu-button { background-clip: padding-box; background-color: #FFF; @@ -1008,7 +947,7 @@ main { height: 100%; outline: none; position: absolute; - width: 100%; } + width: 224px; } .card-outer > a:-moz-any(.active, :focus) .card { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -1102,35 +1041,27 @@ main { text-overflow: ellipsis; white-space: nowrap; } -@media (min-width: 1072px) { - .wide-layout-enabled .card-outer { - height: 370px; } - .wide-layout-enabled .card-outer .card-preview-image-outer { - height: 155px; } - .wide-layout-enabled .card-outer .card-text { - max-height: 135px; } } - .manual-migration-container { color: #4A4A4F; font-size: 13px; line-height: 15px; margin-bottom: 40px; text-align: center; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container { display: flex; justify-content: space-between; text-align: left; } } .manual-migration-container p { margin: 0; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container p { align-self: center; display: flex; justify-content: space-between; } } .manual-migration-container .icon { display: none; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container .icon { align-self: center; display: block; @@ -1141,7 +1072,7 @@ main { border: 0; display: block; flex-wrap: nowrap; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-actions { display: flex; justify-content: space-between; @@ -1275,13 +1206,13 @@ main { position: relative; } .collapsible-section .section-disclaimer .section-disclaimer-text { display: inline-block; } - @media (min-width: 432px) { + @media (min-width: 416px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 224px; } } - @media (min-width: 560px) { + @media (min-width: 544px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 340px; } } - @media (min-width: 816px) { + @media (min-width: 800px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 610px; } } .collapsible-section .section-disclaimer a { @@ -1299,13 +1230,10 @@ main { .collapsible-section .section-disclaimer button:hover:not(.dismiss) { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } - @media (min-width: 432px) { + @media (min-width: 416px) { .collapsible-section .section-disclaimer button { position: absolute; } } -.collapsible-section .section-body-fallback { - height: 266px; } - .collapsible-section .section-body { margin: 0 -7px; padding: 0 7px; } @@ -1329,5 +1257,3 @@ main { .collapsible-section:not(.collapsed):hover .info-option-icon { opacity: 1; } - -/*# sourceMappingURL=activity-stream-linux.css.map */ \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-linux.css.map b/browser/extensions/activity-stream/css/activity-stream-linux.css.map deleted file mode 100644 index f6dc0c738c64..000000000000 --- a/browser/extensions/activity-stream/css/activity-stream-linux.css.map +++ /dev/null @@ -1,44 +0,0 @@ -{ - "version": 3, - "file": "activity-stream-linux.css", - "sources": [ - "../content-src/styles/activity-stream-linux.scss", - "../content-src/styles/_activity-stream.scss", - "../content-src/styles/_normalize.scss", - "../content-src/styles/_variables.scss", - "../content-src/styles/_icons.scss", - "../content-src/components/Base/_Base.scss", - "../content-src/components/ErrorBoundary/_ErrorBoundary.scss", - "../content-src/components/TopSites/_TopSites.scss", - "../content-src/components/Sections/_Sections.scss", - "../content-src/components/Topics/_Topics.scss", - "../content-src/components/Search/_Search.scss", - "../content-src/components/ContextMenu/_ContextMenu.scss", - "../content-src/components/PreferencesPane/_PreferencesPane.scss", - "../content-src/components/ConfirmDialog/_ConfirmDialog.scss", - "../content-src/components/Card/_Card.scss", - "../content-src/components/ManualMigration/_ManualMigration.scss", - "../content-src/components/CollapsibleSection/_CollapsibleSection.scss" - ], - "sourcesContent": [ - "/* This is the linux variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 6px;\n$os-infopanel-arrow-width: 20px;\n$os-search-focus-shadow-radius: 3px;\n\n@import './activity-stream';\n", - "@import './normalize';\n@import './variables';\n@import './icons';\n\nhtml,\nbody,\n#root { // sass-lint:disable-line no-ids\n height: 100%;\n}\n\nbody {\n background: $background-primary;\n color: $text-primary;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n overflow-y: scroll;\n}\n\nh1,\nh2 {\n font-weight: normal;\n}\n\na {\n color: $link-primary;\n text-decoration: none;\n\n &:hover {\n color: $link-secondary;\n }\n}\n\n// For screen readers\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.inner-border {\n border: $border-secondary;\n border-radius: $border-radius;\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.show-on-init {\n opacity: 0;\n transition: opacity 0.2s ease-in;\n\n &.on {\n animation: fadeIn 0.2s;\n opacity: 1;\n }\n}\n\n.actions {\n border-top: $border-secondary;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin: 0;\n padding: 15px 25px 0;\n\n button {\n background-color: $input-secondary;\n border: $border-primary;\n border-radius: 4px;\n color: inherit;\n cursor: pointer;\n margin-bottom: 15px;\n padding: 10px 30px;\n white-space: nowrap;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n &.dismiss {\n border: 0;\n padding: 0;\n text-decoration: underline;\n }\n\n &.done {\n background: $input-primary;\n border: solid 1px $blue-60;\n color: $white;\n margin-inline-start: auto;\n }\n }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/PreferencesPane/PreferencesPane';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n", - "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n border: 0;\n}\n\nbody {\n margin: 0;\n}\n\nbutton,\ninput {\n font-family: inherit;\n font-size: inherit;\n}\n\n[hidden] {\n display: none !important; // sass-lint:disable-line no-important\n}\n", - "// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n// Aliases and derived styles based on Photon colors for common usage\n$background-primary: $grey-10;\n$background-secondary: $grey-20;\n$border-primary: 1px solid $grey-40;\n$border-secondary: 1px solid $grey-30;\n$fill-primary: $grey-90-80;\n$fill-secondary: $grey-90-60;\n$fill-tertiary: $grey-30;\n$input-primary: $blue-60;\n$input-secondary: $grey-10;\n$link-primary: $blue-60;\n$link-secondary: $teal-70;\n$shadow-primary: 0 0 0 5px $grey-30;\n$shadow-secondary: 0 1px 4px 0 $grey-90-10;\n$text-primary: $grey-90;\n$text-conditional: $grey-60;\n$text-secondary: $grey-50;\n$input-border: solid 1px $grey-90-20;\n$input-border-active: solid 1px $grey-90-40;\n$input-error-border: solid 1px $red-60;\n$input-error-boxshadow: 0 0 0 2px rgba($red-60, 0.35);\n\n$white: #FFF;\n$border-radius: 3px;\n\n$base-gutter: 32px;\n$section-spacing: 40px;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-border-color: $black-20;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $context-menu-border-color;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$inner-box-shadow: 0 0 0 1px $black-10;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n@mixin fade-in {\n box-shadow: inset $inner-box-shadow, $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n .context-menu-button {\n background-clip: padding-box;\n background-color: $white;\n background-image: url('chrome://browser/skin/page-action.svg');\n background-position: 55%;\n border: $border-primary;\n border-radius: 100%;\n box-shadow: $context-menu-button-boxshadow;\n cursor: pointer;\n fill: $fill-primary;\n height: $context-menu-button-size;\n offset-inline-end: -($context-menu-button-size / 2);\n opacity: 0;\n position: absolute;\n top: -($context-menu-button-size / 2);\n transform: scale(0.25);\n transition-duration: 200ms;\n transition-property: transform, opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n@mixin context-menu-button-hover {\n .context-menu-button {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@mixin context-menu-open-middle {\n .context-menu {\n margin-inline-end: auto;\n margin-inline-start: auto;\n offset-inline-end: auto;\n offset-inline-start: -$base-gutter;\n }\n}\n\n@mixin context-menu-open-left {\n .context-menu {\n margin-inline-end: 5px;\n margin-inline-start: auto;\n offset-inline-end: 0;\n offset-inline-start: auto;\n }\n}\n\n@mixin flip-icon {\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n}\n", - ".icon {\n background-position: center center;\n background-repeat: no-repeat;\n background-size: $icon-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-primary;\n height: $icon-size;\n vertical-align: middle;\n width: $icon-size;\n\n &.icon-spacer {\n margin-inline-end: 8px;\n }\n\n &.icon-small-spacer {\n margin-inline-end: 6px;\n }\n\n &.icon-bookmark-added {\n background-image: url('chrome://browser/skin/bookmark.svg');\n }\n\n &.icon-bookmark-hollow {\n background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n }\n\n &.icon-delete {\n background-image: url('#{$image-path}glyph-delete-16.svg');\n }\n\n &.icon-modal-delete {\n background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n background-size: $larger-icon-size;\n height: $larger-icon-size;\n width: $larger-icon-size;\n }\n\n &.icon-dismiss {\n background-image: url('#{$image-path}glyph-dismiss-16.svg');\n }\n\n &.icon-info {\n background-image: url('#{$image-path}glyph-info-16.svg');\n }\n\n &.icon-import {\n background-image: url('#{$image-path}glyph-import-16.svg');\n }\n\n &.icon-new-window {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-newWindow-16.svg');\n }\n\n &.icon-new-window-private {\n background-image: url('chrome://browser/skin/privateBrowsing.svg');\n }\n\n &.icon-settings {\n background-image: url('chrome://browser/skin/settings.svg');\n }\n\n &.icon-pin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-16.svg');\n }\n\n &.icon-unpin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-unpin-16.svg');\n }\n\n &.icon-edit {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.icon-pocket {\n background-image: url('#{$image-path}glyph-pocket-16.svg');\n }\n\n &.icon-historyItem { // sass-lint:disable-line class-name-format\n background-image: url('#{$image-path}glyph-historyItem-16.svg');\n }\n\n &.icon-trending {\n background-image: url('#{$image-path}glyph-trending-16.svg');\n transform: translateY(2px); // trending bolt is visually top heavy\n }\n\n &.icon-now {\n background-image: url('chrome://browser/skin/history.svg');\n }\n\n &.icon-topsites {\n background-image: url('#{$image-path}glyph-topsites-16.svg');\n }\n\n &.icon-pin-small {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-check {\n background-image: url('chrome://browser/skin/check.svg');\n }\n\n &.icon-webextension {\n background-image: url('#{$image-path}glyph-webextension-16.svg');\n }\n\n &.icon-highlights {\n background-image: url('#{$image-path}glyph-highlights-16.svg');\n }\n\n &.icon-arrowhead-down {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-arrowhead-forward {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n transform: rotate(-90deg);\n width: $smaller-icon-size;\n\n &:dir(rtl) {\n transform: rotate(90deg);\n }\n }\n}\n", - ".outer-wrapper {\n display: flex;\n flex-grow: 1;\n height: 100%;\n padding: $section-spacing $base-gutter $base-gutter;\n\n &.fixed-to-top {\n height: auto;\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets / onboarding are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-small) {\n width: $wrapper-max-width-small;\n }\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n}\n\n.wide-layout-enabled {\n main {\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n }\n}\n\n.section-top-bar {\n height: 16px;\n margin-bottom: 16px;\n}\n\n.section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n text-transform: uppercase;\n\n span {\n color: $text-secondary;\n fill: $text-secondary;\n vertical-align: middle;\n }\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topic\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n", - ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: $text-conditional;\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: $text-conditional;\n text-decoration: underline;\n }\n}\n\n", - ".top-sites-list {\n $top-sites-size: $grid-unit;\n $top-sites-border-radius: 6px;\n $top-sites-title-height: 30px;\n $top-sites-vertical-space: 8px;\n $screenshot-size: cover;\n $rich-icon-size: 96px;\n $default-icon-wrapper-size: 42px;\n $default-icon-size: 32px;\n $default-icon-offset: 6px;\n $half-base-gutter: $base-gutter / 2;\n\n list-style: none;\n margin: 0 (-$half-base-gutter);\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: -($top-sites-vertical-space + $top-sites-title-height / 3);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-small) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Three columns\n @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n :nth-child(3n+2),\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n li {\n display: inline-block;\n margin: 0 0 $top-sites-vertical-space;\n }\n\n // container for drop zone\n .top-site-outer {\n padding: 0 $half-base-gutter;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, $shadow-secondary;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: $text-secondary;\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: $background-primary;\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n position: absolute;\n }\n\n .rich-icon {\n background-size: $rich-icon-size;\n height: 100%;\n offset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon { // sass-lint:disable block property-sort-order\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n offset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .title {\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: $fill-tertiary;\n offset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n * {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// Always hide .hide-for-narrow if wide layout is disabled\n.wide-layout-disabled {\n .top-sites-list {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n\n.wide-layout-enabled {\n .top-sites-list {\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n }\n}\n\n.edit-topsites-wrapper {\n .add-topsites-button {\n border-right: $border-secondary;\n line-height: 13px;\n offset-inline-end: 24px;\n opacity: 0;\n padding: 0 10px;\n pointer-events: none;\n position: absolute;\n top: 2px;\n transition: opacity 0.2s $photon-easing;\n\n &:dir(rtl) {\n border-left: $border-secondary;\n border-right: 0;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n\n button {\n background: none;\n border: 0;\n color: $text-secondary;\n cursor: pointer;\n font-size: 12px;\n padding: 0;\n\n &:focus {\n background: $background-secondary;\n border-bottom: dotted 1px $text-secondary;\n }\n }\n }\n\n .modal {\n offset-inline-start: -31px;\n position: absolute;\n top: -29px;\n width: calc(100% + 62px);\n box-shadow: $shadow-secondary;\n }\n\n .edit-topsites-inner-wrapper {\n margin: 0;\n padding: 15px 30px;\n }\n}\n\n.top-sites:not(.collapsed):hover {\n .add-topsites-button {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.topsite-form {\n .form-wrapper {\n margin: auto;\n max-width: 350px;\n padding: 15px 0;\n\n .field {\n position: relative;\n }\n\n .url input:not(:placeholder-shown):dir(rtl) {\n direction: ltr;\n text-align: right;\n }\n\n .section-title {\n margin-bottom: 5px;\n }\n\n input {\n &[type='text'] {\n border: $input-border;\n border-radius: 2px;\n margin: 5px 0;\n padding: 7px;\n width: 100%;\n\n &:focus {\n border: $input-border-active;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n offset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n offset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", - ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: $fill-secondary;\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: $text-secondary;\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n }\n}\n\n.wide-layout-enabled {\n .sections-list {\n .section-list {\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", - ".topic {\n color: $text-secondary;\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n\n .topic-link {\n color: $link-secondary;\n }\n\n .topic-read-more {\n color: $link-secondary;\n\n @media (min-width: $break-point-large) {\n // This is floating to accomodate a very large number of topics and/or\n // very long topic names due to l10n.\n float: right;\n\n &:dir(rtl) {\n float: left;\n }\n }\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-secondary;\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n\n // This is a clearfix to for the topics-read-more link which is floating and causes\n // some jank when we set overflow:hidden for the animation.\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n}\n", - ".search-wrapper {\n $search-border-radius: 3px;\n $search-focus-color: $blue-50;\n $search-height: 35px;\n $search-input-left-label-width: 35px;\n $search-button-width: 36px;\n $search-glyph-image: url('chrome://browser/skin/search-glass.svg');\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n $search-glyph-size: 16px;\n $search-glyph-fill: $grey-90-40;\n // This is positioned so it is visually (not metrically) centered. r=abenson\n $search-glyph-left-position: 12px;\n\n cursor: default;\n display: flex;\n height: $search-height;\n // The extra 1px is to account for the box-shadow being outside of the element\n // instead of inside. It needs to be like that to not overlap the inner background\n // color of the hover state of the submit button.\n margin: 1px 1px $section-spacing;\n position: relative;\n width: 100%;\n\n input {\n border: 0;\n border-radius: $search-border-radius;\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n color: inherit;\n font-size: 15px;\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-input-left-label-width;\n width: 100%;\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n &:active input,\n input:focus {\n box-shadow: 0 0 0 $os-search-focus-shadow-radius $search-focus-color;\n }\n\n .search-label {\n background: $search-glyph-image no-repeat $search-glyph-left-position center / $search-glyph-size;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-start: 0;\n position: absolute;\n width: $search-input-left-label-width;\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable { // sass-lint:disable-line class-name-format\n border: 0;\n transform: translateY(2px);\n }\n}\n", - ".context-menu {\n background: $background-primary;\n border-radius: $context-menu-border-radius;\n box-shadow: $context-menu-shadow;\n display: block;\n font-size: $context-menu-font-size;\n margin-inline-start: 5px;\n offset-inline-start: 100%;\n position: absolute;\n top: ($context-menu-button-size / 4);\n z-index: 10000;\n\n > ul {\n list-style: none;\n margin: 0;\n padding: $context-menu-outer-padding 0;\n\n > li {\n margin: 0;\n width: 100%;\n\n &.separator {\n border-bottom: 1px solid $context-menu-border-color;\n margin: $context-menu-outer-padding 0;\n }\n\n > a {\n align-items: center;\n color: inherit;\n cursor: pointer;\n display: flex;\n line-height: 16px;\n outline: none;\n padding: $context-menu-item-padding;\n white-space: nowrap;\n\n &:-moz-any(:focus, :hover) {\n background: $input-primary;\n color: $white;\n\n a {\n color: $grey-90;\n }\n\n .icon {\n fill: $white;\n }\n\n &:-moz-any(:focus, :hover) {\n color: $white;\n }\n }\n }\n }\n }\n}\n", - ".prefs-pane {\n $options-spacing: 10px;\n $prefs-spacing: 20px;\n $prefs-width: 400px;\n\n color: $text-conditional;\n font-size: 14px;\n line-height: 21px;\n\n .sidebar {\n background: $white;\n border-left: $border-secondary;\n box-shadow: $shadow-secondary;\n height: 100%;\n offset-inline-end: 0;\n overflow-y: auto;\n padding: 40px;\n position: fixed;\n top: 0;\n transition: 0.1s cubic-bezier(0, 0, 0, 1);\n transition-property: transform;\n width: $prefs-width;\n z-index: 12000;\n\n &.hidden {\n transform: translateX(100%);\n\n &:dir(rtl) {\n transform: translateX(-100%);\n }\n }\n\n h1 {\n font-size: 21px;\n margin: 0;\n padding-top: $prefs-spacing;\n }\n }\n\n hr {\n border: 0;\n border-bottom: $border-secondary;\n margin: 20px 0;\n }\n\n .prefs-modal-inner-wrapper {\n padding-bottom: 100px;\n\n section {\n margin: $prefs-spacing 0;\n\n p {\n margin: 5px 0 20px 30px;\n }\n\n label {\n display: inline-block;\n position: relative;\n width: 100%;\n\n input {\n offset-inline-start: -30px;\n position: absolute;\n top: 0;\n }\n }\n\n > label {\n font-size: 16px;\n font-weight: bold;\n line-height: 19px;\n }\n }\n\n .options {\n background: $background-primary;\n border: $border-secondary;\n border-radius: 2px;\n margin: -$options-spacing 0 $prefs-spacing;\n margin-inline-start: 30px;\n padding: $options-spacing;\n\n &.disabled {\n opacity: 0.5;\n }\n\n label {\n $icon-offset-start: 35px;\n background-position-x: $icon-offset-start;\n background-position-y: 2.5px;\n background-repeat: no-repeat;\n display: inline-block;\n font-size: 14px;\n font-weight: normal;\n height: auto;\n line-height: 21px;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $icon-offset-start;\n }\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n padding-inline-start: 63px;\n }\n\n section {\n margin: 0;\n }\n }\n }\n\n .actions {\n background-color: $background-primary;\n border-left: $border-secondary;\n bottom: 0;\n offset-inline-end: 0;\n position: fixed;\n width: $prefs-width;\n\n button {\n margin-inline-end: $prefs-spacing;\n }\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n offset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:disabled):not(:checked) + label,\n [type='checkbox']:not(:disabled):checked + label {\n cursor: pointer;\n padding: 0 30px;\n position: relative;\n }\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: $white;\n border: $border-primary;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n top: 0;\n width: 21px;\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/in-content/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n -moz-context-properties: fill, stroke;\n fill: $input-primary;\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n stroke: none;\n top: 0;\n width: 21px;\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // hover\n [type='checkbox']:not(:disabled) + label:hover::before {\n border: 1px solid $input-primary;\n }\n\n // accessibility\n [type='checkbox']:not(:disabled):checked:focus + label::before,\n [type='checkbox']:not(:disabled):not(:checked):focus + label::before {\n border: 1px dotted $input-primary;\n }\n}\n\n.prefs-pane-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: $fill-secondary;\n offset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 12001;\n\n &:hover {\n background-color: $background-secondary;\n }\n\n &:active {\n background-color: $background-primary;\n }\n }\n}\n", - ".confirmation-dialog {\n .modal {\n box-shadow: 0 2px 2px 0 $black-10;\n left: 50%;\n margin-left: -200px;\n position: fixed;\n top: 20%;\n width: 400px;\n }\n\n section {\n margin: 0;\n }\n\n .modal-message {\n display: flex;\n padding: 16px;\n padding-bottom: 0;\n\n p {\n margin: 0;\n margin-bottom: 16px;\n }\n }\n\n .actions {\n border: 0;\n display: flex;\n flex-wrap: nowrap;\n padding: 0 16px;\n\n button {\n margin-inline-end: 16px;\n padding-inline-end: 18px;\n padding-inline-start: 18px;\n white-space: normal;\n width: 50%;\n\n &.done {\n margin-inline-end: 0;\n margin-inline-start: 0;\n }\n }\n }\n\n .icon {\n margin-inline-end: 16px;\n }\n}\n\n.modal-overlay {\n background: $background-secondary;\n height: 100%;\n left: 0;\n opacity: 0.8;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 11001;\n}\n\n.modal {\n background: $white;\n border: $border-secondary;\n border-radius: 5px;\n font-size: 15px;\n z-index: 11002;\n}\n", - ".card-outer {\n @include context-menu-button;\n background: $white;\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: $link-primary;\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: $link-primary;\n }\n }\n\n .card-preview-image-outer {\n background-color: $background-primary;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n &::after {\n border-bottom: 1px solid $black-5;\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n\n &.no-image {\n padding-top: 16px;\n }\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-image {\n max-height: 10 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name,\n &.no-image.no-context {\n max-height: 11 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name.no-context {\n max-height: 12 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: $text-secondary;\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase;\n }\n\n .card-title {\n font-size: 14px;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: $text-secondary;\n display: flex;\n font-size: 11px;\n left: 0;\n padding: 12px 16px 12px 14px;\n position: absolute;\n right: 0;\n }\n\n .card-context-icon {\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: $icon-size;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.wide-layout-enabled {\n .card-outer {\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-text {\n max-height: 7 * $card-text-line-height + $card-title-margin;\n }\n }\n }\n}\n", - ".manual-migration-container {\n color: $text-conditional;\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", - ".collapsible-section {\n .section-title {\n\n .click-target {\n cursor: pointer;\n vertical-align: top;\n white-space: nowrap;\n }\n\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n $info-active-color: $grey-90-10;\n position: relative;\n\n .section-info-option {\n offset-inline-end: 0;\n position: absolute;\n top: 0;\n }\n\n .info-option-icon {\n background-image: url('#{$image-path}glyph-info-option-12.svg');\n background-position: center;\n background-repeat: no-repeat;\n background-size: 12px 12px;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-secondary;\n height: 16px;\n margin-bottom: -2px; // Specific styling for the particuar icon. r=abenson\n opacity: 0;\n transition: opacity 0.2s $photon-easing;\n width: 16px;\n\n &[aria-expanded='true'] {\n background-color: $info-active-color;\n border-radius: 1px; // The shadow below makes this the desired larger radius\n box-shadow: 0 0 0 5px $info-active-color;\n fill: $fill-primary;\n\n + .info-option {\n opacity: 1;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: visible;\n }\n }\n\n &:not([aria-expanded='true']) + .info-option {\n pointer-events: none;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n }\n\n .section-info-option .info-option {\n opacity: 0;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: hidden;\n\n &::after,\n &::before {\n content: '';\n offset-inline-end: 0;\n position: absolute;\n }\n\n &::before {\n $before-height: 32px;\n background-image: url('chrome://global/skin/arrow/panelarrow-vertical.svg');\n background-position: right $os-infopanel-arrow-offset-end bottom;\n background-repeat: no-repeat;\n background-size: $os-infopanel-arrow-width $os-infopanel-arrow-height;\n -moz-context-properties: fill, stroke;\n fill: $white;\n height: $before-height;\n stroke: $grey-30;\n top: -$before-height;\n width: 43px;\n }\n\n &:dir(rtl)::before {\n background-position-x: $os-infopanel-arrow-offset-end;\n }\n\n &::after {\n height: $os-infopanel-arrow-height;\n offset-inline-start: 0;\n top: -$os-infopanel-arrow-height;\n }\n }\n\n .info-option {\n background: $white;\n border: $border-secondary;\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n font-size: 13px;\n line-height: 120%;\n margin-inline-end: -9px;\n offset-inline-end: 0;\n padding: 24px;\n position: absolute;\n top: 26px;\n -moz-user-select: none;\n width: 320px;\n z-index: 9999;\n }\n\n .info-option-header {\n font-size: 15px;\n font-weight: 600;\n }\n\n .info-option-body {\n margin: 0;\n margin-top: 12px;\n }\n\n .info-option-link {\n color: $link-primary;\n margin-left: 7px;\n }\n\n .info-option-manage {\n margin-top: 24px;\n\n button {\n background: 0;\n border: 0;\n color: $link-primary;\n cursor: pointer;\n margin: 0;\n padding: 0;\n\n &::after {\n background-image: url('#{$image-path}topic-show-more-12.svg');\n background-repeat: no-repeat;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-primary;\n height: 16px;\n margin-inline-start: 5px;\n margin-top: 1px;\n vertical-align: middle;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n }\n }\n\n .section-disclaimer {\n color: $grey-60;\n font-size: 13px;\n margin-bottom: 16px;\n position: relative;\n\n .section-disclaimer-text {\n display: inline-block;\n\n @media (min-width: $break-point-small) {\n width: $card-width;\n }\n\n @media (min-width: $break-point-medium) {\n width: 340px;\n }\n\n @media (min-width: $break-point-large) {\n width: 610px;\n }\n }\n\n a {\n color: $link-secondary;\n padding-left: 3px;\n }\n\n button {\n background: $grey-10;\n border: 1px solid $grey-40;\n border-radius: 4px;\n cursor: pointer;\n margin-top: 2px;\n max-width: 130px;\n min-height: 26px;\n offset-inline-end: 0;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n @media (min-width: $break-point-small) {\n position: absolute;\n }\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n\n .section-info-option {\n pointer-events: none;\n }\n }\n\n &:not(.collapsed):hover {\n .info-option-icon {\n opacity: 1;\n }\n }\n}\n" - ], - "names": [], - "mappings": ";AAAA,+BAA+B;AEA/B,AAAA,IAAI,CAAC;EACH,UAAU,EAAE,UAAU,GACvB;;AAED,AAAA,CAAC;AACD,AAAA,CAAC,AAAA,QAAQ;AACT,AAAA,CAAC,AAAA,OAAO,CAAC;EACP,UAAU,EAAE,OAAO,GACpB;;AAED,AAAA,CAAC,AAAA,kBAAkB,CAAC;EAClB,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,MAAM;AACN,AAAA,KAAK,CAAC;EACJ,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO,GACnB;;CAED,AAAA,AAAA,MAAC,AAAA,EAAQ;EACP,OAAO,EAAE,eAAe,GACzB;;AE1BD,AAAA,KAAK,CAAC;EACJ,mBAAmB,EAAE,aAAa;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,ED6DL,IAAI;EC5Dd,uBAAuB,EAAE,IAAI;EAC7B,OAAO,EAAE,YAAY;EACrB,IAAI,EDGI,qBAAO;ECFf,MAAM,EDyDI,IAAI;ECxDd,cAAc,EAAE,MAAM;EACtB,KAAK,EDuDK,IAAI,GCwEf;EAxID,AAWE,KAXG,AAWH,YAAa,CAAC;IACZ,iBAAiB,EAAE,GAAG,GACvB;EAbH,AAeE,KAfG,AAeH,kBAAmB,CAAC;IAClB,iBAAiB,EAAE,GAAG,GACvB;EAjBH,AAmBE,KAnBG,AAmBH,oBAAqB,CAAC;IACpB,gBAAgB,EAAE,yCAAyC,GAC5D;EArBH,AAuBE,KAvBG,AAuBH,qBAAsB,CAAC;IACrB,gBAAgB,EAAE,gDAAgD,GACnE;EAzBH,AA2BE,KA3BG,AA2BH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EA7BH,AA+BE,KA/BG,AA+BH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,uDAA8C;IAChE,eAAe,EDiCA,IAAI;IChCnB,MAAM,EDgCS,IAAI;IC/BnB,KAAK,ED+BU,IAAI,GC9BpB;EApCH,AAsCE,KAtCG,AAsCH,aAAc,CAAC;IACb,gBAAgB,EAAE,kDAAyC,GAC5D;EAxCH,AA0CE,KA1CG,AA0CH,UAAW,CAAC;IACV,gBAAgB,EAAE,+CAAsC,GACzD;EA5CH,AA8CE,KA9CG,AA8CH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EAhDH,AAkDE,KAlDG,AAkDH,gBAAiB,CAAC;IAEhB,gBAAgB,EAAE,oDAA2C,GAC9D;IArDH,ADkLE,KClLG,AAkDH,gBAAiB,ADgIpB,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;ECpLH,AAuDE,KAvDG,AAuDH,wBAAyB,CAAC;IACxB,gBAAgB,EAAE,gDAAgD,GACnE;EAzDH,AA2DE,KA3DG,AA2DH,cAAe,CAAC;IACd,gBAAgB,EAAE,yCAAyC,GAC5D;EA7DH,AA+DE,KA/DG,AA+DH,SAAU,CAAC;IAET,gBAAgB,EAAE,8CAAqC,GACxD;IAlEH,ADkLE,KClLG,AA+DH,SAAU,ADmHb,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;ECpLH,AAoEE,KApEG,AAoEH,WAAY,CAAC;IAEX,gBAAgB,EAAE,gDAAuC,GAC1D;IAvEH,ADkLE,KClLG,AAoEH,WAAY,AD8Gf,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;ECpLH,AAyEE,KAzEG,AAyEH,UAAW,CAAC;IACV,gBAAgB,EAAE,+CAAsC,GACzD;EA3EH,AA6EE,KA7EG,AA6EH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EA/EH,AAiFE,KAjFG,AAiFH,iBAAkB,CAAC;IACjB,gBAAgB,EAAE,sDAA6C,GAChE;EAnFH,AAqFE,KArFG,AAqFH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C;IAC5D,SAAS,EAAE,eAAe,GAC3B;EAxFH,AA0FE,KA1FG,AA0FH,SAAU,CAAC;IACT,gBAAgB,EAAE,wCAAwC,GAC3D;EA5FH,AA8FE,KA9FG,AA8FH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;EAhGH,AAkGE,KAlGG,AAkGH,eAAgB,CAAC;IAEf,gBAAgB,EAAE,8CAAqC;IACvD,eAAe,EDpCC,IAAI;ICqCpB,MAAM,EDrCU,IAAI;ICsCpB,KAAK,EDtCW,IAAI,GCuCrB;IAxGH,ADkLE,KClLG,AAkGH,eAAgB,ADgFnB,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;ECpLH,AA0GE,KA1GG,AA0GH,WAAY,CAAC;IACX,gBAAgB,EAAE,sCAAsC,GACzD;EA5GH,AA8GE,KA9GG,AA8GH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,uDAA8C,GACjE;EAhHH,AAkHE,KAlHG,AAkHH,gBAAiB,CAAC;IAChB,gBAAgB,EAAE,qDAA4C,GAC/D;EApHH,AAsHE,KAtHG,AAsHH,oBAAqB,CAAC;IACpB,gBAAgB,EAAE,yDAAgD;IAClE,eAAe,EDvDC,IAAI;ICwDpB,MAAM,EDxDU,IAAI;ICyDpB,KAAK,EDzDW,IAAI,GC0DrB;EA3HH,AA6HE,KA7HG,AA6HH,uBAAwB,CAAC;IACvB,gBAAgB,EAAE,yDAAgD;IAClE,eAAe,ED9DC,IAAI;IC+DpB,MAAM,ED/DU,IAAI;ICgEpB,SAAS,EAAE,cAAc;IACzB,KAAK,EDjEW,IAAI,GCsErB;IAvIH,AAoII,KApIC,AA6HH,uBAAwB,AAOtB,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,aAAa,GACzB;;AHlIL,AAAA,IAAI;AACJ,AAAA,IAAI;AACJ,AAAA,KAAK,CAAC;EACJ,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,IAAI,CAAC;EACH,UAAU,EERF,OAAO;EFSf,KAAK,EEHG,OAAO;EFIf,WAAW,EAAE,qFAAqF;EAClG,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM,GACnB;;AAED,AAAA,EAAE;AACF,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,MAAM,GACpB;;AAED,AAAA,CAAC,CAAC;EACA,KAAK,EEtBG,OAAO;EFuBf,eAAe,EAAE,IAAI,GAKtB;EAPD,AAIE,CAJD,AAIC,MAAO,CAAC;IACN,KAAK,EElBC,OAAO,GFmBd;;AAIH,AAAA,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,gBAAgB;EACtB,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,GAAG,GACX;;AAED,AAAA,aAAa,CAAC;EACZ,MAAM,EENW,GAAG,CAAC,KAAK,CAlClB,OAAO;EFyCf,aAAa,EEYC,GAAG;EFXjB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,cAAc,EAAE,IAAI;EACpB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG,GACb;;AAED,UAAU,CAAV,MAAU;EACR,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;EAGZ,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;;AAId,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,oBAAoB,GAMjC;EARD,AAIE,aAJW,AAIX,GAAI,CAAC;IACH,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,CAAC,GACX;;AAGH,AAAA,QAAQ,CAAC;EACP,UAAU,EEtCO,GAAG,CAAC,KAAK,CAlClB,OAAO;EFyEf,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,UAAU;EAC3B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,WAAW,GA8BrB;EArCD,AASE,QATM,CASN,MAAM,CAAC;IACL,gBAAgB,EEnFV,OAAO;IFoFb,MAAM,EEjDO,GAAG,CAAC,KAAK,CAhChB,OAAO;IFkFb,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,MAAM,GAmBpB;IApCH,AASE,QATM,CASN,MAAM,AAUJ,MAAO,AAAA,IAAK,CAAA,AAAA,QAAQ,EAAE;MACpB,UAAU,EEjDC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1ChB,OAAO;MF4FX,UAAU,EAAE,gBAAgB,GAC7B;IAtBL,AASE,QATM,CASN,MAAM,AAeJ,QAAS,CAAC;MACR,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,eAAe,EAAE,SAAS,GAC3B;IA5BL,AASE,QATM,CASN,MAAM,AAqBJ,KAAM,CAAC;MACL,UAAU,EEzGN,OAAO;MF0GX,MAAM,EAAE,KAAK,CAAC,GAAG,CE1Gb,OAAO;MF2GX,KAAK,EEpDH,IAAI;MFqDN,mBAAmB,EAAE,IAAI,GAC1B;;AAKL,AAAA,mBAAmB,CAAC;EAClB,OAAO,EAAE,CAAC,GACX;;AItHD,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,CAAC;EACZ,MAAM,EAAE,IAAI;EACZ,OAAO,EFyDS,IAAI,CADR,IAAI,CAAJ,IAAI,GEnDjB;EATD,AAME,cANY,AAMZ,aAAc,CAAC;IACb,MAAM,EAAE,IAAI,GACb;;AAGH,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,IAAI;EAGZ,cAAc,EAAE,IAA4D;EAC5E,KAAK,EFoDiB,KAAiC,GElCxD;EAhBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP1B,AAAA,IAAI,CAAC;MAQD,KAAK,EFkDiB,KAAiC,GEnC1D;EAZC,MAAM,EAAE,SAAS,EAAE,KAAK;IAX1B,AAAA,IAAI,CAAC;MAYD,KAAK,EF+CkB,KAAiC,GEpC3D;EARC,MAAM,EAAE,SAAS,EAAE,KAAK;IAf1B,AAAA,IAAI,CAAC;MAgBD,KAAK,EF4CiB,KAAiC,GErC1D;EAvBD,AAmBE,IAnBE,CAmBF,OAAO,CAAC;IACN,aAAa,EF8BC,IAAI;IE7BlB,QAAQ,EAAE,QAAQ,GACnB;;AAKC,MAAM,EAAE,SAAS,EAAE,MAAM;EAF7B,AACE,oBADkB,CAClB,IAAI,CAAC;IAED,KAAK,EFiCgB,KAAiC,GE/BzD;;AAGH,AAAA,gBAAgB,CAAC;EACf,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI,GACpB;;AAED,AAAA,cAAc,CAAC;EACb,SAAS,EFgCe,IAAI;EE/B5B,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS,GAO1B;EAVD,AAKE,cALY,CAKZ,IAAI,CAAC;IACH,KAAK,EFhDC,OAAO;IEiDb,IAAI,EFjDE,OAAO;IEkDb,cAAc,EAAE,MAAM,GACvB;;AAGH,AAAA,sBAAsB,CAAC;EAErB,MAAM,EAAE,KAAK,GACd;;;AAED,AAUI,aAVS,CAUT,cAAc;AAVlB,AAWmB,aAXN,CAWT,cAAc,CAAC,QAAQ,AAAA,aAAa;AAXxC,AAYI,aAZS,CAYT,MAAM,CAHc;EACpB,OAAO,EAAE,CAAC,GACX;;;AAXH,AAeI,aAfS,AAaX,GAAI,CAEF,cAAc;AAflB,AAgBmB,aAhBN,AAaX,GAAI,CAGF,cAAc,CAAC,QAAQ,AAAA,aAAa;AAhBxC,AAiBI,aAjBS,AAaX,GAAI,CAIF,MAAM,CAHgB;EACpB,OAAO,EAAE,CAAC,GACX;;AClFL,AAAA,kBAAkB,CAAC;EACjB,WAAW,EAAE,MAAM;EACnB,aAAa,EHwDC,GAAG;EGvDjB,UAAU,EAAE,KAAK,CHyGA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI;EGpBV,KAAK,EHIG,OAAO;EGHf,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,SAAS,EHkGgB,IAAI;EGjG7B,eAAe,EAAE,MAAM;EACvB,aAAa,EAAE,MAAM;EACrB,WAAW,EHgGgB,GAAG,GG1F/B;EAhBD,AAYE,kBAZgB,CAYhB,CAAC,CAAC;IACA,KAAK,EHLC,OAAO;IGMb,eAAe,EAAE,SAAS,GAC3B;;ACfH,AAAA,eAAe,CAAC;EAYd,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC,CAHU,KAAgB;EAMnC,aAAa,EAAI,KAAuD;EACxE,OAAO,EAAE,CAAC,GA0NX;EAvNC,MAAM,EAAE,SAAS,EAAE,KAAK;IApB1B,AJgKE,eIhKa,CAqBX,UAAW,CAAA,IAAI,EJ2IjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,IAAI;MACvB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,IAAI;MACvB,mBAAmB,EAxGT,KAAI,GAyGf;IIrKH,AJyKE,eIzKa,CAyBX,UAAW,CAAA,EAAE,EJgJf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EI/ID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IA/BjD,AJyKE,eIzKa,CAgCX,UAAW,CAAA,IAAI,EJyIjB,aAAa;IIzKf,AJyKE,eIzKa,CAiCX,UAAW,CAAA,EAAE,EJwIf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EIvID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAvCjD,AJyKE,eIzKa,CAwCX,UAAW,CAAA,EAAE,EJiIf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EIlID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IA5CjD,AJyKE,eIzKa,CA6CX,UAAW,CAAA,IAAI,EJ4HjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EI3HD,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IAnDlD,AJyKE,eIzKa,CAoDX,UAAW,CAAA,EAAE,EJqHf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EItHD,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IAxDlD,AJyKE,eIzKa,CAyDX,UAAW,CAAA,IAAI,EJgHjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EI9KH,AA8DE,eA9Da,CA8Db,EAAE,CAAC;IACD,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,CAAC,CAAC,CAAC,CA5Dc,GAAG,GA6D7B;EAjEH,AAoEE,eApEa,CAoEb,eAAe,CAAC;IACd,OAAO,EAAE,CAAC,CA3DO,IAAgB,GAsNlC;IAhOH,AAwEI,eAxEW,CAoEb,eAAe,CAIb,eAAe,CAAC;MACd,QAAQ,EAAE,QAAQ,GAanB;MAtFL,AA2EQ,eA3EO,CAoEb,eAAe,CAIb,eAAe,GAGX,CAAC,CAAC;QACF,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI,GAOd;QArFP,AAiFU,eAjFK,CAoEb,eAAe,CAIb,eAAe,GAGX,CAAC,AAKD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EACxB,KAAK,CAAC;UJkCd,UAAU,EAAE,KAAK,CAPA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI,EAuBK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1ChB,OAAO;UA+Gf,UAAU,EAAE,gBAAgB,GIjCnB;IAnFX,AJ6HE,eI7Ha,CAoEb,eAAe,CJyDf,oBAAoB,CAAC;MACnB,eAAe,EAAE,WAAW;MAC5B,gBAAgB,EAtEZ,IAAI;MAuER,gBAAgB,EAAE,4CAA4C;MAC9D,mBAAmB,EAAE,GAAG;MACxB,MAAM,EA5FO,GAAG,CAAC,KAAK,CAhChB,OAAO;MA6Hb,aAAa,EAAE,IAAI;MACnB,UAAU,EAnCkB,CAAC,CAAC,GAAG,CAxF3B,qBAAO;MA4Hb,MAAM,EAAE,OAAO;MACf,IAAI,EA7HE,qBAAO;MA8Hb,MAAM,EAvCiB,IAAI;MAwC3B,iBAAiB,EAAI,OAA6B;MAClD,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAI,OAA6B;MACpC,SAAS,EAAE,WAAW;MACtB,mBAAmB,EAAE,KAAK;MAC1B,mBAAmB,EAAE,kBAAkB;MACvC,KAAK,EA/CkB,IAAI,GAqD5B;MIrJH,AJ6HE,eI7Ha,CAoEb,eAAe,CJyDf,oBAAoB,AAoBnB,SAAY,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;QAC1B,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,QAAQ,GACpB;IIpJL,AA0FI,eA1FW,CAoEb,eAAe,CAsBb,KAAK,CAAC;MACJ,aAAa,EAzFS,GAAG;MA0FzB,UAAU,EAAE,KAAK,CJgBJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI,EAwBO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO;MIoFX,MAAM,EJ/BA,IAAI;MIgCV,QAAQ,EAAE,QAAQ;MAClB,KAAK,EJjCC,IAAI;MIoCV,WAAW,EAAE,MAAM;MACnB,KAAK,EJ5FD,OAAO;MI6FX,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,GAAG;MAChB,eAAe,EAAE,MAAM;MACvB,cAAc,EAAE,SAAS,GAK1B;MA7GL,AA0FI,eA1FW,CAoEb,eAAe,CAsBb,KAAK,AAgBH,QAAS,CAAC;QACR,OAAO,EAAE,mBAAmB,GAC7B;IA5GP,AA+GI,eA/GW,CAoEb,eAAe,CA2Cb,WAAW,CAAC;MACV,gBAAgB,EJvDd,IAAI;MIwDN,mBAAmB,EAAE,QAAQ;MAC7B,eAAe,EA7GD,KAAK;MA8GnB,aAAa,EAjHS,GAAG;MAkHzB,UAAU,EAAE,KAAK,CJRJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI;MI6FN,MAAM,EAAE,IAAI;MACZ,IAAI,EAAE,CAAC;MACP,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,UAAU,EAAE,UAAU;MACtB,KAAK,EAAE,IAAI,GAKZ;MAhIL,AA+GI,eA/GW,CAoEb,eAAe,CA2Cb,WAAW,AAcT,OAAQ,CAAC;QACP,OAAO,EAAE,CAAC,GACX;IA/HP,AAmII,eAnIW,CAoEb,eAAe,CA+Db,cAAc,CAAC;MACb,gBAAgB,EJjIZ,OAAO;MIkIX,mBAAmB,EAAE,aAAa;MAClC,iBAAiB,EAAE,SAAS;MAC5B,aAAa,EArIS,GAAG;MAsIzB,UAAU,EAAE,KAAK,CJ5BJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI;MIiHN,QAAQ,EAAE,QAAQ,GACnB;IA1IL,AA4II,eA5IW,CAoEb,eAAe,CAwEb,UAAU,CAAC;MACT,eAAe,EAvIF,IAAI;MAwIjB,MAAM,EAAE,IAAI;MACZ,mBAAmB,EAAE,CAAC;MACtB,GAAG,EAAE,CAAC;MACN,KAAK,EAAE,IAAI,GACZ;IAlJL,AAoJI,eApJW,CAoEb,eAAe,CAgFb,aAAa,CAAC;MACZ,eAAe,EA7IC,IAAI;MA8IpB,MAAM,EA7IY,IAAG;MA8IrB,MAAM,EAhJkB,IAAI;MAiJ5B,iBAAiB,EA/IC,IAAG;MAgJrB,KAAK,EAlJmB,IAAI;MAqJ5B,WAAW,EAAE,MAAM;MACnB,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,eAAe,EAAE,MAAM,GAKxB;MApKL,AAoJI,eApJW,CAoEb,eAAe,CAgFb,aAAa,CAaX,AAAA,aAAE,AAAA,CAAc,QAAQ,CAAC;QACvB,OAAO,EAAE,mBAAmB,GAC7B;IAnKP,AAsKI,eAtKW,CAoEb,eAAe,CAkGb,MAAM,CAAC;MACL,IAAI,EAAE,WAAW;MACjB,MAAM,EArKe,IAAI;MAsKzB,WAAW,EAtKU,IAAI;MAuKzB,UAAU,EAAE,MAAM;MAClB,KAAK,EJ7GC,IAAI;MI8GV,QAAQ,EAAE,QAAQ,GAsBnB;MAlML,AA8KM,eA9KS,CAoEb,eAAe,CAkGb,MAAM,CAQJ,KAAK,CAAC;QACJ,IAAI,EJ1KF,OAAO;QI2KT,mBAAmB,EAAE,CAAC;QACtB,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,IAAI,GACV;MAnLP,AAqLM,eArLS,CAoEb,eAAe,CAkGb,MAAM,CAeJ,IAAI,CAAC;QACH,MAAM,EAnLa,IAAI;QAoLvB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,MAAM;QAChB,aAAa,EAAE,QAAQ;QACvB,WAAW,EAAE,MAAM,GACpB;MA3LP,AA8LQ,eA9LO,CAoEb,eAAe,CAkGb,MAAM,AAuBJ,OAAQ,CACN,IAAI,CAAC;QACH,OAAO,EAAE,MAAM,GAChB;IAhMT,AAoMI,eApMW,CAoEb,eAAe,CAgIb,YAAY,CAAC;MACX,gBAAgB,EAAE,+CAAsC,GACzD;IAtML,AAyMM,eAzMS,CAoEb,eAAe,AAoIb,YAAa,CACX,KAAK,CAAC;MACJ,UAAU,EAAE,KAAK,CJ9FN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI,GImLL;IA3MP,AA6MM,eA7MS,CAoEb,eAAe,AAoIb,YAAa,CAKX,WAAW,CAAC;MACV,OAAO,EAAE,IAAI,GACd;IA/MP,AAmNM,eAnNS,CAoEb,eAAe,AA8Ib,QAAS,CACP,KAAK,CAAC;MACJ,UAAU,EJhNR,OAAO;MIiNT,UAAU,EAAE,IAAI,GAKjB;MA1NP,AAuNQ,eAvNO,CAoEb,eAAe,AA8Ib,QAAS,CACP,KAAK,CAIH,CAAC,CAAC;QACA,OAAO,EAAE,IAAI,GACd;IAzNT,AA4NM,eA5NS,CAoEb,eAAe,AA8Ib,QAAS,CAUP,MAAM,CAAC;MACL,UAAU,EAAE,MAAM,GACnB;EA9NP,AAoOM,eApOS,AAkOb,IAAM,CAAA,AAAA,WAAW,EACf,eAAe,AAAA,SAAU,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EAC9C,KAAK,CAAC;IJjHV,UAAU,EAAE,KAAK,CAPA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI,EAuBK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1ChB,OAAO;IA+Gf,UAAU,EAAE,gBAAgB,GIkHvB;EAtOP,AJyJE,eIzJa,AAkOb,IAAM,CAAA,AAAA,WAAW,EACf,eAAe,AAAA,SAAU,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EJ1ElD,oBAAoB,CAAC;IACnB,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ,GACpB;;AIkFH,AAEI,qBAFiB,CACnB,eAAe,CACb,gBAAgB,CAAC;EACf,OAAO,EAAE,IAAI,GACd;;AAOD,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;EAHrD,AJ7EE,oBI6EkB,CAClB,eAAe,CAGX,UAAW,CAAA,EAAE,EJjFjB,aAAa,CAAC;IACZ,iBAAiB,EAAE,GAAG;IACtB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,IAAI,GAC1B;;AIiFC,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;EATrD,AJ7EE,oBI6EkB,CAClB,eAAe,CASX,UAAW,CAAA,IAAI,EJvFnB,aAAa,CAAC;IACZ,iBAAiB,EAAE,GAAG;IACtB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,IAAI,GAC1B;;AIuFC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;EAfzC,AAgBM,oBAhBc,CAClB,eAAe,CAeX,gBAAgB,CAAC;IACf,OAAO,EAAE,IAAI,GACd;;AAKP,AACE,sBADoB,CACpB,oBAAoB,CAAC;EACnB,YAAY,EJxOG,GAAG,CAAC,KAAK,CAlClB,OAAO;EI2Qb,WAAW,EAAE,IAAI;EACjB,iBAAiB,EAAE,IAAI;EACvB,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,MAAM;EACf,cAAc,EAAE,IAAI;EACpB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,UAAU,EAAE,OAAO,CAAC,IAAI,CJtPZ,8BAA8B,GI8Q3C;EAlCH,AACE,sBADoB,CACpB,oBAAoB,AAWlB,IAAM,CAAA,AAAA,GAAG,EAAE;IACT,WAAW,EJnPE,GAAG,CAAC,KAAK,CAlClB,OAAO;IIsRX,YAAY,EAAE,CAAC,GAChB;EAfL,AACE,sBADoB,CACpB,oBAAoB,AAgBlB,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;IAC1B,OAAO,EAAE,CAAC,GACX;EAnBL,AAqBI,sBArBkB,CACpB,oBAAoB,CAoBlB,MAAM,CAAC;IACL,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,KAAK,EJ9RD,OAAO;II+RX,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,CAAC,GAMX;IAjCL,AAqBI,sBArBkB,CACpB,oBAAoB,CAoBlB,MAAM,AAQJ,MAAO,CAAC;MACN,UAAU,EJvSR,OAAO;MIwST,aAAa,EAAE,MAAM,CAAC,GAAG,CJrSvB,OAAO,GIsSV;;AAhCP,AAoCE,sBApCoB,CAoCpB,MAAM,CAAC;EACL,mBAAmB,EAAE,KAAK;EAC1B,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,KAAK;EACV,KAAK,EAAE,iBAAiB;EACxB,UAAU,EJtQK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO,GI8Sd;;AA1CH,AA4CE,sBA5CoB,CA4CpB,4BAA4B,CAAC;EAC3B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,SAAS,GACnB;;AAGH,AACE,UADQ,AAAA,IAAK,CAAA,AAAA,UAAU,CAAC,MAAM,CAC9B,oBAAoB,CAAC;EACnB,OAAO,EAAE,CAAC;EACV,cAAc,EAAE,IAAI,GACrB;;AAGH,AACE,aADW,CACX,aAAa,CAAC;EACZ,MAAM,EAAE,IAAI;EACZ,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,MAAM,GAiEhB;EArEH,AAMI,aANS,CACX,aAAa,CAKX,MAAM,CAAC;IACL,QAAQ,EAAE,QAAQ,GACnB;EARL,AAUS,aAVI,CACX,aAAa,CASX,IAAI,CAAC,KAAK,AAAA,IAAK,CAAA,AAAA,kBAAkB,CAAC,IAAK,CAAA,AAAA,GAAG,EAAE;IAC1C,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,KAAK,GAClB;EAbL,AAeI,aAfS,CACX,aAAa,CAcX,cAAc,CAAC;IACb,aAAa,EAAE,GAAG,GACnB;EAjBL,AAmBI,aAnBS,CACX,aAAa,CAkBX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAAa;IACb,MAAM,EJvSC,KAAK,CAAC,GAAG,CA3Cd,qBAAO;IImVT,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,IAAI,GAKZ;IA9BP,AAmBI,aAnBS,CACX,aAAa,CAkBX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,CAOA,MAAO,CAAC;MACN,MAAM,EJ7SM,KAAK,CAAC,GAAG,CA5CrB,qBAAO,GI0VR;EA7BT,AAkCM,aAlCO,CACX,aAAa,CAgCX,QAAQ,CACN,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAAa;IACb,MAAM,EJpTK,KAAK,CAAC,GAAG,CA3CrB,OAAO;IIgWN,UAAU,EJpTI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA5CxB,sBAAO,GIiWP;EAtCT,AA0CI,aA1CS,CACX,aAAa,CAyCX,cAAc,CAAC;IACb,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EJvWP,OAAO;IIwWV,aAAa,EAAE,GAAG;IAClB,KAAK,EJ3TH,IAAI;II4TN,mBAAmB,EAAE,GAAG;IACxB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,CAAC,GAiBX;IApEL,AA0CI,aA1CS,CACX,aAAa,CAyCX,cAAc,AAYZ,QAAS,CAAC;MACR,UAAU,EJlXT,OAAO;MImXR,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,IAAI;MACZ,mBAAmB,EAAE,IAAI;MACzB,QAAQ,EAAE,QAAQ;MAClB,WAAW,EAAE,MAAM;MACnB,GAAG,EAAE,IAAI;MACT,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,MAAM;MACnB,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,EAAE,GACZ;;AAnEP,AAuEE,aAvEW,CAuEX,QAAQ,CAAC;EACP,eAAe,EAAE,QAAQ,GAM1B;EA9EH,AA0EI,aA1ES,CAuEX,QAAQ,CAGN,MAAM,CAAC;IACL,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,CAAC,GACrB;;AAKL,UAAU,CAAV,UAAU;EACR,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,gBAAgB;EAG7B,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,aAAa;;ACha5B,AACE,cADY,CACZ,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,QAAQ,ELyDE,IAAI;EKxDd,qBAAqB,EAAE,uBAA6B;EACpD,MAAM,EAAE,CAAC,GAiBV;EAfC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP5B,ALyKE,cKzKY,CACZ,aAAa,CLwKb,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EKnKC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAXnD,ALyKE,cKzKY,CACZ,aAAa,CAWT,UAAW,CAAA,EAAE,EL6JjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;EK7JC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IAjBpD,ALyKE,cKzKY,CACZ,aAAa,CAiBT,UAAW,CAAA,EAAE,ELuJjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,IAAI,GAC1B;;AK9KH,AAwBE,cAxBY,CAwBZ,oBAAoB,CAAC;EACnB,MAAM,ELcS,GAAG,CAAC,KAAK,CAlClB,OAAO;EKqBb,aAAa,ELgCD,GAAG;EK/Bf,OAAO,EAAE,IAAI;EACb,MAAM,ELyDI,KAAK;EKxDf,KAAK,EAAE,IAAI,GAyBZ;EAtDH,AA+BI,cA/BU,CAwBZ,oBAAoB,CAOlB,YAAY,CAAC;IACX,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,KAAK,GAoBjB;IArDL,AAmCM,cAnCQ,CAwBZ,oBAAoB,CAOlB,YAAY,CAIV,iBAAiB,CAAC;MAChB,mBAAmB,EAAE,MAAM;MAC3B,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EAAE,SAAS;MAC1B,uBAAuB,EAAE,IAAI;MAC7B,OAAO,EAAE,KAAK;MACd,IAAI,ELhCF,qBAAO;MKiCT,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,MAAM;MACd,KAAK,EAAE,IAAI,GACZ;IA7CP,AA+CM,cA/CQ,CAwBZ,oBAAoB,CAOlB,YAAY,CAgBV,oBAAoB,CAAC;MACnB,KAAK,ELzCH,OAAO;MK0CT,SAAS,EAAE,IAAI;MACf,aAAa,EAAE,CAAC;MAChB,UAAU,EAAE,MAAM,GACnB;;AAQD,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;EAHvD,ALgHE,oBKhHkB,CAClB,cAAc,CACZ,aAAa,CAET,UAAW,CAAA,EAAE,EL4GnB,aAAa,CAAC;IACZ,iBAAiB,EAAE,GAAG;IACtB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,IAAI,GAC1B;;AK5GG,MAAM,EAAE,SAAS,EAAE,MAAM;EAT/B,AAEI,oBAFgB,CAClB,cAAc,CACZ,aAAa,CAAC;IAQV,qBAAqB,EAAE,uBAAmC,GAE7D;;ACrEL,AAAA,MAAM,CAAC;EACL,KAAK,ENMG,OAAO;EMLf,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,UAAU,EN0FO,IAAI,GMpBtB;EApEC,MAAM,EAAE,SAAS,EAAE,KAAK;IAN1B,AAAA,MAAM,CAAC;MAOH,WAAW,EAAE,IAAI,GAmEpB;EA1ED,AAUE,MAVI,CAUJ,EAAE,CAAC;IACD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,GAKX;IAJC,MAAM,EAAE,SAAS,EAAE,KAAK;MAb5B,AAUE,MAVI,CAUJ,EAAE,CAAC;QAIC,OAAO,EAAE,MAAM;QACf,oBAAoB,EAAE,IAAI,GAE7B;EAjBH,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,CAAC;IACJ,OAAO,EAAE,YAAY,GAUtB;IA/BH,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,AAGH,OAAQ,CAAC;MACP,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,GAAG,GACb;IA1BL,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,AAQH,WAAY,AAAA,OAAO,CAAC;MAClB,OAAO,EAAE,IAAI,GACd;EA9BL,AAiCE,MAjCI,CAiCJ,WAAW,CAAC;IACV,KAAK,ENxBC,OAAO,GMyBd;EAnCH,AAqCE,MArCI,CAqCJ,gBAAgB,CAAC;IACf,KAAK,EN5BC,OAAO,GMuDd;IAzBC,MAAM,EAAE,SAAS,EAAE,KAAK;MAxC5B,AAqCE,MArCI,CAqCJ,gBAAgB,CAAC;QAMb,KAAK,EAAE,KAAK,GAsBf;QAjEH,AAqCE,MArCI,CAqCJ,gBAAgB,AAQZ,IAAM,CAAA,AAAA,GAAG,EAAE;UACT,KAAK,EAAE,IAAI,GACZ;IA/CP,AAqCE,MArCI,CAqCJ,gBAAgB,AAad,OAAQ,CAAC;MACP,UAAU,EAAE,oDAA2C,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;MAC/E,OAAO,EAAE,EAAE;MACX,uBAAuB,EAAE,IAAI;MAC7B,OAAO,EAAE,YAAY;MACrB,IAAI,EN7CA,OAAO;MM8CX,MAAM,EAAE,IAAI;MACZ,mBAAmB,EAAE,GAAG;MACxB,cAAc,EAAE,GAAG;MACnB,KAAK,EAAE,IAAI,GACZ;IA5DL,AAqCE,MArCI,CAqCJ,gBAAgB,AAyBd,IAAM,CAAA,AAAA,GAAG,CAAC,OAAO,CAAE;MACjB,SAAS,EAAE,UAAU,GACtB;EAhEL,AAqEE,MArEI,AAqEJ,OAAQ,CAAC;IACP,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK,GACf;;ACzEH,AAAA,eAAe,CAAC;EAad,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,MAAM,EAZU,IAAI;EAgBpB,MAAM,EAAE,GAAG,CAAC,GAAG,CP0CC,IAAI;EOzCpB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAiEZ;EAtFD,AAuBE,eAvBa,CAuBb,KAAK,CAAC;IACJ,MAAM,EAAE,CAAC;IACT,aAAa,EAxBQ,GAAG;IAyBxB,UAAU,EPsBK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO,EOiBkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CPFpC,mBAAI;IOGR,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,CAAC;IACV,kBAAkB,EAzBE,IAAI;IA0BxB,oBAAoB,EA3BU,IAAI;IA4BlC,KAAK,EAAE,IAAI,GACZ;EAjCH,AAmCU,eAnCK,AAmCb,MAAO,CAAC,KAAK,CAAC;IACZ,UAAU,EPYK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO,EO2BkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CPZpC,mBAAI,GOaT;EArCH,AAuCW,eAvCI,AAuCb,OAAQ,CAAC,KAAK;EAvChB,AAwCE,eAxCa,CAwCb,KAAK,AAAA,MAAM,CAAC;IACV,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CVpCW,GAAG,CGJzB,OAAO,GOyCd;EA1CH,AA4CE,eA5Ca,CA4Cb,aAAa,CAAC;IACZ,UAAU,EAvCS,6CAA6C,CAuChC,SAAS,CAlCd,IAAI,CAkCuC,WAA2B;IACjG,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EPtCE,qBAAO;IOuCb,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EA/CyB,IAAI,GAgDnC;EApDH,AAsDE,eAtDa,CAsDb,cAAc,CAAC;IACb,UAAU,EAhDI,wCAAwC,CAgD3B,SAAS,CAAC,MAAM,CAAC,MAAM;IAClD,eAAe,EAAE,SAAS;IAC1B,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC,CPAJ,GAAG,CAAH,GAAG,COAgC,CAAC;IAChD,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EPnDE,qBAAO;IOoDb,MAAM,EAAE,IAAI;IACZ,iBAAiB,EAAE,CAAC;IACpB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EA3De,IAAI,GA0EzB;IA/EH,AAsDE,eAtDa,CAsDb,cAAc,AAYZ,MAAO,EAlEX,AAsDE,eAtDa,CAsDb,cAAc,AAaZ,MAAO,CAAC;MACN,gBAAgB,EP3DZ,qBAAO;MO4DX,MAAM,EAAE,OAAO,GAChB;IAtEL,AAsDE,eAtDa,CAsDb,cAAc,AAkBZ,OAAQ,CAAC;MACP,gBAAgB,EPhEZ,qBAAO,GOiEZ;IA1EL,AAsDE,eAtDa,CAsDb,cAAc,AAsBZ,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EA9EL,AAkFE,eAlFa,CAkFb,6BAA6B,CAAC;IAC5B,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,eAAe,GAC3B;;ACrFH,AAAA,aAAa,CAAC;EACZ,UAAU,EREF,OAAO;EQDf,aAAa,ERmGc,GAAG;EQlG9B,UAAU,ERgGU,CAAC,CAAC,GAAG,CAAC,IAAI,CA3ExB,kBAAI,EA2EgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA3E7C,kBAAI;EQpBV,OAAO,EAAE,KAAK;EACd,SAAS,ER+Fc,IAAI;EQ9F3B,mBAAmB,EAAE,GAAG;EACxB,mBAAmB,EAAE,IAAI;EACzB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,MAA+B;EACpC,OAAO,EAAE,KAAK,GA6Cf;EAvDD,AAYI,aAZS,GAYT,EAAE,CAAC;IACH,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,OAAO,ERuFkB,GAAG,CQvFS,CAAC,GAuCvC;IAtDH,AAiBM,aAjBO,GAYT,EAAE,GAKA,EAAE,CAAC;MACH,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,IAAI,GAkCZ;MArDL,AAiBM,aAjBO,GAYT,EAAE,GAKA,EAAE,AAIF,UAAW,CAAC;QACV,aAAa,EAAE,GAAG,CAAC,KAAK,CRExB,kBAAI;QQDJ,MAAM,ER+Ee,GAAG,CQ/EY,CAAC,GACtC;MAxBP,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,CAAC;QACF,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,ERsEa,GAAG,CAAC,IAAI;QQrE5B,WAAW,EAAE,MAAM,GAkBpB;QApDP,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAUD,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE;UACzB,UAAU,ERnCV,OAAO;UQoCP,KAAK,ERmBP,IAAI,GQNH;UAnDT,AAwCU,aAxCG,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAUD,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAIvB,CAAC,CAAC;YACA,KAAK,ERhCP,OAAO,GQiCN;UA1CX,AA4CU,aA5CG,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAUD,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAQvB,KAAK,CAAC;YACJ,IAAI,ERYR,IAAI,GQXD;UA9CX,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAUD,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,CAYvB,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE;YACzB,KAAK,ERQT,IAAI,GQPD;;AClDX,AAAA,WAAW,CAAC;EAKV,KAAK,ETGG,OAAO;ESFf,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI,GAqLlB;EA5LD,AASE,WATS,CAST,QAAQ,CAAC;IACP,UAAU,ET+CN,IAAI;IS9CR,WAAW,ET4BI,GAAG,CAAC,KAAK,CAlClB,OAAO;ISOb,UAAU,EToCK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO;ISIb,MAAM,EAAE,IAAI;IACZ,iBAAiB,EAAE,CAAC;IACpB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,IAAI,CAAC,wBAAwB;IACzC,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAlBO,KAAK;IAmBjB,OAAO,EAAE,KAAK,GAef;IArCH,AASE,WATS,CAST,QAAQ,AAeN,OAAQ,CAAC;MACP,SAAS,EAAE,gBAAgB,GAK5B;MA9BL,AASE,WATS,CAST,QAAQ,AAeN,OAAQ,AAGN,IAAM,CAAA,AAAA,GAAG,EAAE;QACT,SAAS,EAAE,iBAAiB,GAC7B;IA7BP,AAgCI,WAhCO,CAST,QAAQ,CAuBN,EAAE,CAAC;MACD,SAAS,EAAE,IAAI;MACf,MAAM,EAAE,CAAC;MACT,WAAW,EAjCC,IAAI,GAkCjB;EApCL,AAuCE,WAvCS,CAuCT,EAAE,CAAC;IACD,MAAM,EAAE,CAAC;IACT,aAAa,ETFE,GAAG,CAAC,KAAK,CAlClB,OAAO;ISqCb,MAAM,EAAE,MAAM,GACf;EA3CH,AA6CE,WA7CS,CA6CT,0BAA0B,CAAC;IACzB,cAAc,EAAE,KAAK,GAkEtB;IAhHH,AAgDI,WAhDO,CA6CT,0BAA0B,CAGxB,OAAO,CAAC;MACN,MAAM,EA/CM,IAAI,CA+CO,CAAC,GAuBzB;MAxEL,AAmDM,WAnDK,CA6CT,0BAA0B,CAGxB,OAAO,CAGL,CAAC,CAAC;QACA,MAAM,EAAE,eAAe,GACxB;MArDP,AAuDM,WAvDK,CA6CT,0BAA0B,CAGxB,OAAO,CAOL,KAAK,CAAC;QACJ,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,IAAI,GAOZ;QAjEP,AA4DQ,WA5DG,CA6CT,0BAA0B,CAGxB,OAAO,CAOL,KAAK,CAKH,KAAK,CAAC;UACJ,mBAAmB,EAAE,KAAK;UAC1B,QAAQ,EAAE,QAAQ;UAClB,GAAG,EAAE,CAAC,GACP;MAhET,AAmEQ,WAnEG,CA6CT,0BAA0B,CAGxB,OAAO,GAmBH,KAAK,CAAC;QACN,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI,GAClB;IAvEP,AA0EI,WA1EO,CA6CT,0BAA0B,CA6BxB,QAAQ,CAAC;MACP,UAAU,ETxEN,OAAO;MSyEX,MAAM,ETrCO,GAAG,CAAC,KAAK,CAlClB,OAAO;MSwEX,aAAa,EAAE,GAAG;MAClB,MAAM,EA7EQ,KAAI,CA6EQ,CAAC,CA5Ef,IAAI;MA6EhB,mBAAmB,EAAE,IAAI;MACzB,OAAO,EA/EO,IAAI,GA8GnB;MA/GL,AA0EI,WA1EO,CA6CT,0BAA0B,CA6BxB,QAAQ,AAQN,SAAU,CAAC;QACT,OAAO,EAAE,GAAG,GACb;MApFP,AAsFM,WAtFK,CA6CT,0BAA0B,CA6BxB,QAAQ,CAYN,KAAK,CAAC;QAEJ,qBAAqB,EADD,IAAI;QAExB,qBAAqB,EAAE,KAAK;QAC5B,iBAAiB,EAAE,SAAS;QAC5B,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,IAAI,GAKZ;QArGP,AAsFM,WAtFK,CA6CT,0BAA0B,CA6BxB,QAAQ,CAYN,KAAK,AAYH,IAAM,CAAA,AAAA,GAAG,EAAE;UACT,qBAAqB,EAAE,KAAK,CAZV,IAAI,GAavB;MApGT,AAuGwC,WAvG7B,CA6CT,0BAA0B,CA6BxB,QAAQ,EA6BN,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,QAAQ,IAAI,KAAK;MAvG7C,AAwGkC,WAxGvB,CA6CT,0BAA0B,CA6BxB,QAAQ,EA8BN,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,GAAG,KAAK,CAAC;QAChC,oBAAoB,EAAE,IAAI,GAC3B;MA1GP,AA4GM,WA5GK,CA6CT,0BAA0B,CA6BxB,QAAQ,CAkCN,OAAO,CAAC;QACN,MAAM,EAAE,CAAC,GACV;EA9GP,AAkHE,WAlHS,CAkHT,QAAQ,CAAC;IACP,gBAAgB,EThHV,OAAO;ISiHb,WAAW,ET7EI,GAAG,CAAC,KAAK,CAlClB,OAAO;ISgHb,MAAM,EAAE,CAAC;IACT,iBAAiB,EAAE,CAAC;IACpB,QAAQ,EAAE,KAAK;IACf,KAAK,EArHO,KAAK,GA0HlB;IA7HH,AA0HI,WA1HO,CAkHT,QAAQ,CAQN,MAAM,CAAC;MACL,iBAAiB,EAzHL,IAAI,GA0HjB;EA5HL,AAgIE,WAhIS,EAgIT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,QAAQ;EAhIhC,AAiIE,WAjIS,EAiIT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,CAAC;IACxB,mBAAmB,EAAE,OAAO;IAC5B,QAAQ,EAAE,QAAQ,GACnB;EApIH,AAsImD,WAtIxC,EAsIT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,SAAS,CAAC,IAAK,CAAA,AAAA,QAAQ,IAAI,KAAK;EAtIxD,AAuI6C,WAvIlC,EAuIT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC/C,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,QAAQ,GACnB;EA3IH,AA6IoC,WA7IzB,EA6IT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,QAAQ,IAAI,KAAK,AAAA,QAAQ;EA7IjD,AA8I8B,WA9InB,EA8IT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,GAAG,KAAK,AAAA,QAAQ,CAAC;IACxC,UAAU,ETtFN,IAAI;ISuFR,MAAM,ET1GO,GAAG,CAAC,KAAK,CAhChB,OAAO;IS2Ib,aAAa,ETvFD,GAAG;ISwFf,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI,GACZ;EAxJH,AA2JoC,WA3JzB,EA2JT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,QAAQ,IAAI,KAAK,AAAA,OAAO;EA3JhD,AA4J8B,WA5JnB,EA4JT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,GAAG,KAAK,AAAA,OAAO,CAAC;IACvC,UAAU,EAAE,gDAAgD,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;IACpF,OAAO,EAAE,EAAE;IACX,uBAAuB,EAAE,YAAY;IACrC,IAAI,ET9JE,OAAO;IS+Jb,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI,GACZ;EAvKH,AA0KoC,WA1KzB,EA0KT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,QAAQ,IAAI,KAAK,AAAA,OAAO,CAAC;IAC7C,OAAO,EAAE,CAAC,GACX;EA5KH,AA8K8B,WA9KnB,EA8KT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,GAAG,KAAK,AAAA,OAAO,CAAC;IACvC,OAAO,EAAE,CAAC,GACX;EAhLH,AAmLqC,WAnL1B,EAmLT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,SAAS,IAAI,KAAK,AAAA,MAAM,AAAA,QAAQ,CAAC;IACrD,MAAM,EAAE,GAAG,CAAC,KAAK,CTlLX,OAAO,GSmLd;EArLH,AAwLmD,WAxLxC,EAwLT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,SAAS,CAAC,QAAQ,AAAA,MAAM,GAAG,KAAK,AAAA,QAAQ;EAxLhE,AAyLyD,WAzL9C,EAyLT,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,IAAK,CAAA,AAAA,SAAS,CAAC,IAAK,CAAA,AAAA,QAAQ,CAAC,MAAM,GAAG,KAAK,AAAA,QAAQ,CAAC;IACnE,MAAM,EAAE,GAAG,CAAC,MAAM,CTxLZ,OAAO,GSyLd;;AAGH,AACE,kBADgB,CAChB,MAAM,CAAC;EACL,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,OAAO;EACf,IAAI,ET1LE,qBAAO;ES2Lb,iBAAiB,EAAE,IAAI;EACvB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,IAAI;EACT,OAAO,EAAE,KAAK,GASf;EAnBH,AACE,kBADgB,CAChB,MAAM,AAWJ,MAAO,CAAC;IACN,gBAAgB,ETvMZ,OAAO,GSwMZ;EAdL,AACE,kBADgB,CAChB,MAAM,AAeJ,OAAQ,CAAC;IACP,gBAAgB,ET5MZ,OAAO,GS6MZ;;AChNL,AACE,oBADkB,CAClB,MAAM,CAAC;EACL,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CVsBnB,kBAAI;EUrBR,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK,GACb;;AARH,AAUE,oBAVkB,CAUlB,OAAO,CAAC;EACN,MAAM,EAAE,CAAC,GACV;;AAZH,AAcE,oBAdkB,CAclB,cAAc,CAAC;EACb,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,CAAC,GAMlB;EAvBH,AAmBI,oBAnBgB,CAclB,cAAc,CAKZ,CAAC,CAAC;IACA,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,IAAI,GACpB;;AAtBL,AAyBE,oBAzBkB,CAyBlB,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,MAAM,GAchB;EA3CH,AA+BI,oBA/BgB,CAyBlB,QAAQ,CAMN,MAAM,CAAC;IACL,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,GAAG,GAMX;IA1CL,AA+BI,oBA/BgB,CAyBlB,QAAQ,CAMN,MAAM,AAOJ,KAAM,CAAC;MACL,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,CAAC,GACvB;;AAzCP,AA6CE,oBA7CkB,CA6ClB,KAAK,CAAC;EACJ,iBAAiB,EAAE,IAAI,GACxB;;AAGH,AAAA,cAAc,CAAC;EACb,UAAU,EV/CF,OAAO;EUgDf,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,GAAG;EACZ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK,GACf;;AAED,AAAA,MAAM,CAAC;EACL,UAAU,EVLJ,IAAI;EUMV,MAAM,EVxBW,GAAG,CAAC,KAAK,CAlClB,OAAO;EU2Df,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK,GACf;;ACnED,AAAA,WAAW,CAAC;EAEV,UAAU,EXuDJ,IAAI;EWtDV,aAAa,EXuDC,GAAG;EWtDjB,OAAO,EAAE,YAAY;EACrB,MAAM,EXgFM,KAAK;EW/EjB,iBAAiB,EXsDL,IAAI;EWrDhB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAkKZ;EA1KD,AX6HE,WW7HS,CX6HT,oBAAoB,CAAC;IACnB,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAtEZ,IAAI;IAuER,gBAAgB,EAAE,4CAA4C;IAC9D,mBAAmB,EAAE,GAAG;IACxB,MAAM,EA5FO,GAAG,CAAC,KAAK,CAhChB,OAAO;IA6Hb,aAAa,EAAE,IAAI;IACnB,UAAU,EAnCkB,CAAC,CAAC,GAAG,CAxF3B,qBAAO;IA4Hb,MAAM,EAAE,OAAO;IACf,IAAI,EA7HE,qBAAO;IA8Hb,MAAM,EAvCiB,IAAI;IAwC3B,iBAAiB,EAAI,OAA6B;IAClD,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAI,OAA6B;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,kBAAkB;IACvC,KAAK,EA/CkB,IAAI,GAqD5B;IWrJH,AX6HE,WW7HS,CX6HT,oBAAoB,AAoBnB,SAAY,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;MAC1B,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;EWpJL,AAUE,WAVS,AAUT,YAAa,CAAC;IACZ,UAAU,EAAE,WAAW,GAKxB;IAhBH,AAaI,WAbO,AAUT,YAAa,CAGX,KAAK,CAAC;MACJ,UAAU,EAAE,KAAK,CX8FJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CApFpB,kBAAI,GWTP;EAfL,AAkBE,WAlBS,CAkBT,KAAK,CAAC;IACJ,aAAa,EXuCD,GAAG;IWtCf,UAAU,EX4BK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO;IWYb,MAAM,EAAE,IAAI,GACb;EAtBH,AAwBI,WAxBO,GAwBP,CAAC,CAAC;IACF,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,IAAI,GAWZ;IAzCH,AAiCM,WAjCK,GAwBP,CAAC,AAQD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EACxB,KAAK,CAAC;MXuFV,UAAU,EAzEK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1ChB,OAAO;MAoHf,UAAU,EAAE,gBAAgB,GWtFvB;IAnCP,AAqCM,WArCK,GAwBP,CAAC,AAQD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAKxB,WAAW,CAAC;MACV,KAAK,EXpCH,OAAO,GWqCV;EAvCP,AA2CE,WA3CS,AA2CT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAAE;IX6EtD,UAAU,EAzEK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1ChB,OAAO;IAoHf,UAAU,EAAE,gBAAgB;IW3E1B,OAAO,EAAE,IAAI,GAKd;IAnDH,AXyJE,WWzJS,AA2CT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EX8GpD,oBAAoB,CAAC;MACnB,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;IW5JH,AAgDI,WAhDO,AA2CT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAKlD,WAAW,CAAC;MACV,KAAK,EX/CD,OAAO,GWgDZ;EAlDL,AAqDE,WArDS,CAqDT,yBAAyB,CAAC;IACxB,gBAAgB,EXnDV,OAAO;IWoDb,aAAa,EXGD,GAAG,CAAH,GAAG,CWH8B,CAAC,CAAC,CAAC;IAChD,MAAM,EX8BkB,KAAK;IW7B7B,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,QAAQ,GAuBnB;IAjFH,AAqDE,WArDS,CAqDT,yBAAyB,AAOvB,OAAQ,CAAC;MACP,aAAa,EAAE,GAAG,CAAC,KAAK,CXrCtB,mBAAI;MWsCN,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,EAAE;MACX,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI,GACZ;IAlEL,AAoEI,WApEO,CAqDT,yBAAyB,CAevB,mBAAmB,CAAC;MAClB,mBAAmB,EAAE,MAAM;MAC3B,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EAAE,KAAK;MACtB,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,OAAO,CAAC,EAAE,CXzCZ,8BAA8B;MW0CxC,KAAK,EAAE,IAAI,GAKZ;MAhFL,AAoEI,WApEO,CAqDT,yBAAyB,CAevB,mBAAmB,AASjB,OAAQ,CAAC;QACP,OAAO,EAAE,CAAC,GACX;EA/EP,AAmFE,WAnFS,CAmFT,aAAa,CAAC;IACZ,OAAO,EAAE,cAAc,GAKxB;IAzFH,AAmFE,WAnFS,CAmFT,aAAa,AAGX,SAAU,CAAC;MACT,WAAW,EAAE,IAAI,GAClB;EAxFL,AA2FE,WA3FS,CA2FT,UAAU,CAAC;IACT,UAAU,EAAE,IAA+C;IAC3D,QAAQ,EAAE,MAAM,GA4BjB;IAzHH,AA2FE,WA3FS,CA2FT,UAAU,AAIR,SAAU,CAAC;MACT,UAAU,EAAE,KAAgD,GAC7D;IAjGL,AA2FE,WA3FS,CA2FT,UAAU,AAQR,aAAc,EAnGlB,AA2FE,WA3FS,CA2FT,UAAU,AASR,WAAY,CAAC;MACX,UAAU,EAAE,IAA+C,GAC5D;IAtGL,AA2FE,WA3FS,CA2FT,UAAU,AAaR,SAAU,AAAA,aAAa,EAxG3B,AA2FE,WA3FS,CA2FT,UAAU,AAcR,SAAU,AAAA,WAAW,CAAC;MACpB,UAAU,EAAE,KAAgD,GAC7D;IA3GL,AA2FE,WA3FS,CA2FT,UAAU,AAkBR,aAAc,AAAA,WAAW,CAAC;MACxB,UAAU,EAAE,KAA+C,GAC5D;IA/GL,AA2FE,WA3FS,CA2FT,UAAU,AAsBR,SAAU,AAAA,aAAa,AAAA,WAAW,CAAC;MACjC,UAAU,EAAE,KAAgD,GAC7D;IAnHL,AAqH2B,WArHhB,CA2FT,UAAU,AA0BR,IAAM,CAAA,AAAA,eAAe,EAAE,WAAW,CAAC;MACjC,UAAU,EAAE,IAA0B;MACtC,QAAQ,EAAE,MAAM,GACjB;EAxHL,AA2HE,WA3HS,CA2HT,eAAe,CAAC;IACd,KAAK,EXrHC,OAAO;IWsHb,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,SAAS,GAC1B;EAlIH,AAoIE,WApIS,CAoIT,WAAW,CAAC;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EX9CS,IAAI;IW+CxB,MAAM,EAAE,CAAC,CAAC,CAAC,CXhDK,GAAG;IWiDnB,SAAS,EAAE,UAAU,GACtB;EAzIH,AA2IE,WA3IS,CA2IT,iBAAiB,CAAC;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EXrDS,IAAI;IWsDxB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,UAAU,GACtB;EAjJH,AAmJE,WAnJS,CAmJT,aAAa,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,KAAK,EX9IC,OAAO;IW+Ib,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,CAAC,GACT;EA5JH,AA8JE,WA9JS,CA8JT,kBAAkB,CAAC;IACjB,IAAI,EXtJE,qBAAO;IWuJb,iBAAiB,EAAE,GAAG,GACvB;EAjKH,AAmKE,WAnKS,CAmKT,mBAAmB,CAAC;IAClB,SAAS,EAAE,CAAC;IACZ,WAAW,EXrGH,IAAI;IWsGZ,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM,GACpB;;AAKC,MAAM,EAAE,SAAS,EAAE,MAAM;EAF7B,AACE,oBADkB,CAClB,WAAW,CAAC;IAER,MAAM,EXpFQ,KAAK,GW8FtB;IAbH,AAKM,oBALc,CAClB,WAAW,CAIP,yBAAyB,CAAC;MACxB,MAAM,EXtFoB,KAAK,GWuFhC;IAPP,AASM,oBATc,CAClB,WAAW,CAQP,UAAU,CAAC;MACT,UAAU,EAAE,KAA+C,GAC5D;;ACvLP,AAAA,2BAA2B,CAAC;EAC1B,KAAK,EZOG,OAAO;EYNf,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,aAAa,EZyDG,IAAI;EYxDpB,UAAU,EAAE,MAAM,GA0BnB;EAxBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP1B,AAAA,2BAA2B,CAAC;MAQxB,OAAO,EAAE,IAAI;MACb,eAAe,EAAE,aAAa;MAC9B,UAAU,EAAE,IAAI,GAqBnB;EA/BD,AAaE,2BAbyB,CAazB,CAAC,CAAC;IACA,MAAM,EAAE,CAAC,GAMV;IALC,MAAM,EAAE,SAAS,EAAE,KAAK;MAf5B,AAaE,2BAbyB,CAazB,CAAC,CAAC;QAGE,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,aAAa,GAEjC;EApBH,AAsBE,2BAtByB,CAsBzB,KAAK,CAAC;IACJ,OAAO,EAAE,IAAI,GAOd;IANC,MAAM,EAAE,SAAS,EAAE,KAAK;MAxB5B,AAsBE,2BAtByB,CAsBzB,KAAK,CAAC;QAGF,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,KAAK;QACd,IAAI,EZlBA,qBAAO;QYmBX,iBAAiB,EAAE,GAAG,GAEzB;;AAGH,AAAA,yBAAyB,CAAC;EACxB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,MAAM,GAelB;EAbC,MAAM,EAAE,SAAS,EAAE,KAAK;IAL1B,AAAA,yBAAyB,CAAC;MAMtB,OAAO,EAAE,IAAI;MACb,eAAe,EAAE,aAAa;MAC9B,OAAO,EAAE,CAAC,GAUb;EAlBD,AAWE,yBAXuB,CAWvB,MAAM,CAAC;IACL,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC;IACT,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAE,MAAM,GAChB;;AClDH,AAGI,oBAHgB,CAClB,cAAc,CAEZ,aAAa,CAAC;EACZ,MAAM,EAAE,OAAO;EACf,cAAc,EAAE,GAAG;EACnB,WAAW,EAAE,MAAM,GACpB;;AAPL,AASI,oBATgB,CAClB,cAAc,CAQZ,oBAAoB;AATxB,AAUI,oBAVgB,CAClB,cAAc,CASZ,uBAAuB,CAAC;EACtB,mBAAmB,EAAE,GAAG;EACxB,UAAU,EAAE,IAAI,GACjB;;AAbL,AAgBE,oBAhBkB,CAgBlB,gBAAgB,CAAC;EAEf,QAAQ,EAAE,QAAQ,GA+InB;EAjKH,AAoBI,oBApBgB,CAgBlB,gBAAgB,CAId,oBAAoB,CAAC;IACnB,iBAAiB,EAAE,CAAC;IACpB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC,GACP;EAxBL,AA0BI,oBA1BgB,CAgBlB,gBAAgB,CAUd,iBAAiB,CAAC;IAChB,gBAAgB,EAAE,sDAA6C;IAC/D,mBAAmB,EAAE,MAAM;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,eAAe,EAAE,SAAS;IAC1B,uBAAuB,EAAE,IAAI;IAC7B,OAAO,EAAE,YAAY;IACrB,IAAI,EbxBA,qBAAO;IayBX,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,OAAO,CAAC,IAAI,CbJd,8BAA8B;IaKxC,KAAK,EAAE,IAAI,GAsBZ;IA5DL,AA0BI,oBA1BgB,CAgBlB,gBAAgB,CAUd,iBAAiB,CAcf,AAAA,aAAE,CAAc,MAAM,AAApB,EAAsB;MACtB,gBAAgB,EbhCd,qBAAO;MaiCT,aAAa,EAAE,GAAG;MAClB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CblCnB,qBAAO;MamCT,IAAI,EbnCF,qBAAO,Ga0CV;MAnDP,AA8CU,oBA9CU,CAgBlB,gBAAgB,CAUd,iBAAiB,CAcf,AAAA,aAAE,CAAc,MAAM,AAApB,IAME,YAAY,CAAC;QACb,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CbfnC,8BAA8B;QagBpC,UAAU,EAAE,OAAO,GACpB;IAlDT,AAqDsC,oBArDlB,CAgBlB,gBAAgB,CAUd,iBAAiB,AA2Bf,IAAM,EAAA,AAAA,AAAA,aAAC,CAAc,MAAM,AAApB,KAAyB,YAAY,CAAC;MAC3C,cAAc,EAAE,IAAI,GACrB;IAvDP,AA0BI,oBA1BgB,CAgBlB,gBAAgB,CAUd,iBAAiB,AA+Bf,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;MAC1B,OAAO,EAAE,CAAC,GACX;EA3DP,AA8DyB,oBA9DL,CAgBlB,gBAAgB,CA8Cd,oBAAoB,CAAC,YAAY,CAAC;IAChC,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,Cb/B/B,8BAA8B;IagCxC,UAAU,EAAE,MAAM,GAgCnB;IAjGL,AA8DyB,oBA9DL,CAgBlB,gBAAgB,CA8Cd,oBAAoB,CAAC,YAAY,AAK/B,OAAQ,EAnEd,AA8DyB,oBA9DL,CAgBlB,gBAAgB,CA8Cd,oBAAoB,CAAC,YAAY,AAM/B,QAAS,CAAC;MACR,OAAO,EAAE,EAAE;MACX,iBAAiB,EAAE,CAAC;MACpB,QAAQ,EAAE,QAAQ,GACnB;IAxEP,AA8DyB,oBA9DL,CAgBlB,gBAAgB,CA8Cd,oBAAoB,CAAC,YAAY,AAY/B,QAAS,CAAC;MAER,gBAAgB,EAAE,yDAAyD;MAC3E,mBAAmB,EAAE,KAAK,ChB1EF,GAAG,CgB0E+B,MAAM;MAChE,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EhB3EI,IAAI,CAFH,IAAI;MgB8ExB,uBAAuB,EAAE,YAAY;MACrC,IAAI,EbxBJ,IAAI;MayBJ,MAAM,EAPU,IAAI;MAQpB,MAAM,Eb9EJ,OAAO;Ma+ET,GAAG,EATa,KAAI;MAUpB,KAAK,EAAE,IAAI,GACZ;IAtFP,AA8DyB,oBA9DL,CAgBlB,gBAAgB,CA8Cd,oBAAoB,CAAC,YAAY,AA0B/B,IAAM,CAAA,AAAA,GAAG,CAAC,QAAQ,CAAC;MACjB,qBAAqB,EhBtFG,GAAG,GgBuF5B;IA1FP,AA8DyB,oBA9DL,CAgBlB,gBAAgB,CA8Cd,oBAAoB,CAAC,YAAY,AA8B/B,OAAQ,CAAC;MACP,MAAM,EhB3Fc,IAAI;MgB4FxB,mBAAmB,EAAE,CAAC;MACtB,GAAG,EhB7FiB,KAAI,GgB8FzB;EAhGP,AAmGI,oBAnGgB,CAgBlB,gBAAgB,CAmFd,YAAY,CAAC;IACX,UAAU,Eb3CR,IAAI;Ia4CN,MAAM,Eb9DO,GAAG,CAAC,KAAK,CAlClB,OAAO;IaiGX,aAAa,Eb5CH,GAAG;Ia6Cb,UAAU,EbvDG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAvCpB,qBAAO;Ia+FX,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,CAAC;IACpB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,IAAI,GACd;EAlHL,AAoHI,oBApHgB,CAgBlB,gBAAgB,CAoGd,mBAAmB,CAAC;IAClB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG,GACjB;EAvHL,AAyHI,oBAzHgB,CAgBlB,gBAAgB,CAyGd,iBAAiB,CAAC;IAChB,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,IAAI,GACjB;EA5HL,AA8HI,oBA9HgB,CAgBlB,gBAAgB,CA8Gd,iBAAiB,CAAC;IAChB,KAAK,Eb7HD,OAAO;Ia8HX,WAAW,EAAE,GAAG,GACjB;EAjIL,AAmII,oBAnIgB,CAgBlB,gBAAgB,CAmHd,mBAAmB,CAAC;IAClB,UAAU,EAAE,IAAI,GA4BjB;IAhKL,AAsIM,oBAtIc,CAgBlB,gBAAgB,CAmHd,mBAAmB,CAGjB,MAAM,CAAC;MACL,UAAU,EAAE,CAAC;MACb,MAAM,EAAE,CAAC;MACT,KAAK,EbvIH,OAAO;MawIT,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC,GAmBX;MA/JP,AAsIM,oBAtIc,CAgBlB,gBAAgB,CAmHd,mBAAmB,CAGjB,MAAM,AAQJ,OAAQ,CAAC;QACP,gBAAgB,EAAE,oDAA2C;QAC7D,iBAAiB,EAAE,SAAS;QAC5B,OAAO,EAAE,EAAE;QACX,uBAAuB,EAAE,IAAI;QAC7B,OAAO,EAAE,YAAY;QACrB,IAAI,EblJJ,OAAO;QamJP,MAAM,EAAE,IAAI;QACZ,mBAAmB,EAAE,GAAG;QACxB,UAAU,EAAE,GAAG;QACf,cAAc,EAAE,MAAM;QACtB,KAAK,EAAE,IAAI,GACZ;MA1JT,AAsIM,oBAtIc,CAgBlB,gBAAgB,CAmHd,mBAAmB,CAGjB,MAAM,AAsBJ,IAAM,CAAA,AAAA,GAAG,CAAC,OAAO,CAAE;QACjB,SAAS,EAAE,UAAU,GACtB;;AA9JT,AAmKE,oBAnKkB,CAmKlB,mBAAmB,CAAC;EAClB,KAAK,Eb5JC,OAAO;Ea6Jb,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,IAAI;EACnB,QAAQ,EAAE,QAAQ,GA0CnB;EAjNH,AAyKI,oBAzKgB,CAmKlB,mBAAmB,CAMjB,wBAAwB,CAAC;IACvB,OAAO,EAAE,YAAY,GAatB;IAXC,MAAM,EAAE,SAAS,EAAE,KAAK;MA5K9B,AAyKI,oBAzKgB,CAmKlB,mBAAmB,CAMjB,wBAAwB,CAAC;QAIrB,KAAK,EbzFA,KAA6B,GamGrC;IAPC,MAAM,EAAE,SAAS,EAAE,KAAK;MAhL9B,AAyKI,oBAzKgB,CAmKlB,mBAAmB,CAMjB,wBAAwB,CAAC;QAQrB,KAAK,EAAE,KAAK,GAMf;IAHC,MAAM,EAAE,SAAS,EAAE,KAAK;MApL9B,AAyKI,oBAzKgB,CAmKlB,mBAAmB,CAMjB,wBAAwB,CAAC;QAYrB,KAAK,EAAE,KAAK,GAEf;EAvLL,AAyLI,oBAzLgB,CAmKlB,mBAAmB,CAsBjB,CAAC,CAAC;IACA,KAAK,EbhLD,OAAO;IaiLX,YAAY,EAAE,GAAG,GAClB;EA5LL,AA8LI,oBA9LgB,CAmKlB,mBAAmB,CA2BjB,MAAM,CAAC;IACL,UAAU,Eb5LN,OAAO;Ia6LX,MAAM,EAAE,GAAG,CAAC,KAAK,Cb1Lb,OAAO;Ia2LX,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,GAAG;IACf,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,CAAC,GAUrB;IAhNL,AA8LI,oBA9LgB,CAmKlB,mBAAmB,CA2BjB,MAAM,AAUJ,MAAO,AAAA,IAAK,CAAA,AAAA,QAAQ,EAAE;MACpB,UAAU,Eb1JD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1ChB,OAAO;MaqMT,UAAU,EAAE,gBAAgB,GAC7B;IAED,MAAM,EAAE,SAAS,EAAE,KAAK;MA7M9B,AA8LI,oBA9LgB,CAmKlB,mBAAmB,CA2BjB,MAAM,CAAC;QAgBH,QAAQ,EAAE,QAAQ,GAErB;;AAhNL,AAmNE,oBAnNkB,CAmNlB,sBAAsB,CAAC;EACrB,MAAM,Eb/HI,KAAK,GagIhB;;AArNH,AAuNE,oBAvNkB,CAuNlB,aAAa,CAAC;EAGZ,MAAM,EAAE,CAAC,CADY,IAAG;EAExB,OAAO,EAAE,CAAC,CAFW,GAAG,GAQzB;EAjOH,AAuNE,oBAvNkB,CAuNlB,aAAa,AAMX,UAAW,CAAC;IACV,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,IAAI,GACrB;;AAhOL,AAqOM,oBArOc,AAmOlB,kBAAmB,CACjB,cAAc,CACZ,oBAAoB;AArO1B,AAsOM,oBAtOc,AAmOlB,kBAAmB,CACjB,cAAc,CAEZ,uBAAuB,CAAC;EACtB,UAAU,EAAE,SAAS,CAAC,IAAI,CbtMlB,8BAA8B,GauMvC;;AAxOP,AA2OI,oBA3OgB,AAmOlB,kBAAmB,CAQjB,aAAa,CAAC;EACZ,UAAU,EAAE,UAAU,CAAC,IAAI,Cb3MjB,8BAA8B,Ga4MzC;;AA7OL,AAiPI,oBAjPgB,AAgPlB,UAAW,CACT,aAAa,CAAC;EACZ,UAAU,EAAE,CAAC;EACb,QAAQ,EAAE,MAAM,GACjB;;AApPL,AAsPI,oBAtPgB,AAgPlB,UAAW,CAMT,oBAAoB,CAAC;EACnB,cAAc,EAAE,IAAI,GACrB;;AAxPL,AA4PI,oBA5PgB,AA2PlB,IAAM,CAAA,AAAA,UAAU,CAAC,MAAM,CACrB,iBAAiB,CAAC;EAChB,OAAO,EAAE,CAAC,GACX" -} \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-mac.css b/browser/extensions/activity-stream/css/activity-stream-mac.css index d7946a33b5dd..2a070e19a9f3 100644 --- a/browser/extensions/activity-stream/css/activity-stream-mac.css +++ b/browser/extensions/activity-stream/css/activity-stream-mac.css @@ -210,23 +210,19 @@ main { margin: auto; padding-bottom: 48px; width: 224px; } - @media (min-width: 432px) { + @media (min-width: 416px) { main { width: 352px; } } - @media (min-width: 560px) { + @media (min-width: 544px) { main { width: 480px; } } - @media (min-width: 816px) { + @media (min-width: 800px) { main { width: 736px; } } main section { margin-bottom: 40px; position: relative; } -@media (min-width: 1072px) { - .wide-layout-enabled main { - width: 992px; } } - .section-top-bar { height: 16px; margin-bottom: 16px; } @@ -240,9 +236,6 @@ main { fill: #737373; vertical-align: middle; } -.base-content-fallback { - height: 100vh; } - .body-wrapper .section-title, .body-wrapper .sections-list .section:last-of-type, @@ -255,27 +248,12 @@ main { .body-wrapper.on .topic { opacity: 1; } -.as-error-fallback { - align-items: center; - border-radius: 3px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); - color: #4A4A4F; - display: flex; - flex-direction: column; - font-size: 12px; - justify-content: center; - justify-items: center; - line-height: 1.5; } - .as-error-fallback a { - color: #4A4A4F; - text-decoration: underline; } - .top-sites-list { list-style: none; margin: 0 -16px; margin-bottom: -18px; padding: 0; } - @media (max-width: 432px) { + @media (max-width: 416px) { .top-sites-list :nth-child(2n+1) .context-menu { margin-inline-end: auto; margin-inline-start: auto; @@ -286,32 +264,32 @@ main { margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 432px) and (max-width: 560px) { + @media (min-width: 416px) and (max-width: 544px) { .top-sites-list :nth-child(3n+2) .context-menu, .top-sites-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 816px) { + @media (min-width: 544px) and (max-width: 800px) { .top-sites-list :nth-child(4n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 784px) { + @media (min-width: 544px) and (max-width: 768px) { .top-sites-list :nth-child(4n+3) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1264px) { + @media (min-width: 800px) and (max-width: 1248px) { .top-sites-list :nth-child(6n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1040px) { + @media (min-width: 800px) and (max-width: 1024px) { .top-sites-list :nth-child(6n+5) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -434,13 +412,6 @@ main { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .top-sites-list .top-site-outer.placeholder .screenshot { display: none; } - .top-sites-list .top-site-outer.dragged .tile { - background: #EDEDF0; - box-shadow: none; } - .top-sites-list .top-site-outer.dragged .tile * { - display: none; } - .top-sites-list .top-site-outer.dragged .title { - visibility: hidden; } .top-sites-list:not(.dnd-active) .top-site-outer:-moz-any(.active, :focus, :hover) .tile { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -448,27 +419,6 @@ main { opacity: 1; transform: scale(1); } -.wide-layout-disabled .top-sites-list .hide-for-narrow { - display: none; } - -@media (min-width: 1072px) and (max-width: 1520px) { - .wide-layout-enabled .top-sites-list :nth-child(8n) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media (min-width: 1072px) and (max-width: 1296px) { - .wide-layout-enabled .top-sites-list :nth-child(8n+7) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media not all and (min-width: 1072px) { - .wide-layout-enabled .top-sites-list .hide-for-narrow { - display: none; } } - .edit-topsites-wrapper .add-topsites-button { border-right: 1px solid #D7D7DB; line-height: 13px; @@ -575,19 +525,19 @@ main { grid-gap: 32px; grid-template-columns: repeat(auto-fit, 224px); margin: 0; } - @media (max-width: 560px) { + @media (max-width: 544px) { .sections-list .section-list .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 816px) { + @media (min-width: 544px) and (max-width: 800px) { .sections-list .section-list :nth-child(2n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1264px) { + @media (min-width: 800px) and (max-width: 1248px) { .sections-list .section-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -619,29 +569,18 @@ main { margin-bottom: 0; text-align: center; } -@media (min-width: 1072px) and (max-width: 1520px) { - .wide-layout-enabled .sections-list .section-list :nth-child(3n) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media (min-width: 1072px) { - .wide-layout-enabled .sections-list .section-list { - grid-template-columns: repeat(auto-fit, 309px); } } - .topic { color: #737373; font-size: 12px; line-height: 1.6; margin-top: 12px; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic { line-height: 16px; } } .topic ul { margin: 0; padding: 0; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic ul { display: inline; padding-inline-start: 12px; } } @@ -656,7 +595,7 @@ main { color: #008EA4; } .topic .topic-read-more { color: #008EA4; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic .topic-read-more { float: right; } .topic .topic-read-more:dir(rtl) { @@ -971,7 +910,7 @@ main { height: 266px; margin-inline-end: 32px; position: relative; - width: 100%; } + width: 224px; } .card-outer .context-menu-button { background-clip: padding-box; background-color: #FFF; @@ -1008,7 +947,7 @@ main { height: 100%; outline: none; position: absolute; - width: 100%; } + width: 224px; } .card-outer > a:-moz-any(.active, :focus) .card { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -1102,35 +1041,27 @@ main { text-overflow: ellipsis; white-space: nowrap; } -@media (min-width: 1072px) { - .wide-layout-enabled .card-outer { - height: 370px; } - .wide-layout-enabled .card-outer .card-preview-image-outer { - height: 155px; } - .wide-layout-enabled .card-outer .card-text { - max-height: 135px; } } - .manual-migration-container { color: #4A4A4F; font-size: 13px; line-height: 15px; margin-bottom: 40px; text-align: center; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container { display: flex; justify-content: space-between; text-align: left; } } .manual-migration-container p { margin: 0; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container p { align-self: center; display: flex; justify-content: space-between; } } .manual-migration-container .icon { display: none; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container .icon { align-self: center; display: block; @@ -1141,7 +1072,7 @@ main { border: 0; display: block; flex-wrap: nowrap; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-actions { display: flex; justify-content: space-between; @@ -1275,13 +1206,13 @@ main { position: relative; } .collapsible-section .section-disclaimer .section-disclaimer-text { display: inline-block; } - @media (min-width: 432px) { + @media (min-width: 416px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 224px; } } - @media (min-width: 560px) { + @media (min-width: 544px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 340px; } } - @media (min-width: 816px) { + @media (min-width: 800px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 610px; } } .collapsible-section .section-disclaimer a { @@ -1299,13 +1230,10 @@ main { .collapsible-section .section-disclaimer button:hover:not(.dismiss) { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } - @media (min-width: 432px) { + @media (min-width: 416px) { .collapsible-section .section-disclaimer button { position: absolute; } } -.collapsible-section .section-body-fallback { - height: 266px; } - .collapsible-section .section-body { margin: 0 -7px; padding: 0 7px; } @@ -1329,5 +1257,3 @@ main { .collapsible-section:not(.collapsed):hover .info-option-icon { opacity: 1; } - -/*# sourceMappingURL=activity-stream-mac.css.map */ \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-mac.css.map b/browser/extensions/activity-stream/css/activity-stream-mac.css.map deleted file mode 100644 index bde924efc37a..000000000000 --- a/browser/extensions/activity-stream/css/activity-stream-mac.css.map +++ /dev/null @@ -1,44 +0,0 @@ -{ - "version": 3, - "file": "activity-stream-mac.css", - "sources": [ - "../content-src/styles/activity-stream-mac.scss", - "../content-src/styles/_activity-stream.scss", - "../content-src/styles/_normalize.scss", - "../content-src/styles/_variables.scss", - "../content-src/styles/_icons.scss", - "../content-src/components/Base/_Base.scss", - "../content-src/components/ErrorBoundary/_ErrorBoundary.scss", - "../content-src/components/TopSites/_TopSites.scss", - "../content-src/components/Sections/_Sections.scss", - "../content-src/components/Topics/_Topics.scss", - "../content-src/components/Search/_Search.scss", - "../content-src/components/ContextMenu/_ContextMenu.scss", - "../content-src/components/PreferencesPane/_PreferencesPane.scss", - "../content-src/components/ConfirmDialog/_ConfirmDialog.scss", - "../content-src/components/Card/_Card.scss", - "../content-src/components/ManualMigration/_ManualMigration.scss", - "../content-src/components/CollapsibleSection/_CollapsibleSection.scss" - ], - "sourcesContent": [ - "/* This is the mac variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 7px;\n$os-infopanel-arrow-width: 18px;\n$os-search-focus-shadow-radius: 3px;\n\n@import './activity-stream';\n", - "@import './normalize';\n@import './variables';\n@import './icons';\n\nhtml,\nbody,\n#root { // sass-lint:disable-line no-ids\n height: 100%;\n}\n\nbody {\n background: $background-primary;\n color: $text-primary;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n overflow-y: scroll;\n}\n\nh1,\nh2 {\n font-weight: normal;\n}\n\na {\n color: $link-primary;\n text-decoration: none;\n\n &:hover {\n color: $link-secondary;\n }\n}\n\n// For screen readers\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.inner-border {\n border: $border-secondary;\n border-radius: $border-radius;\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.show-on-init {\n opacity: 0;\n transition: opacity 0.2s ease-in;\n\n &.on {\n animation: fadeIn 0.2s;\n opacity: 1;\n }\n}\n\n.actions {\n border-top: $border-secondary;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin: 0;\n padding: 15px 25px 0;\n\n button {\n background-color: $input-secondary;\n border: $border-primary;\n border-radius: 4px;\n color: inherit;\n cursor: pointer;\n margin-bottom: 15px;\n padding: 10px 30px;\n white-space: nowrap;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n &.dismiss {\n border: 0;\n padding: 0;\n text-decoration: underline;\n }\n\n &.done {\n background: $input-primary;\n border: solid 1px $blue-60;\n color: $white;\n margin-inline-start: auto;\n }\n }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/PreferencesPane/PreferencesPane';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n", - "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n border: 0;\n}\n\nbody {\n margin: 0;\n}\n\nbutton,\ninput {\n font-family: inherit;\n font-size: inherit;\n}\n\n[hidden] {\n display: none !important; // sass-lint:disable-line no-important\n}\n", - "// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n// Aliases and derived styles based on Photon colors for common usage\n$background-primary: $grey-10;\n$background-secondary: $grey-20;\n$border-primary: 1px solid $grey-40;\n$border-secondary: 1px solid $grey-30;\n$fill-primary: $grey-90-80;\n$fill-secondary: $grey-90-60;\n$fill-tertiary: $grey-30;\n$input-primary: $blue-60;\n$input-secondary: $grey-10;\n$link-primary: $blue-60;\n$link-secondary: $teal-70;\n$shadow-primary: 0 0 0 5px $grey-30;\n$shadow-secondary: 0 1px 4px 0 $grey-90-10;\n$text-primary: $grey-90;\n$text-conditional: $grey-60;\n$text-secondary: $grey-50;\n$input-border: solid 1px $grey-90-20;\n$input-border-active: solid 1px $grey-90-40;\n$input-error-border: solid 1px $red-60;\n$input-error-boxshadow: 0 0 0 2px rgba($red-60, 0.35);\n\n$white: #FFF;\n$border-radius: 3px;\n\n$base-gutter: 32px;\n$section-spacing: 40px;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-border-color: $black-20;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $context-menu-border-color;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$inner-box-shadow: 0 0 0 1px $black-10;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n@mixin fade-in {\n box-shadow: inset $inner-box-shadow, $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n .context-menu-button {\n background-clip: padding-box;\n background-color: $white;\n background-image: url('chrome://browser/skin/page-action.svg');\n background-position: 55%;\n border: $border-primary;\n border-radius: 100%;\n box-shadow: $context-menu-button-boxshadow;\n cursor: pointer;\n fill: $fill-primary;\n height: $context-menu-button-size;\n offset-inline-end: -($context-menu-button-size / 2);\n opacity: 0;\n position: absolute;\n top: -($context-menu-button-size / 2);\n transform: scale(0.25);\n transition-duration: 200ms;\n transition-property: transform, opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n@mixin context-menu-button-hover {\n .context-menu-button {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@mixin context-menu-open-middle {\n .context-menu {\n margin-inline-end: auto;\n margin-inline-start: auto;\n offset-inline-end: auto;\n offset-inline-start: -$base-gutter;\n }\n}\n\n@mixin context-menu-open-left {\n .context-menu {\n margin-inline-end: 5px;\n margin-inline-start: auto;\n offset-inline-end: 0;\n offset-inline-start: auto;\n }\n}\n\n@mixin flip-icon {\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n}\n", - ".icon {\n background-position: center center;\n background-repeat: no-repeat;\n background-size: $icon-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-primary;\n height: $icon-size;\n vertical-align: middle;\n width: $icon-size;\n\n &.icon-spacer {\n margin-inline-end: 8px;\n }\n\n &.icon-small-spacer {\n margin-inline-end: 6px;\n }\n\n &.icon-bookmark-added {\n background-image: url('chrome://browser/skin/bookmark.svg');\n }\n\n &.icon-bookmark-hollow {\n background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n }\n\n &.icon-delete {\n background-image: url('#{$image-path}glyph-delete-16.svg');\n }\n\n &.icon-modal-delete {\n background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n background-size: $larger-icon-size;\n height: $larger-icon-size;\n width: $larger-icon-size;\n }\n\n &.icon-dismiss {\n background-image: url('#{$image-path}glyph-dismiss-16.svg');\n }\n\n &.icon-info {\n background-image: url('#{$image-path}glyph-info-16.svg');\n }\n\n &.icon-import {\n background-image: url('#{$image-path}glyph-import-16.svg');\n }\n\n &.icon-new-window {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-newWindow-16.svg');\n }\n\n &.icon-new-window-private {\n background-image: url('chrome://browser/skin/privateBrowsing.svg');\n }\n\n &.icon-settings {\n background-image: url('chrome://browser/skin/settings.svg');\n }\n\n &.icon-pin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-16.svg');\n }\n\n &.icon-unpin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-unpin-16.svg');\n }\n\n &.icon-edit {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.icon-pocket {\n background-image: url('#{$image-path}glyph-pocket-16.svg');\n }\n\n &.icon-historyItem { // sass-lint:disable-line class-name-format\n background-image: url('#{$image-path}glyph-historyItem-16.svg');\n }\n\n &.icon-trending {\n background-image: url('#{$image-path}glyph-trending-16.svg');\n transform: translateY(2px); // trending bolt is visually top heavy\n }\n\n &.icon-now {\n background-image: url('chrome://browser/skin/history.svg');\n }\n\n &.icon-topsites {\n background-image: url('#{$image-path}glyph-topsites-16.svg');\n }\n\n &.icon-pin-small {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-check {\n background-image: url('chrome://browser/skin/check.svg');\n }\n\n &.icon-webextension {\n background-image: url('#{$image-path}glyph-webextension-16.svg');\n }\n\n &.icon-highlights {\n background-image: url('#{$image-path}glyph-highlights-16.svg');\n }\n\n &.icon-arrowhead-down {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-arrowhead-forward {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n transform: rotate(-90deg);\n width: $smaller-icon-size;\n\n &:dir(rtl) {\n transform: rotate(90deg);\n }\n }\n}\n", - ".outer-wrapper {\n display: flex;\n flex-grow: 1;\n height: 100%;\n padding: $section-spacing $base-gutter $base-gutter;\n\n &.fixed-to-top {\n height: auto;\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets / onboarding are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-small) {\n width: $wrapper-max-width-small;\n }\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n}\n\n.wide-layout-enabled {\n main {\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n }\n}\n\n.section-top-bar {\n height: 16px;\n margin-bottom: 16px;\n}\n\n.section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n text-transform: uppercase;\n\n span {\n color: $text-secondary;\n fill: $text-secondary;\n vertical-align: middle;\n }\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topic\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n", - ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: $text-conditional;\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: $text-conditional;\n text-decoration: underline;\n }\n}\n\n", - ".top-sites-list {\n $top-sites-size: $grid-unit;\n $top-sites-border-radius: 6px;\n $top-sites-title-height: 30px;\n $top-sites-vertical-space: 8px;\n $screenshot-size: cover;\n $rich-icon-size: 96px;\n $default-icon-wrapper-size: 42px;\n $default-icon-size: 32px;\n $default-icon-offset: 6px;\n $half-base-gutter: $base-gutter / 2;\n\n list-style: none;\n margin: 0 (-$half-base-gutter);\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: -($top-sites-vertical-space + $top-sites-title-height / 3);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-small) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Three columns\n @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n :nth-child(3n+2),\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n li {\n display: inline-block;\n margin: 0 0 $top-sites-vertical-space;\n }\n\n // container for drop zone\n .top-site-outer {\n padding: 0 $half-base-gutter;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, $shadow-secondary;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: $text-secondary;\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: $background-primary;\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n position: absolute;\n }\n\n .rich-icon {\n background-size: $rich-icon-size;\n height: 100%;\n offset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon { // sass-lint:disable block property-sort-order\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n offset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .title {\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: $fill-tertiary;\n offset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n * {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// Always hide .hide-for-narrow if wide layout is disabled\n.wide-layout-disabled {\n .top-sites-list {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n\n.wide-layout-enabled {\n .top-sites-list {\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n }\n}\n\n.edit-topsites-wrapper {\n .add-topsites-button {\n border-right: $border-secondary;\n line-height: 13px;\n offset-inline-end: 24px;\n opacity: 0;\n padding: 0 10px;\n pointer-events: none;\n position: absolute;\n top: 2px;\n transition: opacity 0.2s $photon-easing;\n\n &:dir(rtl) {\n border-left: $border-secondary;\n border-right: 0;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n\n button {\n background: none;\n border: 0;\n color: $text-secondary;\n cursor: pointer;\n font-size: 12px;\n padding: 0;\n\n &:focus {\n background: $background-secondary;\n border-bottom: dotted 1px $text-secondary;\n }\n }\n }\n\n .modal {\n offset-inline-start: -31px;\n position: absolute;\n top: -29px;\n width: calc(100% + 62px);\n box-shadow: $shadow-secondary;\n }\n\n .edit-topsites-inner-wrapper {\n margin: 0;\n padding: 15px 30px;\n }\n}\n\n.top-sites:not(.collapsed):hover {\n .add-topsites-button {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.topsite-form {\n .form-wrapper {\n margin: auto;\n max-width: 350px;\n padding: 15px 0;\n\n .field {\n position: relative;\n }\n\n .url input:not(:placeholder-shown):dir(rtl) {\n direction: ltr;\n text-align: right;\n }\n\n .section-title {\n margin-bottom: 5px;\n }\n\n input {\n &[type='text'] {\n border: $input-border;\n border-radius: 2px;\n margin: 5px 0;\n padding: 7px;\n width: 100%;\n\n &:focus {\n border: $input-border-active;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n offset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n offset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", - ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: $fill-secondary;\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: $text-secondary;\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n }\n}\n\n.wide-layout-enabled {\n .sections-list {\n .section-list {\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", - ".topic {\n color: $text-secondary;\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n\n .topic-link {\n color: $link-secondary;\n }\n\n .topic-read-more {\n color: $link-secondary;\n\n @media (min-width: $break-point-large) {\n // This is floating to accomodate a very large number of topics and/or\n // very long topic names due to l10n.\n float: right;\n\n &:dir(rtl) {\n float: left;\n }\n }\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-secondary;\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n\n // This is a clearfix to for the topics-read-more link which is floating and causes\n // some jank when we set overflow:hidden for the animation.\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n}\n", - ".search-wrapper {\n $search-border-radius: 3px;\n $search-focus-color: $blue-50;\n $search-height: 35px;\n $search-input-left-label-width: 35px;\n $search-button-width: 36px;\n $search-glyph-image: url('chrome://browser/skin/search-glass.svg');\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n $search-glyph-size: 16px;\n $search-glyph-fill: $grey-90-40;\n // This is positioned so it is visually (not metrically) centered. r=abenson\n $search-glyph-left-position: 12px;\n\n cursor: default;\n display: flex;\n height: $search-height;\n // The extra 1px is to account for the box-shadow being outside of the element\n // instead of inside. It needs to be like that to not overlap the inner background\n // color of the hover state of the submit button.\n margin: 1px 1px $section-spacing;\n position: relative;\n width: 100%;\n\n input {\n border: 0;\n border-radius: $search-border-radius;\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n color: inherit;\n font-size: 15px;\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-input-left-label-width;\n width: 100%;\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n &:active input,\n input:focus {\n box-shadow: 0 0 0 $os-search-focus-shadow-radius $search-focus-color;\n }\n\n .search-label {\n background: $search-glyph-image no-repeat $search-glyph-left-position center / $search-glyph-size;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-start: 0;\n position: absolute;\n width: $search-input-left-label-width;\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable { // sass-lint:disable-line class-name-format\n border: 0;\n transform: translateY(2px);\n }\n}\n", - ".context-menu {\n background: $background-primary;\n border-radius: $context-menu-border-radius;\n box-shadow: $context-menu-shadow;\n display: block;\n font-size: $context-menu-font-size;\n margin-inline-start: 5px;\n offset-inline-start: 100%;\n position: absolute;\n top: ($context-menu-button-size / 4);\n z-index: 10000;\n\n > ul {\n list-style: none;\n margin: 0;\n padding: $context-menu-outer-padding 0;\n\n > li {\n margin: 0;\n width: 100%;\n\n &.separator {\n border-bottom: 1px solid $context-menu-border-color;\n margin: $context-menu-outer-padding 0;\n }\n\n > a {\n align-items: center;\n color: inherit;\n cursor: pointer;\n display: flex;\n line-height: 16px;\n outline: none;\n padding: $context-menu-item-padding;\n white-space: nowrap;\n\n &:-moz-any(:focus, :hover) {\n background: $input-primary;\n color: $white;\n\n a {\n color: $grey-90;\n }\n\n .icon {\n fill: $white;\n }\n\n &:-moz-any(:focus, :hover) {\n color: $white;\n }\n }\n }\n }\n }\n}\n", - ".prefs-pane {\n $options-spacing: 10px;\n $prefs-spacing: 20px;\n $prefs-width: 400px;\n\n color: $text-conditional;\n font-size: 14px;\n line-height: 21px;\n\n .sidebar {\n background: $white;\n border-left: $border-secondary;\n box-shadow: $shadow-secondary;\n height: 100%;\n offset-inline-end: 0;\n overflow-y: auto;\n padding: 40px;\n position: fixed;\n top: 0;\n transition: 0.1s cubic-bezier(0, 0, 0, 1);\n transition-property: transform;\n width: $prefs-width;\n z-index: 12000;\n\n &.hidden {\n transform: translateX(100%);\n\n &:dir(rtl) {\n transform: translateX(-100%);\n }\n }\n\n h1 {\n font-size: 21px;\n margin: 0;\n padding-top: $prefs-spacing;\n }\n }\n\n hr {\n border: 0;\n border-bottom: $border-secondary;\n margin: 20px 0;\n }\n\n .prefs-modal-inner-wrapper {\n padding-bottom: 100px;\n\n section {\n margin: $prefs-spacing 0;\n\n p {\n margin: 5px 0 20px 30px;\n }\n\n label {\n display: inline-block;\n position: relative;\n width: 100%;\n\n input {\n offset-inline-start: -30px;\n position: absolute;\n top: 0;\n }\n }\n\n > label {\n font-size: 16px;\n font-weight: bold;\n line-height: 19px;\n }\n }\n\n .options {\n background: $background-primary;\n border: $border-secondary;\n border-radius: 2px;\n margin: -$options-spacing 0 $prefs-spacing;\n margin-inline-start: 30px;\n padding: $options-spacing;\n\n &.disabled {\n opacity: 0.5;\n }\n\n label {\n $icon-offset-start: 35px;\n background-position-x: $icon-offset-start;\n background-position-y: 2.5px;\n background-repeat: no-repeat;\n display: inline-block;\n font-size: 14px;\n font-weight: normal;\n height: auto;\n line-height: 21px;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $icon-offset-start;\n }\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n padding-inline-start: 63px;\n }\n\n section {\n margin: 0;\n }\n }\n }\n\n .actions {\n background-color: $background-primary;\n border-left: $border-secondary;\n bottom: 0;\n offset-inline-end: 0;\n position: fixed;\n width: $prefs-width;\n\n button {\n margin-inline-end: $prefs-spacing;\n }\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n offset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:disabled):not(:checked) + label,\n [type='checkbox']:not(:disabled):checked + label {\n cursor: pointer;\n padding: 0 30px;\n position: relative;\n }\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: $white;\n border: $border-primary;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n top: 0;\n width: 21px;\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/in-content/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n -moz-context-properties: fill, stroke;\n fill: $input-primary;\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n stroke: none;\n top: 0;\n width: 21px;\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // hover\n [type='checkbox']:not(:disabled) + label:hover::before {\n border: 1px solid $input-primary;\n }\n\n // accessibility\n [type='checkbox']:not(:disabled):checked:focus + label::before,\n [type='checkbox']:not(:disabled):not(:checked):focus + label::before {\n border: 1px dotted $input-primary;\n }\n}\n\n.prefs-pane-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: $fill-secondary;\n offset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 12001;\n\n &:hover {\n background-color: $background-secondary;\n }\n\n &:active {\n background-color: $background-primary;\n }\n }\n}\n", - ".confirmation-dialog {\n .modal {\n box-shadow: 0 2px 2px 0 $black-10;\n left: 50%;\n margin-left: -200px;\n position: fixed;\n top: 20%;\n width: 400px;\n }\n\n section {\n margin: 0;\n }\n\n .modal-message {\n display: flex;\n padding: 16px;\n padding-bottom: 0;\n\n p {\n margin: 0;\n margin-bottom: 16px;\n }\n }\n\n .actions {\n border: 0;\n display: flex;\n flex-wrap: nowrap;\n padding: 0 16px;\n\n button {\n margin-inline-end: 16px;\n padding-inline-end: 18px;\n padding-inline-start: 18px;\n white-space: normal;\n width: 50%;\n\n &.done {\n margin-inline-end: 0;\n margin-inline-start: 0;\n }\n }\n }\n\n .icon {\n margin-inline-end: 16px;\n }\n}\n\n.modal-overlay {\n background: $background-secondary;\n height: 100%;\n left: 0;\n opacity: 0.8;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 11001;\n}\n\n.modal {\n background: $white;\n border: $border-secondary;\n border-radius: 5px;\n font-size: 15px;\n z-index: 11002;\n}\n", - ".card-outer {\n @include context-menu-button;\n background: $white;\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: $link-primary;\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: $link-primary;\n }\n }\n\n .card-preview-image-outer {\n background-color: $background-primary;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n &::after {\n border-bottom: 1px solid $black-5;\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n\n &.no-image {\n padding-top: 16px;\n }\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-image {\n max-height: 10 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name,\n &.no-image.no-context {\n max-height: 11 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name.no-context {\n max-height: 12 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: $text-secondary;\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase;\n }\n\n .card-title {\n font-size: 14px;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: $text-secondary;\n display: flex;\n font-size: 11px;\n left: 0;\n padding: 12px 16px 12px 14px;\n position: absolute;\n right: 0;\n }\n\n .card-context-icon {\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: $icon-size;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.wide-layout-enabled {\n .card-outer {\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-text {\n max-height: 7 * $card-text-line-height + $card-title-margin;\n }\n }\n }\n}\n", - ".manual-migration-container {\n color: $text-conditional;\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", - ".collapsible-section {\n .section-title {\n\n .click-target {\n cursor: pointer;\n vertical-align: top;\n white-space: nowrap;\n }\n\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n $info-active-color: $grey-90-10;\n position: relative;\n\n .section-info-option {\n offset-inline-end: 0;\n position: absolute;\n top: 0;\n }\n\n .info-option-icon {\n background-image: url('#{$image-path}glyph-info-option-12.svg');\n background-position: center;\n background-repeat: no-repeat;\n background-size: 12px 12px;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-secondary;\n height: 16px;\n margin-bottom: -2px; // Specific styling for the particuar icon. r=abenson\n opacity: 0;\n transition: opacity 0.2s $photon-easing;\n width: 16px;\n\n &[aria-expanded='true'] {\n background-color: $info-active-color;\n border-radius: 1px; // The shadow below makes this the desired larger radius\n box-shadow: 0 0 0 5px $info-active-color;\n fill: $fill-primary;\n\n + .info-option {\n opacity: 1;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: visible;\n }\n }\n\n &:not([aria-expanded='true']) + .info-option {\n pointer-events: none;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n }\n\n .section-info-option .info-option {\n opacity: 0;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: hidden;\n\n &::after,\n &::before {\n content: '';\n offset-inline-end: 0;\n position: absolute;\n }\n\n &::before {\n $before-height: 32px;\n background-image: url('chrome://global/skin/arrow/panelarrow-vertical.svg');\n background-position: right $os-infopanel-arrow-offset-end bottom;\n background-repeat: no-repeat;\n background-size: $os-infopanel-arrow-width $os-infopanel-arrow-height;\n -moz-context-properties: fill, stroke;\n fill: $white;\n height: $before-height;\n stroke: $grey-30;\n top: -$before-height;\n width: 43px;\n }\n\n &:dir(rtl)::before {\n background-position-x: $os-infopanel-arrow-offset-end;\n }\n\n &::after {\n height: $os-infopanel-arrow-height;\n offset-inline-start: 0;\n top: -$os-infopanel-arrow-height;\n }\n }\n\n .info-option {\n background: $white;\n border: $border-secondary;\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n font-size: 13px;\n line-height: 120%;\n margin-inline-end: -9px;\n offset-inline-end: 0;\n padding: 24px;\n position: absolute;\n top: 26px;\n -moz-user-select: none;\n width: 320px;\n z-index: 9999;\n }\n\n .info-option-header {\n font-size: 15px;\n font-weight: 600;\n }\n\n .info-option-body {\n margin: 0;\n margin-top: 12px;\n }\n\n .info-option-link {\n color: $link-primary;\n margin-left: 7px;\n }\n\n .info-option-manage {\n margin-top: 24px;\n\n button {\n background: 0;\n border: 0;\n color: $link-primary;\n cursor: pointer;\n margin: 0;\n padding: 0;\n\n &::after {\n background-image: url('#{$image-path}topic-show-more-12.svg');\n background-repeat: no-repeat;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-primary;\n height: 16px;\n margin-inline-start: 5px;\n margin-top: 1px;\n vertical-align: middle;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n }\n }\n\n .section-disclaimer {\n color: $grey-60;\n font-size: 13px;\n margin-bottom: 16px;\n position: relative;\n\n .section-disclaimer-text {\n display: inline-block;\n\n @media (min-width: $break-point-small) {\n width: $card-width;\n }\n\n @media (min-width: $break-point-medium) {\n width: 340px;\n }\n\n @media (min-width: $break-point-large) {\n width: 610px;\n }\n }\n\n a {\n color: $link-secondary;\n padding-left: 3px;\n }\n\n button {\n background: $grey-10;\n border: 1px solid $grey-40;\n border-radius: 4px;\n cursor: pointer;\n margin-top: 2px;\n max-width: 130px;\n min-height: 26px;\n offset-inline-end: 0;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n @media (min-width: $break-point-small) {\n position: absolute;\n }\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n\n .section-info-option {\n pointer-events: none;\n }\n }\n\n &:not(.collapsed):hover {\n .info-option-icon {\n opacity: 1;\n }\n }\n}\n" - ], - "names": [], - "mappings": "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" -} \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-windows.css b/browser/extensions/activity-stream/css/activity-stream-windows.css index 4cd87763f434..b720aade1a85 100644 --- a/browser/extensions/activity-stream/css/activity-stream-windows.css +++ b/browser/extensions/activity-stream/css/activity-stream-windows.css @@ -210,23 +210,19 @@ main { margin: auto; padding-bottom: 48px; width: 224px; } - @media (min-width: 432px) { + @media (min-width: 416px) { main { width: 352px; } } - @media (min-width: 560px) { + @media (min-width: 544px) { main { width: 480px; } } - @media (min-width: 816px) { + @media (min-width: 800px) { main { width: 736px; } } main section { margin-bottom: 40px; position: relative; } -@media (min-width: 1072px) { - .wide-layout-enabled main { - width: 992px; } } - .section-top-bar { height: 16px; margin-bottom: 16px; } @@ -240,9 +236,6 @@ main { fill: #737373; vertical-align: middle; } -.base-content-fallback { - height: 100vh; } - .body-wrapper .section-title, .body-wrapper .sections-list .section:last-of-type, @@ -255,27 +248,12 @@ main { .body-wrapper.on .topic { opacity: 1; } -.as-error-fallback { - align-items: center; - border-radius: 3px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); - color: #4A4A4F; - display: flex; - flex-direction: column; - font-size: 12px; - justify-content: center; - justify-items: center; - line-height: 1.5; } - .as-error-fallback a { - color: #4A4A4F; - text-decoration: underline; } - .top-sites-list { list-style: none; margin: 0 -16px; margin-bottom: -18px; padding: 0; } - @media (max-width: 432px) { + @media (max-width: 416px) { .top-sites-list :nth-child(2n+1) .context-menu { margin-inline-end: auto; margin-inline-start: auto; @@ -286,32 +264,32 @@ main { margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 432px) and (max-width: 560px) { + @media (min-width: 416px) and (max-width: 544px) { .top-sites-list :nth-child(3n+2) .context-menu, .top-sites-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 816px) { + @media (min-width: 544px) and (max-width: 800px) { .top-sites-list :nth-child(4n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 784px) { + @media (min-width: 544px) and (max-width: 768px) { .top-sites-list :nth-child(4n+3) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1264px) { + @media (min-width: 800px) and (max-width: 1248px) { .top-sites-list :nth-child(6n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1040px) { + @media (min-width: 800px) and (max-width: 1024px) { .top-sites-list :nth-child(6n+5) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -434,13 +412,6 @@ main { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); } .top-sites-list .top-site-outer.placeholder .screenshot { display: none; } - .top-sites-list .top-site-outer.dragged .tile { - background: #EDEDF0; - box-shadow: none; } - .top-sites-list .top-site-outer.dragged .tile * { - display: none; } - .top-sites-list .top-site-outer.dragged .title { - visibility: hidden; } .top-sites-list:not(.dnd-active) .top-site-outer:-moz-any(.active, :focus, :hover) .tile { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -448,27 +419,6 @@ main { opacity: 1; transform: scale(1); } -.wide-layout-disabled .top-sites-list .hide-for-narrow { - display: none; } - -@media (min-width: 1072px) and (max-width: 1520px) { - .wide-layout-enabled .top-sites-list :nth-child(8n) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media (min-width: 1072px) and (max-width: 1296px) { - .wide-layout-enabled .top-sites-list :nth-child(8n+7) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media not all and (min-width: 1072px) { - .wide-layout-enabled .top-sites-list .hide-for-narrow { - display: none; } } - .edit-topsites-wrapper .add-topsites-button { border-right: 1px solid #D7D7DB; line-height: 13px; @@ -575,19 +525,19 @@ main { grid-gap: 32px; grid-template-columns: repeat(auto-fit, 224px); margin: 0; } - @media (max-width: 560px) { + @media (max-width: 544px) { .sections-list .section-list .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 560px) and (max-width: 816px) { + @media (min-width: 544px) and (max-width: 800px) { .sections-list .section-list :nth-child(2n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; offset-inline-end: 0; offset-inline-start: auto; } } - @media (min-width: 816px) and (max-width: 1264px) { + @media (min-width: 800px) and (max-width: 1248px) { .sections-list .section-list :nth-child(3n) .context-menu { margin-inline-end: 5px; margin-inline-start: auto; @@ -619,29 +569,18 @@ main { margin-bottom: 0; text-align: center; } -@media (min-width: 1072px) and (max-width: 1520px) { - .wide-layout-enabled .sections-list .section-list :nth-child(3n) .context-menu { - margin-inline-end: 5px; - margin-inline-start: auto; - offset-inline-end: 0; - offset-inline-start: auto; } } - -@media (min-width: 1072px) { - .wide-layout-enabled .sections-list .section-list { - grid-template-columns: repeat(auto-fit, 309px); } } - .topic { color: #737373; font-size: 12px; line-height: 1.6; margin-top: 12px; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic { line-height: 16px; } } .topic ul { margin: 0; padding: 0; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic ul { display: inline; padding-inline-start: 12px; } } @@ -656,7 +595,7 @@ main { color: #008EA4; } .topic .topic-read-more { color: #008EA4; } - @media (min-width: 816px) { + @media (min-width: 800px) { .topic .topic-read-more { float: right; } .topic .topic-read-more:dir(rtl) { @@ -971,7 +910,7 @@ main { height: 266px; margin-inline-end: 32px; position: relative; - width: 100%; } + width: 224px; } .card-outer .context-menu-button { background-clip: padding-box; background-color: #FFF; @@ -1008,7 +947,7 @@ main { height: 100%; outline: none; position: absolute; - width: 100%; } + width: 224px; } .card-outer > a:-moz-any(.active, :focus) .card { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } @@ -1102,35 +1041,27 @@ main { text-overflow: ellipsis; white-space: nowrap; } -@media (min-width: 1072px) { - .wide-layout-enabled .card-outer { - height: 370px; } - .wide-layout-enabled .card-outer .card-preview-image-outer { - height: 155px; } - .wide-layout-enabled .card-outer .card-text { - max-height: 135px; } } - .manual-migration-container { color: #4A4A4F; font-size: 13px; line-height: 15px; margin-bottom: 40px; text-align: center; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container { display: flex; justify-content: space-between; text-align: left; } } .manual-migration-container p { margin: 0; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container p { align-self: center; display: flex; justify-content: space-between; } } .manual-migration-container .icon { display: none; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-container .icon { align-self: center; display: block; @@ -1141,7 +1072,7 @@ main { border: 0; display: block; flex-wrap: nowrap; } - @media (min-width: 560px) { + @media (min-width: 544px) { .manual-migration-actions { display: flex; justify-content: space-between; @@ -1275,13 +1206,13 @@ main { position: relative; } .collapsible-section .section-disclaimer .section-disclaimer-text { display: inline-block; } - @media (min-width: 432px) { + @media (min-width: 416px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 224px; } } - @media (min-width: 560px) { + @media (min-width: 544px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 340px; } } - @media (min-width: 816px) { + @media (min-width: 800px) { .collapsible-section .section-disclaimer .section-disclaimer-text { width: 610px; } } .collapsible-section .section-disclaimer a { @@ -1299,13 +1230,10 @@ main { .collapsible-section .section-disclaimer button:hover:not(.dismiss) { box-shadow: 0 0 0 5px #D7D7DB; transition: box-shadow 150ms; } - @media (min-width: 432px) { + @media (min-width: 416px) { .collapsible-section .section-disclaimer button { position: absolute; } } -.collapsible-section .section-body-fallback { - height: 266px; } - .collapsible-section .section-body { margin: 0 -7px; padding: 0 7px; } @@ -1329,5 +1257,3 @@ main { .collapsible-section:not(.collapsed):hover .info-option-icon { opacity: 1; } - -/*# sourceMappingURL=activity-stream-windows.css.map */ \ No newline at end of file diff --git a/browser/extensions/activity-stream/css/activity-stream-windows.css.map b/browser/extensions/activity-stream/css/activity-stream-windows.css.map deleted file mode 100644 index 763d24af9723..000000000000 --- a/browser/extensions/activity-stream/css/activity-stream-windows.css.map +++ /dev/null @@ -1,44 +0,0 @@ -{ - "version": 3, - "file": "activity-stream-windows.css", - "sources": [ - "../content-src/styles/activity-stream-windows.scss", - "../content-src/styles/_activity-stream.scss", - "../content-src/styles/_normalize.scss", - "../content-src/styles/_variables.scss", - "../content-src/styles/_icons.scss", - "../content-src/components/Base/_Base.scss", - "../content-src/components/ErrorBoundary/_ErrorBoundary.scss", - "../content-src/components/TopSites/_TopSites.scss", - "../content-src/components/Sections/_Sections.scss", - "../content-src/components/Topics/_Topics.scss", - "../content-src/components/Search/_Search.scss", - "../content-src/components/ContextMenu/_ContextMenu.scss", - "../content-src/components/PreferencesPane/_PreferencesPane.scss", - "../content-src/components/ConfirmDialog/_ConfirmDialog.scss", - "../content-src/components/Card/_Card.scss", - "../content-src/components/ManualMigration/_ManualMigration.scss", - "../content-src/components/CollapsibleSection/_CollapsibleSection.scss" - ], - "sourcesContent": [ - "/* This is the windows variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 6px;\n$os-infopanel-arrow-width: 20px;\n$os-search-focus-shadow-radius: 1px;\n\n@import './activity-stream';\n", - "@import './normalize';\n@import './variables';\n@import './icons';\n\nhtml,\nbody,\n#root { // sass-lint:disable-line no-ids\n height: 100%;\n}\n\nbody {\n background: $background-primary;\n color: $text-primary;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n overflow-y: scroll;\n}\n\nh1,\nh2 {\n font-weight: normal;\n}\n\na {\n color: $link-primary;\n text-decoration: none;\n\n &:hover {\n color: $link-secondary;\n }\n}\n\n// For screen readers\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.inner-border {\n border: $border-secondary;\n border-radius: $border-radius;\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 100;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.show-on-init {\n opacity: 0;\n transition: opacity 0.2s ease-in;\n\n &.on {\n animation: fadeIn 0.2s;\n opacity: 1;\n }\n}\n\n.actions {\n border-top: $border-secondary;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin: 0;\n padding: 15px 25px 0;\n\n button {\n background-color: $input-secondary;\n border: $border-primary;\n border-radius: 4px;\n color: inherit;\n cursor: pointer;\n margin-bottom: 15px;\n padding: 10px 30px;\n white-space: nowrap;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n &.dismiss {\n border: 0;\n padding: 0;\n text-decoration: underline;\n }\n\n &.done {\n background: $input-primary;\n border: solid 1px $blue-60;\n color: $white;\n margin-inline-start: auto;\n }\n }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/PreferencesPane/PreferencesPane';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n", - "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n border: 0;\n}\n\nbody {\n margin: 0;\n}\n\nbutton,\ninput {\n font-family: inherit;\n font-size: inherit;\n}\n\n[hidden] {\n display: none !important; // sass-lint:disable-line no-important\n}\n", - "// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n// Aliases and derived styles based on Photon colors for common usage\n$background-primary: $grey-10;\n$background-secondary: $grey-20;\n$border-primary: 1px solid $grey-40;\n$border-secondary: 1px solid $grey-30;\n$fill-primary: $grey-90-80;\n$fill-secondary: $grey-90-60;\n$fill-tertiary: $grey-30;\n$input-primary: $blue-60;\n$input-secondary: $grey-10;\n$link-primary: $blue-60;\n$link-secondary: $teal-70;\n$shadow-primary: 0 0 0 5px $grey-30;\n$shadow-secondary: 0 1px 4px 0 $grey-90-10;\n$text-primary: $grey-90;\n$text-conditional: $grey-60;\n$text-secondary: $grey-50;\n$input-border: solid 1px $grey-90-20;\n$input-border-active: solid 1px $grey-90-40;\n$input-error-border: solid 1px $red-60;\n$input-error-boxshadow: 0 0 0 2px rgba($red-60, 0.35);\n\n$white: #FFF;\n$border-radius: 3px;\n\n$base-gutter: 32px;\n$section-spacing: 40px;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-border-color: $black-20;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $context-menu-border-color;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$inner-box-shadow: 0 0 0 1px $black-10;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n@mixin fade-in {\n box-shadow: inset $inner-box-shadow, $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n .context-menu-button {\n background-clip: padding-box;\n background-color: $white;\n background-image: url('chrome://browser/skin/page-action.svg');\n background-position: 55%;\n border: $border-primary;\n border-radius: 100%;\n box-shadow: $context-menu-button-boxshadow;\n cursor: pointer;\n fill: $fill-primary;\n height: $context-menu-button-size;\n offset-inline-end: -($context-menu-button-size / 2);\n opacity: 0;\n position: absolute;\n top: -($context-menu-button-size / 2);\n transform: scale(0.25);\n transition-duration: 200ms;\n transition-property: transform, opacity;\n width: $context-menu-button-size;\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n@mixin context-menu-button-hover {\n .context-menu-button {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@mixin context-menu-open-middle {\n .context-menu {\n margin-inline-end: auto;\n margin-inline-start: auto;\n offset-inline-end: auto;\n offset-inline-start: -$base-gutter;\n }\n}\n\n@mixin context-menu-open-left {\n .context-menu {\n margin-inline-end: 5px;\n margin-inline-start: auto;\n offset-inline-end: 0;\n offset-inline-start: auto;\n }\n}\n\n@mixin flip-icon {\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n}\n", - ".icon {\n background-position: center center;\n background-repeat: no-repeat;\n background-size: $icon-size;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-primary;\n height: $icon-size;\n vertical-align: middle;\n width: $icon-size;\n\n &.icon-spacer {\n margin-inline-end: 8px;\n }\n\n &.icon-small-spacer {\n margin-inline-end: 6px;\n }\n\n &.icon-bookmark-added {\n background-image: url('chrome://browser/skin/bookmark.svg');\n }\n\n &.icon-bookmark-hollow {\n background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n }\n\n &.icon-delete {\n background-image: url('#{$image-path}glyph-delete-16.svg');\n }\n\n &.icon-modal-delete {\n background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n background-size: $larger-icon-size;\n height: $larger-icon-size;\n width: $larger-icon-size;\n }\n\n &.icon-dismiss {\n background-image: url('#{$image-path}glyph-dismiss-16.svg');\n }\n\n &.icon-info {\n background-image: url('#{$image-path}glyph-info-16.svg');\n }\n\n &.icon-import {\n background-image: url('#{$image-path}glyph-import-16.svg');\n }\n\n &.icon-new-window {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-newWindow-16.svg');\n }\n\n &.icon-new-window-private {\n background-image: url('chrome://browser/skin/privateBrowsing.svg');\n }\n\n &.icon-settings {\n background-image: url('chrome://browser/skin/settings.svg');\n }\n\n &.icon-pin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-16.svg');\n }\n\n &.icon-unpin {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-unpin-16.svg');\n }\n\n &.icon-edit {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.icon-pocket {\n background-image: url('#{$image-path}glyph-pocket-16.svg');\n }\n\n &.icon-historyItem { // sass-lint:disable-line class-name-format\n background-image: url('#{$image-path}glyph-historyItem-16.svg');\n }\n\n &.icon-trending {\n background-image: url('#{$image-path}glyph-trending-16.svg');\n transform: translateY(2px); // trending bolt is visually top heavy\n }\n\n &.icon-now {\n background-image: url('chrome://browser/skin/history.svg');\n }\n\n &.icon-topsites {\n background-image: url('#{$image-path}glyph-topsites-16.svg');\n }\n\n &.icon-pin-small {\n @include flip-icon;\n background-image: url('#{$image-path}glyph-pin-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-check {\n background-image: url('chrome://browser/skin/check.svg');\n }\n\n &.icon-webextension {\n background-image: url('#{$image-path}glyph-webextension-16.svg');\n }\n\n &.icon-highlights {\n background-image: url('#{$image-path}glyph-highlights-16.svg');\n }\n\n &.icon-arrowhead-down {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n width: $smaller-icon-size;\n }\n\n &.icon-arrowhead-forward {\n background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n background-size: $smaller-icon-size;\n height: $smaller-icon-size;\n transform: rotate(-90deg);\n width: $smaller-icon-size;\n\n &:dir(rtl) {\n transform: rotate(90deg);\n }\n }\n}\n", - ".outer-wrapper {\n display: flex;\n flex-grow: 1;\n height: 100%;\n padding: $section-spacing $base-gutter $base-gutter;\n\n &.fixed-to-top {\n height: auto;\n }\n}\n\nmain {\n margin: auto;\n // Offset the snippets container so things at the bottom of the page are still\n // visible when snippets / onboarding are visible. Adjust for other spacing.\n padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n width: $wrapper-default-width;\n\n @media (min-width: $break-point-small) {\n width: $wrapper-max-width-small;\n }\n\n @media (min-width: $break-point-medium) {\n width: $wrapper-max-width-medium;\n }\n\n @media (min-width: $break-point-large) {\n width: $wrapper-max-width-large;\n }\n\n section {\n margin-bottom: $section-spacing;\n position: relative;\n }\n}\n\n.wide-layout-enabled {\n main {\n @media (min-width: $break-point-widest) {\n width: $wrapper-max-width-widest;\n }\n }\n}\n\n.section-top-bar {\n height: 16px;\n margin-bottom: 16px;\n}\n\n.section-title {\n font-size: $section-title-font-size;\n font-weight: bold;\n text-transform: uppercase;\n\n span {\n color: $text-secondary;\n fill: $text-secondary;\n vertical-align: middle;\n }\n}\n\n.base-content-fallback {\n // Make the error message be centered against the viewport\n height: 100vh;\n}\n\n.body-wrapper {\n // Hide certain elements so the page structure is fixed, e.g., placeholders,\n // while avoiding flashes of changing content, e.g., icons and text\n $selectors-to-hide: '\n .section-title,\n .sections-list .section:last-of-type,\n .topic\n ';\n\n #{$selectors-to-hide} {\n opacity: 0;\n }\n\n &.on {\n #{$selectors-to-hide} {\n opacity: 1;\n }\n }\n}\n", - ".as-error-fallback {\n align-items: center;\n border-radius: $border-radius;\n box-shadow: inset $inner-box-shadow;\n color: $text-conditional;\n display: flex;\n flex-direction: column;\n font-size: $error-fallback-font-size;\n justify-content: center;\n justify-items: center;\n line-height: $error-fallback-line-height;\n\n a {\n color: $text-conditional;\n text-decoration: underline;\n }\n}\n\n", - ".top-sites-list {\n $top-sites-size: $grid-unit;\n $top-sites-border-radius: 6px;\n $top-sites-title-height: 30px;\n $top-sites-vertical-space: 8px;\n $screenshot-size: cover;\n $rich-icon-size: 96px;\n $default-icon-wrapper-size: 42px;\n $default-icon-size: 32px;\n $default-icon-offset: 6px;\n $half-base-gutter: $base-gutter / 2;\n\n list-style: none;\n margin: 0 (-$half-base-gutter);\n // Take back the margin from the bottom row of vertical spacing as well as the\n // extra whitespace below the title text as it's vertically centered.\n margin-bottom: -($top-sites-vertical-space + $top-sites-title-height / 3);\n padding: 0;\n\n // Two columns\n @media (max-width: $break-point-small) {\n :nth-child(2n+1) {\n @include context-menu-open-middle;\n }\n\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n // Three columns\n @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n :nth-child(3n+2),\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n // Four columns\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(4n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n :nth-child(4n+3) {\n @include context-menu-open-left;\n }\n }\n\n // Six columns\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(6n) {\n @include context-menu-open-left;\n }\n }\n @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n :nth-child(6n+5) {\n @include context-menu-open-left;\n }\n }\n\n li {\n display: inline-block;\n margin: 0 0 $top-sites-vertical-space;\n }\n\n // container for drop zone\n .top-site-outer {\n padding: 0 $half-base-gutter;\n\n // container for context menu\n .top-site-inner {\n position: relative;\n\n > a {\n color: inherit;\n display: block;\n outline: none;\n\n &:-moz-any(.active, :focus) {\n .tile {\n @include fade-in;\n }\n }\n }\n }\n\n @include context-menu-button;\n\n .tile { // sass-lint:disable-block property-sort-order\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow, $shadow-secondary;\n height: $top-sites-size;\n position: relative;\n width: $top-sites-size;\n\n // For letter fallback\n align-items: center;\n color: $text-secondary;\n display: flex;\n font-size: 32px;\n font-weight: 200;\n justify-content: center;\n text-transform: uppercase;\n\n &::before {\n content: attr(data-fallback);\n }\n }\n\n .screenshot {\n background-color: $white;\n background-position: top left;\n background-size: $screenshot-size;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n transition: opacity 1s;\n width: 100%;\n\n &.active {\n opacity: 1;\n }\n }\n\n // Some common styles for all icons (rich and default) in top sites\n .top-site-icon {\n background-color: $background-primary;\n background-position: center center;\n background-repeat: no-repeat;\n border-radius: $top-sites-border-radius;\n box-shadow: inset $inner-box-shadow;\n position: absolute;\n }\n\n .rich-icon {\n background-size: $rich-icon-size;\n height: 100%;\n offset-inline-start: 0;\n top: 0;\n width: 100%;\n }\n\n .default-icon { // sass-lint:disable block property-sort-order\n background-size: $default-icon-size;\n bottom: -$default-icon-offset;\n height: $default-icon-wrapper-size;\n offset-inline-end: -$default-icon-offset;\n width: $default-icon-wrapper-size;\n\n // for corner letter fallback\n align-items: center;\n display: flex;\n font-size: 20px;\n justify-content: center;\n\n &[data-fallback]::before {\n content: attr(data-fallback);\n }\n }\n\n .title {\n font: message-box;\n height: $top-sites-title-height;\n line-height: $top-sites-title-height;\n text-align: center;\n width: $top-sites-size;\n position: relative;\n\n .icon {\n fill: $fill-tertiary;\n offset-inline-start: 0;\n position: absolute;\n top: 10px;\n }\n\n span {\n height: $top-sites-title-height;\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.pinned {\n span {\n padding: 0 13px;\n }\n }\n }\n\n .edit-button {\n background-image: url('#{$image-path}glyph-edit-16.svg');\n }\n\n &.placeholder {\n .tile {\n box-shadow: inset $inner-box-shadow;\n }\n\n .screenshot {\n display: none;\n }\n }\n\n &.dragged {\n .tile {\n background: $grey-20;\n box-shadow: none;\n\n * {\n display: none;\n }\n }\n\n .title {\n visibility: hidden;\n }\n }\n }\n\n &:not(.dnd-active) {\n .top-site-outer:-moz-any(.active, :focus, :hover) {\n .tile {\n @include fade-in;\n }\n\n @include context-menu-button-hover;\n }\n }\n}\n\n// Always hide .hide-for-narrow if wide layout is disabled\n.wide-layout-disabled {\n .top-sites-list {\n .hide-for-narrow {\n display: none;\n }\n }\n}\n\n.wide-layout-enabled {\n .top-sites-list {\n // Eight columns\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(8n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n :nth-child(8n+7) {\n @include context-menu-open-left;\n }\n }\n\n @media not all and (min-width: $break-point-widest) {\n .hide-for-narrow {\n display: none;\n }\n }\n }\n}\n\n.edit-topsites-wrapper {\n .add-topsites-button {\n border-right: $border-secondary;\n line-height: 13px;\n offset-inline-end: 24px;\n opacity: 0;\n padding: 0 10px;\n pointer-events: none;\n position: absolute;\n top: 2px;\n transition: opacity 0.2s $photon-easing;\n\n &:dir(rtl) {\n border-left: $border-secondary;\n border-right: 0;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n\n button {\n background: none;\n border: 0;\n color: $text-secondary;\n cursor: pointer;\n font-size: 12px;\n padding: 0;\n\n &:focus {\n background: $background-secondary;\n border-bottom: dotted 1px $text-secondary;\n }\n }\n }\n\n .modal {\n offset-inline-start: -31px;\n position: absolute;\n top: -29px;\n width: calc(100% + 62px);\n box-shadow: $shadow-secondary;\n }\n\n .edit-topsites-inner-wrapper {\n margin: 0;\n padding: 15px 30px;\n }\n}\n\n.top-sites:not(.collapsed):hover {\n .add-topsites-button {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.topsite-form {\n .form-wrapper {\n margin: auto;\n max-width: 350px;\n padding: 15px 0;\n\n .field {\n position: relative;\n }\n\n .url input:not(:placeholder-shown):dir(rtl) {\n direction: ltr;\n text-align: right;\n }\n\n .section-title {\n margin-bottom: 5px;\n }\n\n input {\n &[type='text'] {\n border: $input-border;\n border-radius: 2px;\n margin: 5px 0;\n padding: 7px;\n width: 100%;\n\n &:focus {\n border: $input-border-active;\n }\n }\n }\n\n .invalid {\n input {\n &[type='text'] {\n border: $input-error-border;\n box-shadow: $input-error-boxshadow;\n }\n }\n }\n\n .error-tooltip {\n animation: fade-up-tt 450ms;\n background: $red-60;\n border-radius: 2px;\n color: $white;\n offset-inline-start: 3px;\n padding: 5px 12px;\n position: absolute;\n top: 44px;\n z-index: 1;\n\n // tooltip caret\n &::before {\n background: $red-60;\n bottom: -8px;\n content: '.';\n height: 16px;\n offset-inline-start: 12px;\n position: absolute;\n text-indent: -999px;\n top: -7px;\n transform: rotate(45deg);\n white-space: nowrap;\n width: 16px;\n z-index: -1;\n }\n }\n }\n\n .actions {\n justify-content: flex-end;\n\n button {\n margin-inline-start: 10px;\n margin-inline-end: 0;\n }\n }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n 0% {\n opacity: 0;\n transform: translateY(15px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n", - ".sections-list {\n .section-list {\n display: grid;\n grid-gap: $base-gutter;\n grid-template-columns: repeat(auto-fit, $card-width);\n margin: 0;\n\n @media (max-width: $break-point-medium) {\n @include context-menu-open-left;\n }\n\n @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n :nth-child(2n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n }\n\n .section-empty-state {\n border: $border-secondary;\n border-radius: $border-radius;\n display: flex;\n height: $card-height;\n width: 100%;\n\n .empty-state {\n margin: auto;\n max-width: 350px;\n\n .empty-state-icon {\n background-position: center;\n background-repeat: no-repeat;\n background-size: 50px 50px;\n -moz-context-properties: fill;\n display: block;\n fill: $fill-secondary;\n height: 50px;\n margin: 0 auto;\n width: 50px;\n }\n\n .empty-state-message {\n color: $text-secondary;\n font-size: 13px;\n margin-bottom: 0;\n text-align: center;\n }\n }\n }\n}\n\n.wide-layout-enabled {\n .sections-list {\n .section-list {\n @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n :nth-child(3n) {\n @include context-menu-open-left;\n }\n }\n\n @media (min-width: $break-point-widest) {\n grid-template-columns: repeat(auto-fit, $card-width-large);\n }\n }\n }\n}\n", - ".topic {\n color: $text-secondary;\n font-size: 12px;\n line-height: 1.6;\n margin-top: $topic-margin-top;\n\n @media (min-width: $break-point-large) {\n line-height: 16px;\n }\n\n ul {\n margin: 0;\n padding: 0;\n @media (min-width: $break-point-large) {\n display: inline;\n padding-inline-start: 12px;\n }\n }\n\n\n ul li {\n display: inline-block;\n\n &::after {\n content: '•';\n padding: 8px;\n }\n\n &:last-child::after {\n content: none;\n }\n }\n\n .topic-link {\n color: $link-secondary;\n }\n\n .topic-read-more {\n color: $link-secondary;\n\n @media (min-width: $break-point-large) {\n // This is floating to accomodate a very large number of topics and/or\n // very long topic names due to l10n.\n float: right;\n\n &:dir(rtl) {\n float: left;\n }\n }\n\n &::after {\n background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-secondary;\n height: 16px;\n margin-inline-start: 5px;\n vertical-align: top;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n\n // This is a clearfix to for the topics-read-more link which is floating and causes\n // some jank when we set overflow:hidden for the animation.\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n}\n", - ".search-wrapper {\n $search-border-radius: 3px;\n $search-focus-color: $blue-50;\n $search-height: 35px;\n $search-input-left-label-width: 35px;\n $search-button-width: 36px;\n $search-glyph-image: url('chrome://browser/skin/search-glass.svg');\n $glyph-forward: url('chrome://browser/skin/forward.svg');\n $search-glyph-size: 16px;\n $search-glyph-fill: $grey-90-40;\n // This is positioned so it is visually (not metrically) centered. r=abenson\n $search-glyph-left-position: 12px;\n\n cursor: default;\n display: flex;\n height: $search-height;\n // The extra 1px is to account for the box-shadow being outside of the element\n // instead of inside. It needs to be like that to not overlap the inner background\n // color of the hover state of the submit button.\n margin: 1px 1px $section-spacing;\n position: relative;\n width: 100%;\n\n input {\n border: 0;\n border-radius: $search-border-radius;\n box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n color: inherit;\n font-size: 15px;\n padding: 0;\n padding-inline-end: $search-button-width;\n padding-inline-start: $search-input-left-label-width;\n width: 100%;\n }\n\n &:hover input {\n box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n }\n\n &:active input,\n input:focus {\n box-shadow: 0 0 0 $os-search-focus-shadow-radius $search-focus-color;\n }\n\n .search-label {\n background: $search-glyph-image no-repeat $search-glyph-left-position center / $search-glyph-size;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-start: 0;\n position: absolute;\n width: $search-input-left-label-width;\n }\n\n .search-button {\n background: $glyph-forward no-repeat center center;\n background-size: 16px 16px;\n border: 0;\n border-radius: 0 $border-radius $border-radius 0;\n -moz-context-properties: fill;\n fill: $search-glyph-fill;\n height: 100%;\n offset-inline-end: 0;\n position: absolute;\n width: $search-button-width;\n\n &:focus,\n &:hover {\n background-color: $grey-90-10;\n cursor: pointer;\n }\n\n &:active {\n background-color: $grey-90-20;\n }\n\n &:dir(rtl) {\n transform: scaleX(-1);\n }\n }\n\n // Adjust the style of the contentSearchUI-generated table\n .contentSearchSuggestionTable { // sass-lint:disable-line class-name-format\n border: 0;\n transform: translateY(2px);\n }\n}\n", - ".context-menu {\n background: $background-primary;\n border-radius: $context-menu-border-radius;\n box-shadow: $context-menu-shadow;\n display: block;\n font-size: $context-menu-font-size;\n margin-inline-start: 5px;\n offset-inline-start: 100%;\n position: absolute;\n top: ($context-menu-button-size / 4);\n z-index: 10000;\n\n > ul {\n list-style: none;\n margin: 0;\n padding: $context-menu-outer-padding 0;\n\n > li {\n margin: 0;\n width: 100%;\n\n &.separator {\n border-bottom: 1px solid $context-menu-border-color;\n margin: $context-menu-outer-padding 0;\n }\n\n > a {\n align-items: center;\n color: inherit;\n cursor: pointer;\n display: flex;\n line-height: 16px;\n outline: none;\n padding: $context-menu-item-padding;\n white-space: nowrap;\n\n &:-moz-any(:focus, :hover) {\n background: $input-primary;\n color: $white;\n\n a {\n color: $grey-90;\n }\n\n .icon {\n fill: $white;\n }\n\n &:-moz-any(:focus, :hover) {\n color: $white;\n }\n }\n }\n }\n }\n}\n", - ".prefs-pane {\n $options-spacing: 10px;\n $prefs-spacing: 20px;\n $prefs-width: 400px;\n\n color: $text-conditional;\n font-size: 14px;\n line-height: 21px;\n\n .sidebar {\n background: $white;\n border-left: $border-secondary;\n box-shadow: $shadow-secondary;\n height: 100%;\n offset-inline-end: 0;\n overflow-y: auto;\n padding: 40px;\n position: fixed;\n top: 0;\n transition: 0.1s cubic-bezier(0, 0, 0, 1);\n transition-property: transform;\n width: $prefs-width;\n z-index: 12000;\n\n &.hidden {\n transform: translateX(100%);\n\n &:dir(rtl) {\n transform: translateX(-100%);\n }\n }\n\n h1 {\n font-size: 21px;\n margin: 0;\n padding-top: $prefs-spacing;\n }\n }\n\n hr {\n border: 0;\n border-bottom: $border-secondary;\n margin: 20px 0;\n }\n\n .prefs-modal-inner-wrapper {\n padding-bottom: 100px;\n\n section {\n margin: $prefs-spacing 0;\n\n p {\n margin: 5px 0 20px 30px;\n }\n\n label {\n display: inline-block;\n position: relative;\n width: 100%;\n\n input {\n offset-inline-start: -30px;\n position: absolute;\n top: 0;\n }\n }\n\n > label {\n font-size: 16px;\n font-weight: bold;\n line-height: 19px;\n }\n }\n\n .options {\n background: $background-primary;\n border: $border-secondary;\n border-radius: 2px;\n margin: -$options-spacing 0 $prefs-spacing;\n margin-inline-start: 30px;\n padding: $options-spacing;\n\n &.disabled {\n opacity: 0.5;\n }\n\n label {\n $icon-offset-start: 35px;\n background-position-x: $icon-offset-start;\n background-position-y: 2.5px;\n background-repeat: no-repeat;\n display: inline-block;\n font-size: 14px;\n font-weight: normal;\n height: auto;\n line-height: 21px;\n width: 100%;\n\n &:dir(rtl) {\n background-position-x: right $icon-offset-start;\n }\n }\n\n [type='checkbox']:not(:checked) + label,\n [type='checkbox']:checked + label {\n padding-inline-start: 63px;\n }\n\n section {\n margin: 0;\n }\n }\n }\n\n .actions {\n background-color: $background-primary;\n border-left: $border-secondary;\n bottom: 0;\n offset-inline-end: 0;\n position: fixed;\n width: $prefs-width;\n\n button {\n margin-inline-end: $prefs-spacing;\n }\n }\n\n // CSS styled checkbox\n [type='checkbox']:not(:checked),\n [type='checkbox']:checked {\n offset-inline-start: -9999px;\n position: absolute;\n }\n\n [type='checkbox']:not(:disabled):not(:checked) + label,\n [type='checkbox']:not(:disabled):checked + label {\n cursor: pointer;\n padding: 0 30px;\n position: relative;\n }\n\n [type='checkbox']:not(:checked) + label::before,\n [type='checkbox']:checked + label::before {\n background: $white;\n border: $border-primary;\n border-radius: $border-radius;\n content: '';\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n top: 0;\n width: 21px;\n }\n\n // checkmark\n [type='checkbox']:not(:checked) + label::after,\n [type='checkbox']:checked + label::after {\n background: url('chrome://global/skin/in-content/check.svg') no-repeat center center; // sass-lint:disable-line no-url-domains\n content: '';\n -moz-context-properties: fill, stroke;\n fill: $input-primary;\n height: 21px;\n offset-inline-start: 0;\n position: absolute;\n stroke: none;\n top: 0;\n width: 21px;\n }\n\n // checkmark changes\n [type='checkbox']:not(:checked) + label::after {\n opacity: 0;\n }\n\n [type='checkbox']:checked + label::after {\n opacity: 1;\n }\n\n // hover\n [type='checkbox']:not(:disabled) + label:hover::before {\n border: 1px solid $input-primary;\n }\n\n // accessibility\n [type='checkbox']:not(:disabled):checked:focus + label::before,\n [type='checkbox']:not(:disabled):not(:checked):focus + label::before {\n border: 1px dotted $input-primary;\n }\n}\n\n.prefs-pane-button {\n button {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n fill: $fill-secondary;\n offset-inline-end: 15px;\n padding: 15px;\n position: fixed;\n top: 15px;\n z-index: 12001;\n\n &:hover {\n background-color: $background-secondary;\n }\n\n &:active {\n background-color: $background-primary;\n }\n }\n}\n", - ".confirmation-dialog {\n .modal {\n box-shadow: 0 2px 2px 0 $black-10;\n left: 50%;\n margin-left: -200px;\n position: fixed;\n top: 20%;\n width: 400px;\n }\n\n section {\n margin: 0;\n }\n\n .modal-message {\n display: flex;\n padding: 16px;\n padding-bottom: 0;\n\n p {\n margin: 0;\n margin-bottom: 16px;\n }\n }\n\n .actions {\n border: 0;\n display: flex;\n flex-wrap: nowrap;\n padding: 0 16px;\n\n button {\n margin-inline-end: 16px;\n padding-inline-end: 18px;\n padding-inline-start: 18px;\n white-space: normal;\n width: 50%;\n\n &.done {\n margin-inline-end: 0;\n margin-inline-start: 0;\n }\n }\n }\n\n .icon {\n margin-inline-end: 16px;\n }\n}\n\n.modal-overlay {\n background: $background-secondary;\n height: 100%;\n left: 0;\n opacity: 0.8;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 11001;\n}\n\n.modal {\n background: $white;\n border: $border-secondary;\n border-radius: 5px;\n font-size: 15px;\n z-index: 11002;\n}\n", - ".card-outer {\n @include context-menu-button;\n background: $white;\n border-radius: $border-radius;\n display: inline-block;\n height: $card-height;\n margin-inline-end: $base-gutter;\n position: relative;\n width: 100%;\n\n &.placeholder {\n background: transparent;\n\n .card {\n box-shadow: inset $inner-box-shadow;\n }\n }\n\n .card {\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n height: 100%;\n }\n\n > a {\n color: inherit;\n display: block;\n height: 100%;\n outline: none;\n position: absolute;\n width: 100%;\n\n &:-moz-any(.active, :focus) {\n .card {\n @include fade-in-card;\n }\n\n .card-title {\n color: $link-primary;\n }\n }\n }\n\n &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n @include fade-in-card;\n @include context-menu-button-hover;\n outline: none;\n\n .card-title {\n color: $link-primary;\n }\n }\n\n .card-preview-image-outer {\n background-color: $background-primary;\n border-radius: $border-radius $border-radius 0 0;\n height: $card-preview-image-height;\n overflow: hidden;\n position: relative;\n\n &::after {\n border-bottom: 1px solid $black-5;\n bottom: 0;\n content: '';\n position: absolute;\n width: 100%;\n }\n\n .card-preview-image {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n opacity: 0;\n transition: opacity 1s $photon-easing;\n width: 100%;\n\n &.loaded {\n opacity: 1;\n }\n }\n }\n\n .card-details {\n padding: 15px 16px 12px;\n\n &.no-image {\n padding-top: 16px;\n }\n }\n\n .card-text {\n max-height: 4 * $card-text-line-height + $card-title-margin;\n overflow: hidden;\n\n &.no-image {\n max-height: 10 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name,\n &.no-context {\n max-height: 5 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name,\n &.no-image.no-context {\n max-height: 11 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-host-name.no-context {\n max-height: 6 * $card-text-line-height + $card-title-margin;\n }\n\n &.no-image.no-host-name.no-context {\n max-height: 12 * $card-text-line-height + $card-title-margin;\n }\n\n &:not(.no-description) .card-title {\n max-height: 3 * $card-text-line-height;\n overflow: hidden;\n }\n }\n\n .card-host-name {\n color: $text-secondary;\n font-size: 10px;\n overflow: hidden;\n padding-bottom: 4px;\n text-overflow: ellipsis;\n text-transform: uppercase;\n }\n\n .card-title {\n font-size: 14px;\n line-height: $card-text-line-height;\n margin: 0 0 $card-title-margin;\n word-wrap: break-word;\n }\n\n .card-description {\n font-size: 12px;\n line-height: $card-text-line-height;\n margin: 0;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .card-context {\n bottom: 0;\n color: $text-secondary;\n display: flex;\n font-size: 11px;\n left: 0;\n padding: 12px 16px 12px 14px;\n position: absolute;\n right: 0;\n }\n\n .card-context-icon {\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n\n .card-context-label {\n flex-grow: 1;\n line-height: $icon-size;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.wide-layout-enabled {\n .card-outer {\n @media (min-width: $break-point-widest) {\n height: $card-height-large;\n\n .card-preview-image-outer {\n height: $card-preview-image-height-large;\n }\n\n .card-text {\n max-height: 7 * $card-text-line-height + $card-title-margin;\n }\n }\n }\n}\n", - ".manual-migration-container {\n color: $text-conditional;\n font-size: 13px;\n line-height: 15px;\n margin-bottom: $section-spacing;\n text-align: center;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n text-align: left;\n }\n\n p {\n margin: 0;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: flex;\n justify-content: space-between;\n }\n }\n\n .icon {\n display: none;\n @media (min-width: $break-point-medium) {\n align-self: center;\n display: block;\n fill: $fill-secondary;\n margin-inline-end: 6px;\n }\n }\n}\n\n.manual-migration-actions {\n border: 0;\n display: block;\n flex-wrap: nowrap;\n\n @media (min-width: $break-point-medium) {\n display: flex;\n justify-content: space-between;\n padding: 0;\n }\n\n button {\n align-self: center;\n height: 26px;\n margin: 0;\n margin-inline-start: 20px;\n padding: 0 12px;\n }\n}\n", - ".collapsible-section {\n .section-title {\n\n .click-target {\n cursor: pointer;\n vertical-align: top;\n white-space: nowrap;\n }\n\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n margin-inline-start: 8px;\n margin-top: -1px;\n }\n }\n\n .section-top-bar {\n $info-active-color: $grey-90-10;\n position: relative;\n\n .section-info-option {\n offset-inline-end: 0;\n position: absolute;\n top: 0;\n }\n\n .info-option-icon {\n background-image: url('#{$image-path}glyph-info-option-12.svg');\n background-position: center;\n background-repeat: no-repeat;\n background-size: 12px 12px;\n -moz-context-properties: fill;\n display: inline-block;\n fill: $fill-secondary;\n height: 16px;\n margin-bottom: -2px; // Specific styling for the particuar icon. r=abenson\n opacity: 0;\n transition: opacity 0.2s $photon-easing;\n width: 16px;\n\n &[aria-expanded='true'] {\n background-color: $info-active-color;\n border-radius: 1px; // The shadow below makes this the desired larger radius\n box-shadow: 0 0 0 5px $info-active-color;\n fill: $fill-primary;\n\n + .info-option {\n opacity: 1;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: visible;\n }\n }\n\n &:not([aria-expanded='true']) + .info-option {\n pointer-events: none;\n }\n\n &:-moz-any(:active, :focus) {\n opacity: 1;\n }\n }\n\n .section-info-option .info-option {\n opacity: 0;\n transition: visibility 0.2s, opacity 0.2s $photon-easing;\n visibility: hidden;\n\n &::after,\n &::before {\n content: '';\n offset-inline-end: 0;\n position: absolute;\n }\n\n &::before {\n $before-height: 32px;\n background-image: url('chrome://global/skin/arrow/panelarrow-vertical.svg');\n background-position: right $os-infopanel-arrow-offset-end bottom;\n background-repeat: no-repeat;\n background-size: $os-infopanel-arrow-width $os-infopanel-arrow-height;\n -moz-context-properties: fill, stroke;\n fill: $white;\n height: $before-height;\n stroke: $grey-30;\n top: -$before-height;\n width: 43px;\n }\n\n &:dir(rtl)::before {\n background-position-x: $os-infopanel-arrow-offset-end;\n }\n\n &::after {\n height: $os-infopanel-arrow-height;\n offset-inline-start: 0;\n top: -$os-infopanel-arrow-height;\n }\n }\n\n .info-option {\n background: $white;\n border: $border-secondary;\n border-radius: $border-radius;\n box-shadow: $shadow-secondary;\n font-size: 13px;\n line-height: 120%;\n margin-inline-end: -9px;\n offset-inline-end: 0;\n padding: 24px;\n position: absolute;\n top: 26px;\n -moz-user-select: none;\n width: 320px;\n z-index: 9999;\n }\n\n .info-option-header {\n font-size: 15px;\n font-weight: 600;\n }\n\n .info-option-body {\n margin: 0;\n margin-top: 12px;\n }\n\n .info-option-link {\n color: $link-primary;\n margin-left: 7px;\n }\n\n .info-option-manage {\n margin-top: 24px;\n\n button {\n background: 0;\n border: 0;\n color: $link-primary;\n cursor: pointer;\n margin: 0;\n padding: 0;\n\n &::after {\n background-image: url('#{$image-path}topic-show-more-12.svg');\n background-repeat: no-repeat;\n content: '';\n -moz-context-properties: fill;\n display: inline-block;\n fill: $link-primary;\n height: 16px;\n margin-inline-start: 5px;\n margin-top: 1px;\n vertical-align: middle;\n width: 12px;\n }\n\n &:dir(rtl)::after {\n transform: scaleX(-1);\n }\n }\n }\n }\n\n .section-disclaimer {\n color: $grey-60;\n font-size: 13px;\n margin-bottom: 16px;\n position: relative;\n\n .section-disclaimer-text {\n display: inline-block;\n\n @media (min-width: $break-point-small) {\n width: $card-width;\n }\n\n @media (min-width: $break-point-medium) {\n width: 340px;\n }\n\n @media (min-width: $break-point-large) {\n width: 610px;\n }\n }\n\n a {\n color: $link-secondary;\n padding-left: 3px;\n }\n\n button {\n background: $grey-10;\n border: 1px solid $grey-40;\n border-radius: 4px;\n cursor: pointer;\n margin-top: 2px;\n max-width: 130px;\n min-height: 26px;\n offset-inline-end: 0;\n\n &:hover:not(.dismiss) {\n box-shadow: $shadow-primary;\n transition: box-shadow 150ms;\n }\n\n @media (min-width: $break-point-small) {\n position: absolute;\n }\n }\n }\n\n .section-body-fallback {\n height: $card-height;\n }\n\n .section-body {\n // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n $horizontal-padding: 7px;\n margin: 0 (-$horizontal-padding);\n padding: 0 $horizontal-padding;\n\n &.animating {\n overflow: hidden;\n pointer-events: none;\n }\n }\n\n &.animation-enabled {\n .section-title {\n .icon-arrowhead-down,\n .icon-arrowhead-forward {\n transition: transform 0.5s $photon-easing;\n }\n }\n\n .section-body {\n transition: max-height 0.5s $photon-easing;\n }\n }\n\n &.collapsed {\n .section-body {\n max-height: 0;\n overflow: hidden;\n }\n\n .section-info-option {\n pointer-events: none;\n }\n }\n\n &:not(.collapsed):hover {\n .info-option-icon {\n opacity: 1;\n }\n }\n}\n" - ], - "names": [], - "mappings": "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" -} \ No newline at end of file diff --git a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js index 4af233f865a7..0cb7388f4ee0 100644 --- a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js +++ b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js @@ -60,7 +60,7 @@ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 12); +/******/ return __webpack_require__(__webpack_require__.s = 10); /******/ }) /************************************************************************/ /******/ ([ @@ -366,59 +366,39 @@ module.exports = ReactIntl; /* 3 */ /***/ (function(module, exports) { -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - +module.exports = ReactRedux; /***/ }), /* 4 */ /***/ (function(module, exports) { -module.exports = ReactRedux; +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { -"use strict"; -const TOP_SITES_SOURCE = "TOP_SITES"; -/* harmony export (immutable) */ __webpack_exports__["d"] = TOP_SITES_SOURCE; - -const TOP_SITES_CONTEXT_MENU_OPTIONS = ["CheckPinTopSite", "EditTopSite", "Separator", "OpenInNewWindow", "OpenInPrivateWindow", "Separator", "BlockUrl", "DeleteUrl"]; -/* harmony export (immutable) */ __webpack_exports__["c"] = TOP_SITES_CONTEXT_MENU_OPTIONS; - -// minimum size necessary to show a rich icon instead of a screenshot -const MIN_RICH_FAVICON_SIZE = 96; -/* harmony export (immutable) */ __webpack_exports__["b"] = MIN_RICH_FAVICON_SIZE; - -// minimum size necessary to show any icon in the top left corner with a screenshot -const MIN_CORNER_FAVICON_SIZE = 16; -/* harmony export (immutable) */ __webpack_exports__["a"] = MIN_CORNER_FAVICON_SIZE; - - -/***/ }), -/* 6 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - "use strict"; // EXTERNAL MODULE: ./system-addon/common/Actions.jsm @@ -467,10 +447,10 @@ class Dedupe { -const TOP_SITES_DEFAULT_ROWS = 1; +const TOP_SITES_DEFAULT_ROWS = 2; /* unused harmony export TOP_SITES_DEFAULT_ROWS */ -const TOP_SITES_MAX_SITES_PER_ROW = 8; +const TOP_SITES_MAX_SITES_PER_ROW = 6; /* harmony export (immutable) */ __webpack_exports__["a"] = TOP_SITES_MAX_SITES_PER_ROW; @@ -791,95 +771,7 @@ function PreferencesPane(prevState = INITIAL_STATE.PreferencesPane, action) { var reducers = { TopSites, App, Snippets, Prefs, Dialog, Sections, PreferencesPane }; /***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_intl__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react_intl__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); - - - -class ErrorBoundaryFallback extends __WEBPACK_IMPORTED_MODULE_1_react___default.a.PureComponent { - constructor(props) { - super(props); - this.windowObj = this.props.windowObj || window; - this.onClick = this.onClick.bind(this); - } - - /** - * Since we only get here if part of the page has crashed, do a - * forced reload to give us the best chance at recovering. - */ - onClick() { - this.windowObj.location.reload(true); - } - - render() { - const defaultClass = "as-error-fallback"; - let className; - if ("className" in this.props) { - className = `${this.props.className} ${defaultClass}`; - } else { - className = defaultClass; - } - - // href="#" to force normal link styling stuff (eg cursor on hover) - return __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( - "div", - { className: className }, - __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( - "div", - null, - __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_0_react_intl__["FormattedMessage"], { - defaultMessage: "Oops, something went wrong loading this content.", - id: "error_fallback_default_info" }) - ), - __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( - "span", - null, - __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( - "a", - { href: "#", className: "reload-button", onClick: this.onClick }, - __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_0_react_intl__["FormattedMessage"], { - defaultMessage: "Refresh page to try again.", - id: "error_fallback_default_refresh_suggestion" }) - ) - ) - ); - } -} -/* unused harmony export ErrorBoundaryFallback */ - -ErrorBoundaryFallback.defaultProps = { className: "as-error-fallback" }; - -class ErrorBoundary extends __WEBPACK_IMPORTED_MODULE_1_react___default.a.PureComponent { - constructor(props) { - super(props); - this.state = { hasError: false }; - } - - componentDidCatch(error, info) { - this.setState({ hasError: true }); - } - - render() { - if (!this.state.hasError) { - return this.props.children; - } - - return __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(this.props.FallbackComponent, { className: this.props.className }); - } -} -/* harmony export (immutable) */ __webpack_exports__["a"] = ErrorBoundary; - - -ErrorBoundary.defaultProps = { FallbackComponent: ErrorBoundaryFallback }; - -/***/ }), -/* 8 */ +/* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1176,38 +1068,36 @@ const LinkMenu = Object(external__ReactIntl_["injectIntl"])(LinkMenu__LinkMenu); /***/ }), -/* 9 */ +/* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_content_src_components_ErrorBoundary_ErrorBoundary__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_react__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(1); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - const VISIBLE = "visible"; const VISIBILITY_CHANGE_EVENT = "visibilitychange"; function getFormattedMessage(message) { - return typeof message === "string" ? __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + return typeof message === "string" ? __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "span", null, message - ) : __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], message); + ) : __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], message); } function getCollapsed(props) { return props.prefName in props.Prefs.values ? props.Prefs.values[props.prefName] : false; } -class Info extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { +class Info extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { constructor(props) { super(props); this.onInfoEnter = this.onInfoEnter.bind(this); @@ -1254,40 +1144,40 @@ class Info extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { }; const sectionInfoTitle = intl.formatMessage({ id: "section_info_option" }); - return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "span", { className: "section-info-option", onBlur: this.onInfoLeave, onFocus: this.onInfoEnter, onMouseOut: this.onInfoLeave, onMouseOver: this.onInfoEnter }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("img", _extends({ className: "info-option-icon", title: sectionInfoTitle + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("img", _extends({ className: "info-option-icon", title: sectionInfoTitle }, infoOptionIconA11yAttrs)), - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "div", { className: "info-option" }, - infoOption.header && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + infoOption.header && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "div", { className: "info-option-header", role: "heading" }, getFormattedMessage(infoOption.header) ), - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "p", { className: "info-option-body" }, infoOption.body && getFormattedMessage(infoOption.body), - infoOption.link && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + infoOption.link && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "a", { href: infoOption.link.href, target: "_blank", rel: "noopener noreferrer", className: "info-option-link" }, getFormattedMessage(infoOption.link.title || infoOption.link) ) ), - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "div", { className: "info-option-manage" }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "button", { onClick: this.onManageClick }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "settings_pane_header" }) + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "settings_pane_header" }) ) ) ) @@ -1301,7 +1191,7 @@ const InfoIntl = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])( /* unused harmony export InfoIntl */ -class Disclaimer extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { +class Disclaimer extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { constructor(props) { super(props); this.onAcknowledge = this.onAcknowledge.bind(this); @@ -1314,20 +1204,20 @@ class Disclaimer extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureCompo render() { const { disclaimer } = this.props; - return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "div", { className: "section-disclaimer" }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "div", { className: "section-disclaimer-text" }, getFormattedMessage(disclaimer.text), - disclaimer.link && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + disclaimer.link && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "a", { href: disclaimer.link.href, target: "_blank", rel: "noopener noreferrer" }, getFormattedMessage(disclaimer.link.title || disclaimer.link) ) ), - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "button", { onClick: this.onAcknowledge }, getFormattedMessage(disclaimer.button) @@ -1342,7 +1232,7 @@ const DisclaimerIntl = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIn /* unused harmony export DisclaimerIntl */ -class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_3_react___default.a.PureComponent { +class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { constructor(props) { super(props); this.onBodyMount = this.onBodyMount.bind(this); @@ -1406,13 +1296,6 @@ class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_3_react___default.a. } onHeaderClick() { - // If this.sectionBody is unset, it means that we're in some sort of error - // state, probably displaying the error fallback, so we won't be able to - // compute the height, and we don't want to persist the preference. - if (!this.sectionBody) { - return; - } - // Get the current height of the body so max-height transitions can work this.setState({ isAnimating: true, @@ -1431,9 +1314,9 @@ class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_3_react___default.a. renderIcon() { const { icon } = this.props; if (icon && icon.startsWith("moz-extension://")) { - return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("span", { className: "icon icon-small-spacer", style: { backgroundImage: `url('${icon}')` } }); + return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("span", { className: "icon icon-small-spacer", style: { backgroundImage: `url('${icon}')` } }); } - return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("span", { className: `icon icon-small-spacer icon-${icon || "webextension"}` }); + return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("span", { className: `icon icon-small-spacer icon-${icon || "webextension"}` }); } render() { @@ -1444,38 +1327,34 @@ class _CollapsibleSection extends __WEBPACK_IMPORTED_MODULE_3_react___default.a. const disclaimerPref = `section.${id}.showDisclaimer`; const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref]; - return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "section", { className: `collapsible-section ${this.props.className}${enableAnimation ? " animation-enabled" : ""}${isCollapsed ? " collapsed" : ""}` }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "div", { className: "section-top-bar" }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "h3", { className: "section-title" }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( "span", { className: "click-target", onClick: isCollapsible && this.onHeaderClick }, this.renderIcon(), this.props.title, - isCollapsible && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement("span", { className: `collapsible-arrow icon ${isCollapsed ? "icon-arrowhead-forward" : "icon-arrowhead-down"}` }) + isCollapsible && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("span", { className: `collapsible-arrow icon ${isCollapsed ? "icon-arrowhead-forward" : "icon-arrowhead-down"}` }) ) ), - infoOption && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(InfoIntl, { infoOption: infoOption, dispatch: this.props.dispatch }) + infoOption && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(InfoIntl, { infoOption: infoOption, dispatch: this.props.dispatch }) ), - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( - __WEBPACK_IMPORTED_MODULE_2_content_src_components_ErrorBoundary_ErrorBoundary__["a" /* ErrorBoundary */], - { className: "section-body-fallback" }, - __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement( - "div", - { - className: `section-body${isAnimating ? " animating" : ""}`, - onTransitionEnd: this.onTransitionEnd, - ref: this.onBodyMount, - style: isAnimating && !isCollapsed ? { maxHeight } : null }, - needsDisclaimer && __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(DisclaimerIntl, { disclaimerPref: disclaimerPref, disclaimer: disclaimer, eventSource: eventSource, dispatch: this.props.dispatch }), - this.props.children - ) + __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( + "div", + { + className: `section-body${isAnimating ? " animating" : ""}`, + onTransitionEnd: this.onTransitionEnd, + ref: this.onBodyMount, + style: isAnimating && !isCollapsed ? { maxHeight } : null }, + needsDisclaimer && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(DisclaimerIntl, { disclaimerPref: disclaimerPref, disclaimer: disclaimer, eventSource: eventSource, dispatch: this.props.dispatch }), + this.props.children ) ); } @@ -1495,15 +1374,15 @@ _CollapsibleSection.defaultProps = { const CollapsibleSection = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])(_CollapsibleSection); /* harmony export (immutable) */ __webpack_exports__["a"] = CollapsibleSection; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 10 */ +/* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(11); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(9); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__); @@ -1672,7 +1551,7 @@ class ComponentPerfTimer extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.C /***/ }), -/* 11 */ +/* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -1806,23 +1685,23 @@ _PerfService.prototype = { var perfService = new _PerfService(); /***/ }), -/* 12 */ +/* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_content_src_lib_snippets__ = __webpack_require__(13); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_content_src_components_Base_Base__ = __webpack_require__(14); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_lib_detect_user_session_start__ = __webpack_require__(22); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_lib_init_store__ = __webpack_require__(23); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_content_src_lib_snippets__ = __webpack_require__(11); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_content_src_components_Base_Base__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_lib_detect_user_session_start__ = __webpack_require__(17); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_lib_init_store__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_redux__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom__ = __webpack_require__(20); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_dom__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_common_Reducers_jsm__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_common_Reducers_jsm__ = __webpack_require__(5); @@ -1844,7 +1723,7 @@ if (!global.gActivityStreamPrerenderedState) { store.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].NEW_TAB_STATE_REQUEST })); } -__WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.hydrate(__WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( +__WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( __WEBPACK_IMPORTED_MODULE_5_react_redux__["Provider"], { store: store }, __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2_content_src_components_Base_Base__["a" /* Base */], { @@ -1854,10 +1733,10 @@ __WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.hydrate(__WEBPACK_IMPORTED_MOD ), document.getElementById("root")); Object(__WEBPACK_IMPORTED_MODULE_1_content_src_lib_snippets__["a" /* addSnippetsSubscriber */])(store); -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 13 */ +/* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2231,10 +2110,10 @@ function addSnippetsSubscriber(store) { // These values are returned for testing purposes return snippets; } -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 14 */ +/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -2247,7 +2126,7 @@ var external__ReactIntl_ = __webpack_require__(2); var external__ReactIntl__default = /*#__PURE__*/__webpack_require__.n(external__ReactIntl_); // EXTERNAL MODULE: external "ReactRedux" -var external__ReactRedux_ = __webpack_require__(4); +var external__ReactRedux_ = __webpack_require__(3); var external__ReactRedux__default = /*#__PURE__*/__webpack_require__.n(external__ReactRedux_); // EXTERNAL MODULE: external "React" @@ -2351,9 +2230,6 @@ class ConfirmDialog__ConfirmDialog extends external__React__default.a.PureCompon } const ConfirmDialog = Object(external__ReactRedux_["connect"])(state => state.Dialog)(ConfirmDialog__ConfirmDialog); -// EXTERNAL MODULE: ./system-addon/content-src/components/ErrorBoundary/ErrorBoundary.jsx -var ErrorBoundary = __webpack_require__(7); - // CONCATENATED MODULE: ./system-addon/content-src/components/ManualMigration/ManualMigration.jsx @@ -2698,7 +2574,7 @@ var PrerenderData = new _PrerenderData({ }] }); // EXTERNAL MODULE: ./system-addon/content-src/lib/constants.js -var constants = __webpack_require__(15); +var constants = __webpack_require__(13); // CONCATENATED MODULE: ./system-addon/content-src/components/Search/Search.jsx /* globals ContentSearchUIController */ @@ -2803,11 +2679,735 @@ class Search__Search extends external__React__default.a.PureComponent { const Search = Object(external__ReactRedux_["connect"])()(Object(external__ReactIntl_["injectIntl"])(Search__Search)); // EXTERNAL MODULE: ./system-addon/content-src/components/Sections/Sections.jsx -var Sections = __webpack_require__(16); +var Sections = __webpack_require__(14); -// EXTERNAL MODULE: ./system-addon/content-src/components/TopSites/TopSites.jsx -var TopSites = __webpack_require__(19); +// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSitesConstants.js +const TOP_SITES_SOURCE = "TOP_SITES"; +const TOP_SITES_CONTEXT_MENU_OPTIONS = ["CheckPinTopSite", "EditTopSite", "Separator", "OpenInNewWindow", "OpenInPrivateWindow", "Separator", "BlockUrl", "DeleteUrl"]; +// minimum size necessary to show a rich icon instead of a screenshot +const MIN_RICH_FAVICON_SIZE = 96; +// minimum size necessary to show any icon in the top left corner with a screenshot +const MIN_CORNER_FAVICON_SIZE = 16; +// EXTERNAL MODULE: ./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx +var CollapsibleSection = __webpack_require__(7); +// EXTERNAL MODULE: ./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx +var ComponentPerfTimer = __webpack_require__(8); + +// EXTERNAL MODULE: ./system-addon/common/Reducers.jsm + 1 modules +var Reducers = __webpack_require__(5); + +// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSiteForm.jsx + + + + + +class TopSiteForm_TopSiteForm extends external__React__default.a.PureComponent { + constructor(props) { + super(props); + const { site } = props; + this.state = { + label: site ? site.label || site.hostname : "", + url: site ? site.url : "", + validationError: false + }; + this.onLabelChange = this.onLabelChange.bind(this); + this.onUrlChange = this.onUrlChange.bind(this); + this.onCancelButtonClick = this.onCancelButtonClick.bind(this); + this.onDoneButtonClick = this.onDoneButtonClick.bind(this); + this.onUrlInputMount = this.onUrlInputMount.bind(this); + } + + onLabelChange(event) { + this.resetValidation(); + this.setState({ "label": event.target.value }); + } + + onUrlChange(event) { + this.resetValidation(); + this.setState({ "url": event.target.value }); + } + + onCancelButtonClick(ev) { + ev.preventDefault(); + this.props.onClose(); + } + + onDoneButtonClick(ev) { + ev.preventDefault(); + + if (this.validateForm()) { + const site = { url: this.cleanUrl() }; + const { index } = this.props; + if (this.state.label !== "") { + site.label = this.state.label; + } + + this.props.dispatch(Actions["a" /* actionCreators */].AlsoToMain({ + type: Actions["b" /* actionTypes */].TOP_SITES_PIN, + data: { site, index } + })); + this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ + source: TOP_SITES_SOURCE, + event: "TOP_SITES_EDIT", + action_position: index + })); + + this.props.onClose(); + } + } + + cleanUrl() { + let { url } = this.state; + // If we are missing a protocol, prepend http:// + if (!url.startsWith("http:") && !url.startsWith("https:")) { + url = `http://${url}`; + } + return url; + } + + resetValidation() { + if (this.state.validationError) { + this.setState({ validationError: false }); + } + } + + validateUrl() { + try { + return !!new URL(this.cleanUrl()); + } catch (e) { + return false; + } + } + + validateForm() { + this.resetValidation(); + // Only the URL is required and must be valid. + if (!this.state.url || !this.validateUrl()) { + this.setState({ validationError: true }); + this.inputUrl.focus(); + return false; + } + return true; + } + + onUrlInputMount(input) { + this.inputUrl = input; + } + + render() { + // For UI purposes, editing without an existing link is "add" + const showAsAdd = !this.props.site; + + return external__React__default.a.createElement( + "form", + { className: "topsite-form" }, + external__React__default.a.createElement( + "section", + { className: "edit-topsites-inner-wrapper" }, + external__React__default.a.createElement( + "div", + { className: "form-wrapper" }, + external__React__default.a.createElement( + "h3", + { className: "section-title" }, + external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_header" : "topsites_form_edit_header" }) + ), + external__React__default.a.createElement( + "div", + { className: "field title" }, + external__React__default.a.createElement("input", { + type: "text", + value: this.state.label, + onChange: this.onLabelChange, + placeholder: this.props.intl.formatMessage({ id: "topsites_form_title_placeholder" }) }) + ), + external__React__default.a.createElement( + "div", + { className: `field url${this.state.validationError ? " invalid" : ""}` }, + external__React__default.a.createElement("input", { + type: "text", + ref: this.onUrlInputMount, + value: this.state.url, + onChange: this.onUrlChange, + placeholder: this.props.intl.formatMessage({ id: "topsites_form_url_placeholder" }) }), + this.state.validationError && external__React__default.a.createElement( + "aside", + { className: "error-tooltip" }, + external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "topsites_form_url_validation" }) + ) + ) + ) + ), + external__React__default.a.createElement( + "section", + { className: "actions" }, + external__React__default.a.createElement( + "button", + { className: "cancel", type: "button", onClick: this.onCancelButtonClick }, + external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "topsites_form_cancel_button" }) + ), + external__React__default.a.createElement( + "button", + { className: "done", type: "submit", onClick: this.onDoneButtonClick }, + external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_button" : "topsites_form_save_button" }) + ) + ) + ); + } +} + +TopSiteForm_TopSiteForm.defaultProps = { + TopSite: null, + index: -1 +}; +// EXTERNAL MODULE: ./system-addon/content-src/components/LinkMenu/LinkMenu.jsx + 2 modules +var LinkMenu = __webpack_require__(6); + +// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSite.jsx +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + + + + + + + + +class TopSite_TopSiteLink extends external__React__default.a.PureComponent { + constructor(props) { + super(props); + this.onDragEvent = this.onDragEvent.bind(this); + } + + /* + * Helper to determine whether the drop zone should allow a drop. We only allow + * dropping top sites for now. + */ + _allowDrop(e) { + return e.dataTransfer.types.includes("text/topsite-index"); + } + + onDragEvent(event) { + switch (event.type) { + case "click": + // Stop any link clicks if we started any dragging + if (this.dragged) { + event.preventDefault(); + } + break; + case "dragstart": + this.dragged = true; + event.dataTransfer.effectAllowed = "move"; + event.dataTransfer.setData("text/topsite-index", this.props.index); + event.target.blur(); + this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title); + break; + case "dragend": + this.props.onDragEvent(event); + break; + case "dragenter": + case "dragover": + case "drop": + if (this._allowDrop(event)) { + event.preventDefault(); + this.props.onDragEvent(event, this.props.index); + } + break; + case "mousedown": + // Reset at the first mouse event of a potential drag + this.dragged = false; + break; + } + } + + render() { + const { children, className, isDraggable, link, onClick, title } = this.props; + const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : ""}`; + const { tippyTopIcon, faviconSize } = link; + const [letterFallback] = title; + let imageClassName; + let imageStyle; + let showSmallFavicon = false; + let smallFaviconStyle; + let smallFaviconFallback; + if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) { + // styles and class names for top sites with rich icons + imageClassName = "top-site-icon rich-icon"; + imageStyle = { + backgroundColor: link.backgroundColor, + backgroundImage: `url(${tippyTopIcon || link.favicon})` + }; + } else { + // styles and class names for top sites with screenshot + small icon in top left corner + imageClassName = `screenshot${link.screenshot ? " active" : ""}`; + imageStyle = { backgroundImage: link.screenshot ? `url(${link.screenshot})` : "none" }; + + // only show a favicon in top left if it's greater than 16x16 + if (faviconSize >= MIN_CORNER_FAVICON_SIZE) { + showSmallFavicon = true; + smallFaviconStyle = { backgroundImage: `url(${link.favicon})` }; + } else if (link.screenshot) { + // Don't show a small favicon if there is no screenshot, because that + // would result in two fallback icons + showSmallFavicon = true; + smallFaviconFallback = true; + } + } + let draggableProps = {}; + if (isDraggable) { + draggableProps = { + onClick: this.onDragEvent, + onDragEnd: this.onDragEvent, + onDragStart: this.onDragEvent, + onMouseDown: this.onDragEvent + }; + } + return external__React__default.a.createElement( + "li", + _extends({ className: topSiteOuterClassName, onDrop: this.onDragEvent, onDragOver: this.onDragEvent, onDragEnter: this.onDragEvent, onDragLeave: this.onDragEvent }, draggableProps), + external__React__default.a.createElement( + "div", + { className: "top-site-inner" }, + external__React__default.a.createElement( + "a", + { href: link.url, onClick: onClick }, + external__React__default.a.createElement( + "div", + { className: "tile", "aria-hidden": true, "data-fallback": letterFallback }, + external__React__default.a.createElement("div", { className: imageClassName, style: imageStyle }), + showSmallFavicon && external__React__default.a.createElement("div", { + className: "top-site-icon default-icon", + "data-fallback": smallFaviconFallback && letterFallback, + style: smallFaviconStyle }) + ), + external__React__default.a.createElement( + "div", + { className: `title ${link.isPinned ? "pinned" : ""}` }, + link.isPinned && external__React__default.a.createElement("div", { className: "icon icon-pin-small" }), + external__React__default.a.createElement( + "span", + { dir: "auto" }, + title + ) + ) + ), + children + ) + ); + } +} +TopSite_TopSiteLink.defaultProps = { + title: "", + link: {}, + isDraggable: true +}; + +class TopSite_TopSite extends external__React__default.a.PureComponent { + constructor(props) { + super(props); + this.state = { showContextMenu: false }; + this.onLinkClick = this.onLinkClick.bind(this); + this.onMenuButtonClick = this.onMenuButtonClick.bind(this); + this.onMenuUpdate = this.onMenuUpdate.bind(this); + } + + userEvent(event) { + this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ + event, + source: TOP_SITES_SOURCE, + action_position: this.props.index + })); + } + + onLinkClick(ev) { + this.userEvent("CLICK"); + } + + onMenuButtonClick(event) { + event.preventDefault(); + this.props.onActivate(this.props.index); + this.setState({ showContextMenu: true }); + } + + onMenuUpdate(showContextMenu) { + this.setState({ showContextMenu }); + } + + render() { + const { props } = this; + const { link } = props; + const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index; + const title = link.label || link.hostname; + return external__React__default.a.createElement( + TopSite_TopSiteLink, + _extends({}, props, { onClick: this.onLinkClick, onDragEvent: this.props.onDragEvent, className: isContextMenuOpen ? "active" : "", title: title }), + external__React__default.a.createElement( + "div", + null, + external__React__default.a.createElement( + "button", + { className: "context-menu-button icon", onClick: this.onMenuButtonClick }, + external__React__default.a.createElement( + "span", + { className: "sr-only" }, + external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "context_menu_button_sr", values: { title } }) + ) + ), + external__React__default.a.createElement(LinkMenu["a" /* LinkMenu */], { + dispatch: props.dispatch, + index: props.index, + onUpdate: this.onMenuUpdate, + options: TOP_SITES_CONTEXT_MENU_OPTIONS, + site: link, + source: TOP_SITES_SOURCE, + visible: isContextMenuOpen }) + ) + ); + } +} +TopSite_TopSite.defaultProps = { + link: {}, + onActivate() {} +}; + +class TopSite_TopSitePlaceholder extends external__React__default.a.PureComponent { + constructor(props) { + super(props); + this.onEditButtonClick = this.onEditButtonClick.bind(this); + } + + onEditButtonClick() { + this.props.dispatch({ type: Actions["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: this.props.index } }); + } + + render() { + return external__React__default.a.createElement( + TopSite_TopSiteLink, + _extends({ className: "placeholder", isDraggable: false }, this.props), + external__React__default.a.createElement("button", { className: "context-menu-button edit-button icon", + title: this.props.intl.formatMessage({ id: "edit_topsites_edit_button" }), + onClick: this.onEditButtonClick }) + ); + } +} + +class TopSite__TopSiteList extends external__React__default.a.PureComponent { + static get DEFAULT_STATE() { + return { + activeIndex: null, + draggedIndex: null, + draggedSite: null, + draggedTitle: null, + topSitesPreview: null + }; + } + + constructor(props) { + super(props); + this.state = TopSite__TopSiteList.DEFAULT_STATE; + this.onDragEvent = this.onDragEvent.bind(this); + this.onActivate = this.onActivate.bind(this); + } + + componentWillUpdate(nextProps) { + if (this.state.draggedSite) { + const prevTopSites = this.props.TopSites && this.props.TopSites.rows; + const newTopSites = nextProps.TopSites && nextProps.TopSites.rows; + if (prevTopSites && prevTopSites[this.state.draggedIndex] && prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url && (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) { + // We got the new order from the redux store via props. We can clear state now. + this.setState(TopSite__TopSiteList.DEFAULT_STATE); + } + } + } + + userEvent(event, index) { + this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ + event, + source: TOP_SITES_SOURCE, + action_position: index + })); + } + + onDragEvent(event, index, link, title) { + switch (event.type) { + case "dragstart": + this.dropped = false; + this.setState({ + draggedIndex: index, + draggedSite: link, + draggedTitle: title, + activeIndex: null + }); + this.userEvent("DRAG", index); + break; + case "dragend": + if (!this.dropped) { + // If there was no drop event, reset the state to the default. + this.setState(TopSite__TopSiteList.DEFAULT_STATE); + } + break; + case "dragenter": + if (index === this.state.draggedIndex) { + this.setState({ topSitesPreview: null }); + } else { + this.setState({ topSitesPreview: this._makeTopSitesPreview(index) }); + } + break; + case "drop": + if (index !== this.state.draggedIndex) { + this.dropped = true; + this.props.dispatch(Actions["a" /* actionCreators */].AlsoToMain({ + type: Actions["b" /* actionTypes */].TOP_SITES_INSERT, + data: { site: { url: this.state.draggedSite.url, label: this.state.draggedTitle }, index, draggedFromIndex: this.state.draggedIndex } + })); + this.userEvent("DROP", index); + } + break; + } + } + + _getTopSites() { + // Make a copy of the sites to truncate or extend to desired length + let topSites = this.props.TopSites.rows.slice(); + topSites.length = this.props.TopSitesRows * Reducers["a" /* TOP_SITES_MAX_SITES_PER_ROW */]; + return topSites; + } + + /** + * Make a preview of the topsites that will be the result of dropping the currently + * dragged site at the specified index. + */ + _makeTopSitesPreview(index) { + const topSites = this._getTopSites(); + topSites[this.state.draggedIndex] = null; + const pinnedOnly = topSites.map(site => site && site.isPinned ? site : null); + const unpinned = topSites.filter(site => site && !site.isPinned); + const siteToInsert = Object.assign({}, this.state.draggedSite, { isPinned: true }); + if (!pinnedOnly[index]) { + pinnedOnly[index] = siteToInsert; + } else { + // Find the hole to shift the pinned site(s) towards. We shift towards the + // hole left by the site being dragged. + let holeIndex = index; + const indexStep = index > this.state.draggedIndex ? -1 : 1; + while (pinnedOnly[holeIndex]) { + holeIndex += indexStep; + } + + // Shift towards the hole. + const shiftingStep = index > this.state.draggedIndex ? 1 : -1; + while (holeIndex !== index) { + const nextIndex = holeIndex + shiftingStep; + pinnedOnly[holeIndex] = pinnedOnly[nextIndex]; + holeIndex = nextIndex; + } + pinnedOnly[index] = siteToInsert; + } + + // Fill in the remaining holes with unpinned sites. + const preview = pinnedOnly; + for (let i = 0; i < preview.length; i++) { + if (!preview[i]) { + preview[i] = unpinned.shift() || null; + } + } + + return preview; + } + + onActivate(index) { + this.setState({ activeIndex: index }); + } + + render() { + const { props } = this; + const topSites = this.state.topSitesPreview || this._getTopSites(); + const topSitesUI = []; + const commonProps = { + onDragEvent: this.onDragEvent, + dispatch: props.dispatch, + intl: props.intl + }; + // We assign a key to each placeholder slot. We need it to be independent + // of the slot index (i below) so that the keys used stay the same during + // drag and drop reordering and the underlying DOM nodes are reused. + // This mostly (only?) affects linux so be sure to test on linux before changing. + let holeIndex = 0; + for (let i = 0, l = topSites.length; i < l; i++) { + const link = topSites[i]; + const slotProps = { + key: link ? link.url : holeIndex++, + index: i + }; + topSitesUI.push(!link ? external__React__default.a.createElement(TopSite_TopSitePlaceholder, _extends({}, slotProps, commonProps)) : external__React__default.a.createElement(TopSite_TopSite, _extends({ + link: link, + activeIndex: this.state.activeIndex, + onActivate: this.onActivate + }, slotProps, commonProps))); + } + return external__React__default.a.createElement( + "ul", + { className: `top-sites-list${this.state.draggedSite ? " dnd-active" : ""}` }, + topSitesUI + ); + } +} + +const TopSiteList = Object(external__ReactIntl_["injectIntl"])(TopSite__TopSiteList); +// CONCATENATED MODULE: ./system-addon/content-src/components/TopSites/TopSites.jsx + + + + + + + + + + + +/** + * Iterates through TopSites and counts types of images. + * @param acc Accumulator for reducer. + * @param topsite Entry in TopSites. + */ +function countTopSitesIconsTypes(topSites) { + const countTopSitesTypes = (acc, link) => { + if (link.tippyTopIcon || link.faviconRef === "tippytop") { + acc.tippytop++; + } else if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) { + acc.rich_icon++; + } else if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) { + acc.screenshot_with_icon++; + } else if (link.screenshot) { + acc.screenshot++; + } else { + acc.no_image++; + } + + return acc; + }; + + return topSites.reduce(countTopSitesTypes, { + "screenshot_with_icon": 0, + "screenshot": 0, + "tippytop": 0, + "rich_icon": 0, + "no_image": 0 + }); +} + +class TopSites__TopSites extends external__React__default.a.PureComponent { + constructor(props) { + super(props); + this.onAddButtonClick = this.onAddButtonClick.bind(this); + this.onFormClose = this.onFormClose.bind(this); + } + + /** + * Dispatch session statistics about the quality of TopSites icons and pinned count. + */ + _dispatchTopSitesStats() { + const topSites = this._getTopSites(); + const topSitesIconsStats = countTopSitesIconsTypes(topSites); + const topSitesPinned = topSites.filter(site => !!site.isPinned).length; + // Dispatch telemetry event with the count of TopSites images types. + this.props.dispatch(Actions["a" /* actionCreators */].AlsoToMain({ + type: Actions["b" /* actionTypes */].SAVE_SESSION_PERF_DATA, + data: { topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned } + })); + } + + /** + * Return the TopSites to display based on prefs. + */ + _getTopSites() { + return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * Reducers["a" /* TOP_SITES_MAX_SITES_PER_ROW */]); + } + + componentDidUpdate() { + this._dispatchTopSitesStats(); + } + + componentDidMount() { + this._dispatchTopSitesStats(); + } + + onAddButtonClick() { + this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ + source: TOP_SITES_SOURCE, + event: "TOP_SITES_ADD_FORM_OPEN" + })); + // Negative index will prepend the TopSite at the beginning of the list + this.props.dispatch({ type: Actions["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: -1 } }); + } + + onFormClose() { + this.props.dispatch(Actions["a" /* actionCreators */].UserEvent({ + source: TOP_SITES_SOURCE, + event: "TOP_SITES_EDIT_CLOSE" + })); + this.props.dispatch({ type: Actions["b" /* actionTypes */].TOP_SITES_CANCEL_EDIT }); + } + + render() { + const { props } = this; + const infoOption = { + header: { id: "settings_pane_topsites_header" }, + body: { id: "settings_pane_topsites_body" } + }; + const { editForm } = props.TopSites; + + return external__React__default.a.createElement( + ComponentPerfTimer["a" /* ComponentPerfTimer */], + { id: "topsites", initialized: props.TopSites.initialized, dispatch: props.dispatch }, + external__React__default.a.createElement( + CollapsibleSection["a" /* CollapsibleSection */], + { className: "top-sites", icon: "topsites", title: external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "header_top_sites" }), infoOption: infoOption, prefName: "collapseTopSites", Prefs: props.Prefs, dispatch: props.dispatch }, + external__React__default.a.createElement(TopSiteList, { TopSites: props.TopSites, TopSitesRows: props.TopSitesRows, dispatch: props.dispatch, intl: props.intl }), + external__React__default.a.createElement( + "div", + { className: "edit-topsites-wrapper" }, + external__React__default.a.createElement( + "div", + { className: "add-topsites-button" }, + external__React__default.a.createElement( + "button", + { + className: "add", + title: this.props.intl.formatMessage({ id: "edit_topsites_add_button_tooltip" }), + onClick: this.onAddButtonClick }, + external__React__default.a.createElement(external__ReactIntl_["FormattedMessage"], { id: "edit_topsites_add_button" }) + ) + ), + editForm && external__React__default.a.createElement( + "div", + { className: "edit-topsites" }, + external__React__default.a.createElement("div", { className: "modal-overlay", onClick: this.onFormClose }), + external__React__default.a.createElement( + "div", + { className: "modal" }, + external__React__default.a.createElement(TopSiteForm_TopSiteForm, { + site: props.TopSites.rows[editForm.index], + index: editForm.index, + onClose: this.onFormClose, + dispatch: this.props.dispatch, + intl: this.props.intl }) + ) + ) + ) + ) + ); + } +} + +const TopSites = Object(external__ReactRedux_["connect"])(state => ({ + TopSites: state.TopSites, + Prefs: state.Prefs, + TopSitesRows: state.Prefs.values.topSitesRows +}))(Object(external__ReactIntl_["injectIntl"])(TopSites__TopSites)); // CONCATENATED MODULE: ./system-addon/content-src/components/Base/Base.jsx @@ -2821,7 +3421,6 @@ var TopSites = __webpack_require__(19); - // Add the locale data for pluralization and relative-time formatting for now, // this just uses english locale data. We can make this more sophisticated if // more features are needed. @@ -2864,6 +3463,11 @@ class Base__Base extends external__React__default.a.PureComponent { const { props } = this; const { App, locale, strings } = props; const { initialized } = App; + const prefs = props.Prefs.values; + + const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]); + + const outerClassName = `outer-wrapper${shouldBeFixedToTop ? " fixed-to-top" : ""}`; if (!props.isPrerendered && !initialized) { return null; @@ -2873,9 +3477,22 @@ class Base__Base extends external__React__default.a.PureComponent { external__ReactIntl_["IntlProvider"], { locale: locale, messages: strings }, external__React__default.a.createElement( - ErrorBoundary["a" /* ErrorBoundary */], - { className: "base-content-fallback" }, - external__React__default.a.createElement(Base_BaseContent, this.props) + "div", + { className: outerClassName }, + external__React__default.a.createElement( + "main", + null, + prefs.showSearch && external__React__default.a.createElement(Search, null), + external__React__default.a.createElement( + "div", + { className: `body-wrapper${initialized ? " on" : ""}` }, + !prefs.migrationExpired && external__React__default.a.createElement(ManualMigration, null), + prefs.showTopSites && external__React__default.a.createElement(TopSites, null), + external__React__default.a.createElement(Sections["a" /* Sections */], null) + ), + external__React__default.a.createElement(ConfirmDialog, null) + ), + initialized && external__React__default.a.createElement(PreferencesPane, null) ) ); } @@ -2883,84 +3500,36 @@ class Base__Base extends external__React__default.a.PureComponent { /* unused harmony export _Base */ -class Base_BaseContent extends external__React__default.a.PureComponent { - render() { - const { props } = this; - const { App } = props; - const { initialized } = App; - const prefs = props.Prefs.values; - - const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]); - - const outerClassName = `outer-wrapper${shouldBeFixedToTop ? " fixed-to-top" : ""} ${prefs.enableWideLayout ? "wide-layout-enabled" : "wide-layout-disabled"}`; - - return external__React__default.a.createElement( - "div", - { className: outerClassName }, - external__React__default.a.createElement( - "main", - null, - prefs.showSearch && external__React__default.a.createElement( - ErrorBoundary["a" /* ErrorBoundary */], - null, - external__React__default.a.createElement(Search, null) - ), - external__React__default.a.createElement( - "div", - { className: `body-wrapper${initialized ? " on" : ""}` }, - !prefs.migrationExpired && external__React__default.a.createElement(ManualMigration, null), - prefs.showTopSites && external__React__default.a.createElement(TopSites["a" /* TopSites */], null), - external__React__default.a.createElement(Sections["a" /* Sections */], null) - ), - external__React__default.a.createElement(ConfirmDialog, null) - ), - initialized && external__React__default.a.createElement( - "div", - { className: "prefs-pane" }, - external__React__default.a.createElement( - ErrorBoundary["a" /* ErrorBoundary */], - { className: "sidebar" }, - " ", - external__React__default.a.createElement(PreferencesPane, null), - " " - ) - ) - ); - } -} -/* unused harmony export BaseContent */ - - const Base = Object(external__ReactRedux_["connect"])(state => ({ App: state.App, Prefs: state.Prefs }))(Base__Base); /* harmony export (immutable) */ __webpack_exports__["a"] = Base; /***/ }), -/* 15 */ +/* 13 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {const IS_NEWTAB = global.document && global.document.documentURI === "about:newtab"; /* harmony export (immutable) */ __webpack_exports__["a"] = IS_NEWTAB; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 16 */ +/* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_content_src_components_Card_Card__ = __webpack_require__(17); +/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_content_src_components_Card_Card__ = __webpack_require__(15); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__ = __webpack_require__(9); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__ = __webpack_require__(10); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__ = __webpack_require__(8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_redux__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_content_src_components_Topics_Topics__ = __webpack_require__(18); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_content_src_components_Topics_Topics__ = __webpack_require__(16); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -3174,10 +3743,10 @@ class _Sections extends __WEBPACK_IMPORTED_MODULE_6_react___default.a.PureCompon const Sections = Object(__WEBPACK_IMPORTED_MODULE_5_react_redux__["connect"])(state => ({ Sections: state.Sections, Prefs: state.Prefs }))(_Sections); /* harmony export (immutable) */ __webpack_exports__["a"] = Sections; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 17 */ +/* 15 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3209,7 +3778,7 @@ var external__ReactIntl_ = __webpack_require__(2); var external__ReactIntl__default = /*#__PURE__*/__webpack_require__.n(external__ReactIntl_); // EXTERNAL MODULE: ./system-addon/content-src/components/LinkMenu/LinkMenu.jsx + 2 modules -var LinkMenu = __webpack_require__(8); +var LinkMenu = __webpack_require__(6); // EXTERNAL MODULE: external "React" var external__React_ = __webpack_require__(1); @@ -3350,7 +3919,7 @@ class Card_Card extends external__React__default.a.PureComponent { { className: `card-outer${isContextMenuOpen ? " active" : ""}${props.placeholder ? " placeholder" : ""}` }, external__React__default.a.createElement( "a", - { href: link.url, onClick: !props.placeholder ? this.onLinkClick : undefined }, + { href: link.url, onClick: !props.placeholder && this.onLinkClick }, external__React__default.a.createElement( "div", { className: "card" }, @@ -3431,7 +4000,7 @@ const PlaceholderCard = () => external__React__default.a.createElement(Card_Card /***/ }), -/* 18 */ +/* 16 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -3487,793 +4056,12 @@ class Topics extends __WEBPACK_IMPORTED_MODULE_1_react___default.a.PureComponent /***/ }), -/* 19 */ +/* 17 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__ = __webpack_require__(9); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__ = __webpack_require__(10); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_redux__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_common_Reducers_jsm__ = __webpack_require__(6); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__TopSiteForm__ = __webpack_require__(20); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__TopSite__ = __webpack_require__(21); - - - - - - - - - - - -/** - * Iterates through TopSites and counts types of images. - * @param acc Accumulator for reducer. - * @param topsite Entry in TopSites. - */ -function countTopSitesIconsTypes(topSites) { - const countTopSitesTypes = (acc, link) => { - if (link.tippyTopIcon || link.faviconRef === "tippytop") { - acc.tippytop++; - } else if (link.faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["b" /* MIN_RICH_FAVICON_SIZE */]) { - acc.rich_icon++; - } else if (link.screenshot && link.faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["a" /* MIN_CORNER_FAVICON_SIZE */]) { - acc.screenshot_with_icon++; - } else if (link.screenshot) { - acc.screenshot++; - } else { - acc.no_image++; - } - - return acc; - }; - - return topSites.reduce(countTopSitesTypes, { - "screenshot_with_icon": 0, - "screenshot": 0, - "tippytop": 0, - "rich_icon": 0, - "no_image": 0 - }); -} - -class _TopSites extends __WEBPACK_IMPORTED_MODULE_6_react___default.a.PureComponent { - constructor(props) { - super(props); - this.onAddButtonClick = this.onAddButtonClick.bind(this); - this.onFormClose = this.onFormClose.bind(this); - } - - /** - * Dispatch session statistics about the quality of TopSites icons and pinned count. - */ - _dispatchTopSitesStats() { - const topSites = this._getVisibleTopSites(); - const topSitesIconsStats = countTopSitesIconsTypes(topSites); - const topSitesPinned = topSites.filter(site => !!site.isPinned).length; - // Dispatch telemetry event with the count of TopSites images types. - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ - type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].SAVE_SESSION_PERF_DATA, - data: { topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned } - })); - } - - /** - * Return the TopSites that are visible based on prefs and window width. - */ - _getVisibleTopSites() { - // We hide 2 sites per row when not in the wide layout. - let sitesPerRow = __WEBPACK_IMPORTED_MODULE_7_common_Reducers_jsm__["a" /* TOP_SITES_MAX_SITES_PER_ROW */]; - // $break-point-widest = 1072px (from _variables.scss) - if (!global.matchMedia(`(min-width: 1072px)`).matches) { - sitesPerRow -= 2; - } - return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow); - } - - componentDidUpdate() { - this._dispatchTopSitesStats(); - } - - componentDidMount() { - this._dispatchTopSitesStats(); - } - - onAddButtonClick() { - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ - source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], - event: "TOP_SITES_ADD_FORM_OPEN" - })); - // Negative index will prepend the TopSite at the beginning of the list - this.props.dispatch({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: -1 } }); - } - - onFormClose() { - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ - source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], - event: "TOP_SITES_EDIT_CLOSE" - })); - this.props.dispatch({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_CANCEL_EDIT }); - } - - render() { - const { props } = this; - const infoOption = { - header: { id: "settings_pane_topsites_header" }, - body: { id: "settings_pane_topsites_body" } - }; - const { editForm } = props.TopSites; - - return __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - __WEBPACK_IMPORTED_MODULE_4_content_src_components_ComponentPerfTimer_ComponentPerfTimer__["a" /* ComponentPerfTimer */], - { id: "topsites", initialized: props.TopSites.initialized, dispatch: props.dispatch }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - __WEBPACK_IMPORTED_MODULE_3_content_src_components_CollapsibleSection_CollapsibleSection__["a" /* CollapsibleSection */], - { className: "top-sites", icon: "topsites", title: __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "header_top_sites" }), infoOption: infoOption, prefName: "collapseTopSites", Prefs: props.Prefs, dispatch: props.dispatch }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_9__TopSite__["a" /* TopSiteList */], { TopSites: props.TopSites, TopSitesRows: props.TopSitesRows, dispatch: props.dispatch, intl: props.intl }), - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - "div", - { className: "edit-topsites-wrapper" }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - "div", - { className: "add-topsites-button" }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - "button", - { - className: "add", - title: this.props.intl.formatMessage({ id: "edit_topsites_add_button_tooltip" }), - onClick: this.onAddButtonClick }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "edit_topsites_add_button" }) - ) - ), - editForm && __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - "div", - { className: "edit-topsites" }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement("div", { className: "modal-overlay", onClick: this.onFormClose }), - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement( - "div", - { className: "modal" }, - __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_8__TopSiteForm__["a" /* TopSiteForm */], { - site: props.TopSites.rows[editForm.index], - index: editForm.index, - onClose: this.onFormClose, - dispatch: this.props.dispatch, - intl: this.props.intl }) - ) - ) - ) - ) - ); - } -} -/* unused harmony export _TopSites */ - - -const TopSites = Object(__WEBPACK_IMPORTED_MODULE_5_react_redux__["connect"])(state => ({ - TopSites: state.TopSites, - Prefs: state.Prefs, - TopSitesRows: state.Prefs.values.topSitesRows -}))(Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])(_TopSites)); -/* harmony export (immutable) */ __webpack_exports__["a"] = TopSites; - -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) - -/***/ }), -/* 20 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__TopSitesConstants__ = __webpack_require__(5); - - - - - -class TopSiteForm extends __WEBPACK_IMPORTED_MODULE_2_react___default.a.PureComponent { - constructor(props) { - super(props); - const { site } = props; - this.state = { - label: site ? site.label || site.hostname : "", - url: site ? site.url : "", - validationError: false - }; - this.onLabelChange = this.onLabelChange.bind(this); - this.onUrlChange = this.onUrlChange.bind(this); - this.onCancelButtonClick = this.onCancelButtonClick.bind(this); - this.onDoneButtonClick = this.onDoneButtonClick.bind(this); - this.onUrlInputMount = this.onUrlInputMount.bind(this); - } - - onLabelChange(event) { - this.resetValidation(); - this.setState({ "label": event.target.value }); - } - - onUrlChange(event) { - this.resetValidation(); - this.setState({ "url": event.target.value }); - } - - onCancelButtonClick(ev) { - ev.preventDefault(); - this.props.onClose(); - } - - onDoneButtonClick(ev) { - ev.preventDefault(); - - if (this.validateForm()) { - const site = { url: this.cleanUrl() }; - const { index } = this.props; - if (this.state.label !== "") { - site.label = this.state.label; - } - - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ - type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_PIN, - data: { site, index } - })); - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ - source: __WEBPACK_IMPORTED_MODULE_3__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], - event: "TOP_SITES_EDIT", - action_position: index - })); - - this.props.onClose(); - } - } - - cleanUrl() { - let { url } = this.state; - // If we are missing a protocol, prepend http:// - if (!url.startsWith("http:") && !url.startsWith("https:")) { - url = `http://${url}`; - } - return url; - } - - resetValidation() { - if (this.state.validationError) { - this.setState({ validationError: false }); - } - } - - validateUrl() { - try { - return !!new URL(this.cleanUrl()); - } catch (e) { - return false; - } - } - - validateForm() { - this.resetValidation(); - // Only the URL is required and must be valid. - if (!this.state.url || !this.validateUrl()) { - this.setState({ validationError: true }); - this.inputUrl.focus(); - return false; - } - return true; - } - - onUrlInputMount(input) { - this.inputUrl = input; - } - - render() { - // For UI purposes, editing without an existing link is "add" - const showAsAdd = !this.props.site; - - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "form", - { className: "topsite-form" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "section", - { className: "edit-topsites-inner-wrapper" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "div", - { className: "form-wrapper" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "h3", - { className: "section-title" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_header" : "topsites_form_edit_header" }) - ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "div", - { className: "field title" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("input", { - type: "text", - value: this.state.label, - onChange: this.onLabelChange, - placeholder: this.props.intl.formatMessage({ id: "topsites_form_title_placeholder" }) }) - ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "div", - { className: `field url${this.state.validationError ? " invalid" : ""}` }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement("input", { - type: "text", - ref: this.onUrlInputMount, - value: this.state.url, - onChange: this.onUrlChange, - placeholder: this.props.intl.formatMessage({ id: "topsites_form_url_placeholder" }) }), - this.state.validationError && __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "aside", - { className: "error-tooltip" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "topsites_form_url_validation" }) - ) - ) - ) - ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "section", - { className: "actions" }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "button", - { className: "cancel", type: "button", onClick: this.onCancelButtonClick }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "topsites_form_cancel_button" }) - ), - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - "button", - { className: "done", type: "submit", onClick: this.onDoneButtonClick }, - __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: showAsAdd ? "topsites_form_add_button" : "topsites_form_save_button" }) - ) - ) - ); - } -} -/* harmony export (immutable) */ __webpack_exports__["a"] = TopSiteForm; - - -TopSiteForm.defaultProps = { - TopSite: null, - index: -1 -}; - -/***/ }), -/* 21 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_intl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_intl__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_content_src_components_LinkMenu_LinkMenu__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_common_Reducers_jsm__ = __webpack_require__(6); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - - - - - - - - -class TopSiteLink extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { - constructor(props) { - super(props); - this.onDragEvent = this.onDragEvent.bind(this); - } - - /* - * Helper to determine whether the drop zone should allow a drop. We only allow - * dropping top sites for now. - */ - _allowDrop(e) { - return e.dataTransfer.types.includes("text/topsite-index"); - } - - onDragEvent(event) { - switch (event.type) { - case "click": - // Stop any link clicks if we started any dragging - if (this.dragged) { - event.preventDefault(); - } - break; - case "dragstart": - this.dragged = true; - event.dataTransfer.effectAllowed = "move"; - event.dataTransfer.setData("text/topsite-index", this.props.index); - event.target.blur(); - this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title); - break; - case "dragend": - this.props.onDragEvent(event); - break; - case "dragenter": - case "dragover": - case "drop": - if (this._allowDrop(event)) { - event.preventDefault(); - this.props.onDragEvent(event, this.props.index); - } - break; - case "mousedown": - // Reset at the first mouse event of a potential drag - this.dragged = false; - break; - } - } - - render() { - const { children, className, isDraggable, link, onClick, title } = this.props; - const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : ""}${link.isDragged ? " dragged" : ""}`; - const { tippyTopIcon, faviconSize } = link; - const [letterFallback] = title; - let imageClassName; - let imageStyle; - let showSmallFavicon = false; - let smallFaviconStyle; - let smallFaviconFallback; - if (tippyTopIcon || faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["b" /* MIN_RICH_FAVICON_SIZE */]) { - // styles and class names for top sites with rich icons - imageClassName = "top-site-icon rich-icon"; - imageStyle = { - backgroundColor: link.backgroundColor, - backgroundImage: `url(${tippyTopIcon || link.favicon})` - }; - } else { - // styles and class names for top sites with screenshot + small icon in top left corner - imageClassName = `screenshot${link.screenshot ? " active" : ""}`; - imageStyle = { backgroundImage: link.screenshot ? `url(${link.screenshot})` : "none" }; - - // only show a favicon in top left if it's greater than 16x16 - if (faviconSize >= __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["a" /* MIN_CORNER_FAVICON_SIZE */]) { - showSmallFavicon = true; - smallFaviconStyle = { backgroundImage: `url(${link.favicon})` }; - } else if (link.screenshot) { - // Don't show a small favicon if there is no screenshot, because that - // would result in two fallback icons - showSmallFavicon = true; - smallFaviconFallback = true; - } - } - let draggableProps = {}; - if (isDraggable) { - draggableProps = { - onClick: this.onDragEvent, - onDragEnd: this.onDragEvent, - onDragStart: this.onDragEvent, - onMouseDown: this.onDragEvent - }; - } - return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "li", - _extends({ className: topSiteOuterClassName, onDrop: this.onDragEvent, onDragOver: this.onDragEvent, onDragEnter: this.onDragEvent, onDragLeave: this.onDragEvent }, draggableProps), - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "div", - { className: "top-site-inner" }, - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "a", - { href: link.url, onClick: onClick }, - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "div", - { className: "tile", "aria-hidden": true, "data-fallback": letterFallback }, - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("div", { className: imageClassName, style: imageStyle }), - showSmallFavicon && __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("div", { - className: "top-site-icon default-icon", - "data-fallback": smallFaviconFallback && letterFallback, - style: smallFaviconStyle }) - ), - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "div", - { className: `title ${link.isPinned ? "pinned" : ""}` }, - link.isPinned && __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("div", { className: "icon icon-pin-small" }), - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "span", - { dir: "auto" }, - title - ) - ) - ), - children - ) - ); - } -} -/* unused harmony export TopSiteLink */ - -TopSiteLink.defaultProps = { - title: "", - link: {}, - isDraggable: true -}; - -class TopSite extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { - constructor(props) { - super(props); - this.state = { showContextMenu: false }; - this.onLinkClick = this.onLinkClick.bind(this); - this.onMenuButtonClick = this.onMenuButtonClick.bind(this); - this.onMenuUpdate = this.onMenuUpdate.bind(this); - } - - userEvent(event) { - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ - event, - source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], - action_position: this.props.index - })); - } - - onLinkClick(ev) { - this.userEvent("CLICK"); - } - - onMenuButtonClick(event) { - event.preventDefault(); - this.props.onActivate(this.props.index); - this.setState({ showContextMenu: true }); - } - - onMenuUpdate(showContextMenu) { - this.setState({ showContextMenu }); - } - - render() { - const { props } = this; - const { link } = props; - const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index; - const title = link.label || link.hostname; - return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - TopSiteLink, - _extends({}, props, { onClick: this.onLinkClick, onDragEvent: this.props.onDragEvent, className: `${props.className || ""}${isContextMenuOpen ? " active" : ""}`, title: title }), - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "div", - null, - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "button", - { className: "context-menu-button icon", onClick: this.onMenuButtonClick }, - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "span", - { className: "sr-only" }, - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1_react_intl__["FormattedMessage"], { id: "context_menu_button_sr", values: { title } }) - ) - ), - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_3_content_src_components_LinkMenu_LinkMenu__["a" /* LinkMenu */], { - dispatch: props.dispatch, - index: props.index, - onUpdate: this.onMenuUpdate, - options: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["c" /* TOP_SITES_CONTEXT_MENU_OPTIONS */], - site: link, - source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], - visible: isContextMenuOpen }) - ) - ); - } -} -/* unused harmony export TopSite */ - -TopSite.defaultProps = { - link: {}, - onActivate() {} -}; - -class TopSitePlaceholder extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { - constructor(props) { - super(props); - this.onEditButtonClick = this.onEditButtonClick.bind(this); - } - - onEditButtonClick() { - this.props.dispatch({ type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_EDIT, data: { index: this.props.index } }); - } - - render() { - return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - TopSiteLink, - _extends({}, this.props, { className: `placeholder ${this.props.className || ""}`, isDraggable: false }), - __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement("button", { className: "context-menu-button edit-button icon", - title: this.props.intl.formatMessage({ id: "edit_topsites_edit_button" }), - onClick: this.onEditButtonClick }) - ); - } -} -/* unused harmony export TopSitePlaceholder */ - - -class _TopSiteList extends __WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent { - static get DEFAULT_STATE() { - return { - activeIndex: null, - draggedIndex: null, - draggedSite: null, - draggedTitle: null, - topSitesPreview: null - }; - } - - constructor(props) { - super(props); - this.state = _TopSiteList.DEFAULT_STATE; - this.onDragEvent = this.onDragEvent.bind(this); - this.onActivate = this.onActivate.bind(this); - } - - componentWillReceiveProps(nextProps) { - if (this.state.draggedSite) { - const prevTopSites = this.props.TopSites && this.props.TopSites.rows; - const newTopSites = nextProps.TopSites && nextProps.TopSites.rows; - if (prevTopSites && prevTopSites[this.state.draggedIndex] && prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url && (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) { - // We got the new order from the redux store via props. We can clear state now. - this.setState(_TopSiteList.DEFAULT_STATE); - } - } - } - - userEvent(event, index) { - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].UserEvent({ - event, - source: __WEBPACK_IMPORTED_MODULE_2__TopSitesConstants__["d" /* TOP_SITES_SOURCE */], - action_position: index - })); - } - - onDragEvent(event, index, link, title) { - switch (event.type) { - case "dragstart": - this.dropped = false; - this.setState({ - draggedIndex: index, - draggedSite: link, - draggedTitle: title, - activeIndex: null - }); - this.userEvent("DRAG", index); - break; - case "dragend": - if (!this.dropped) { - // If there was no drop event, reset the state to the default. - this.setState(_TopSiteList.DEFAULT_STATE); - } - break; - case "dragenter": - if (index === this.state.draggedIndex) { - this.setState({ topSitesPreview: null }); - } else { - this.setState({ topSitesPreview: this._makeTopSitesPreview(index) }); - } - break; - case "drop": - if (index !== this.state.draggedIndex) { - this.dropped = true; - this.props.dispatch(__WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["a" /* actionCreators */].AlsoToMain({ - type: __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__["b" /* actionTypes */].TOP_SITES_INSERT, - data: { site: { url: this.state.draggedSite.url, label: this.state.draggedTitle }, index, draggedFromIndex: this.state.draggedIndex } - })); - this.userEvent("DROP", index); - } - break; - } - } - - _getTopSites() { - // Make a copy of the sites to truncate or extend to desired length - let topSites = this.props.TopSites.rows.slice(); - topSites.length = this.props.TopSitesRows * __WEBPACK_IMPORTED_MODULE_5_common_Reducers_jsm__["a" /* TOP_SITES_MAX_SITES_PER_ROW */]; - return topSites; - } - - /** - * Make a preview of the topsites that will be the result of dropping the currently - * dragged site at the specified index. - */ - _makeTopSitesPreview(index) { - const topSites = this._getTopSites(); - topSites[this.state.draggedIndex] = null; - const pinnedOnly = topSites.map(site => site && site.isPinned ? site : null); - const unpinned = topSites.filter(site => site && !site.isPinned); - const siteToInsert = Object.assign({}, this.state.draggedSite, { isPinned: true, isDragged: true }); - if (!pinnedOnly[index]) { - pinnedOnly[index] = siteToInsert; - } else { - // Find the hole to shift the pinned site(s) towards. We shift towards the - // hole left by the site being dragged. - let holeIndex = index; - const indexStep = index > this.state.draggedIndex ? -1 : 1; - while (pinnedOnly[holeIndex]) { - holeIndex += indexStep; - } - - // Shift towards the hole. - const shiftingStep = index > this.state.draggedIndex ? 1 : -1; - while (holeIndex !== index) { - const nextIndex = holeIndex + shiftingStep; - pinnedOnly[holeIndex] = pinnedOnly[nextIndex]; - holeIndex = nextIndex; - } - pinnedOnly[index] = siteToInsert; - } - - // Fill in the remaining holes with unpinned sites. - const preview = pinnedOnly; - for (let i = 0; i < preview.length; i++) { - if (!preview[i]) { - preview[i] = unpinned.shift() || null; - } - } - - return preview; - } - - onActivate(index) { - this.setState({ activeIndex: index }); - } - - render() { - const { props } = this; - const topSites = this.state.topSitesPreview || this._getTopSites(); - const topSitesUI = []; - const commonProps = { - onDragEvent: this.onDragEvent, - dispatch: props.dispatch, - intl: props.intl - }; - // We assign a key to each placeholder slot. We need it to be independent - // of the slot index (i below) so that the keys used stay the same during - // drag and drop reordering and the underlying DOM nodes are reused. - // This mostly (only?) affects linux so be sure to test on linux before changing. - let holeIndex = 0; - - // On narrow viewports, we only show 6 sites per row. We'll mark the rest as - // .hide-for-narrow to hide in CSS via @media query. - const maxNarrowVisibleIndex = props.TopSitesRows * 6; - - for (let i = 0, l = topSites.length; i < l; i++) { - const link = topSites[i]; - const slotProps = { - key: link ? link.url : holeIndex++, - index: i - }; - if (i >= maxNarrowVisibleIndex) { - slotProps.className = "hide-for-narrow"; - } - topSitesUI.push(!link ? __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(TopSitePlaceholder, _extends({}, slotProps, commonProps)) : __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(TopSite, _extends({ - link: link, - activeIndex: this.state.activeIndex, - onActivate: this.onActivate - }, slotProps, commonProps))); - } - return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement( - "ul", - { className: `top-sites-list${this.state.draggedSite ? " dnd-active" : ""}` }, - topSitesUI - ); - } -} -/* unused harmony export _TopSiteList */ - - -const TopSiteList = Object(__WEBPACK_IMPORTED_MODULE_1_react_intl__["injectIntl"])(_TopSiteList); -/* harmony export (immutable) */ __webpack_exports__["a"] = TopSiteList; - - -/***/ }), -/* 22 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(11); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_PerfService_jsm__ = __webpack_require__(9); @@ -4340,16 +4128,16 @@ class DetectUserSessionStart { } /* harmony export (immutable) */ __webpack_exports__["a"] = DetectUserSessionStart; -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 23 */ +/* 18 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (immutable) */ __webpack_exports__["a"] = initStore; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_Actions_jsm__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_redux__ = __webpack_require__(24); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_redux__ = __webpack_require__(19); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_redux__); /* eslint-env mozilla/frame-script */ @@ -4498,20 +4286,19 @@ function initStore(reducers, initialState) { return store; } -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3))) +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(4))) /***/ }), -/* 24 */ +/* 19 */ /***/ (function(module, exports) { module.exports = Redux; /***/ }), -/* 25 */ +/* 20 */ /***/ (function(module, exports) { module.exports = ReactDOM; /***/ }) -/******/ ]); -//# sourceMappingURL=activity-stream.bundle.js.map \ No newline at end of file +/******/ ]); \ No newline at end of file diff --git a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map deleted file mode 100644 index 1e75cc550272..000000000000 --- a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap c8b6b3c95425ced9cdc8","webpack:///./system-addon/common/Actions.jsm","webpack:///external \"React\"","webpack:///external \"ReactIntl\"","webpack:///(webpack)/buildin/global.js","webpack:///external \"ReactRedux\"","webpack:///./system-addon/content-src/components/TopSites/TopSitesConstants.js","webpack:///./system-addon/common/Dedupe.jsm","webpack:///./system-addon/common/Reducers.jsm","webpack:///./system-addon/content-src/components/ErrorBoundary/ErrorBoundary.jsx","webpack:///./system-addon/content-src/components/ContextMenu/ContextMenu.jsx","webpack:///./system-addon/content-src/lib/link-menu-options.js","webpack:///./system-addon/content-src/components/LinkMenu/LinkMenu.jsx","webpack:///./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx","webpack:///./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","webpack:///./system-addon/common/PerfService.jsm","webpack:///./system-addon/content-src/activity-stream.jsx","webpack:///./system-addon/content-src/lib/snippets.js","webpack:///./system-addon/content-src/components/ConfirmDialog/ConfirmDialog.jsx","webpack:///./system-addon/content-src/components/ManualMigration/ManualMigration.jsx","webpack:///./system-addon/content-src/components/PreferencesPane/PreferencesPane.jsx","webpack:///./system-addon/common/PrerenderData.jsm","webpack:///./system-addon/content-src/components/Search/Search.jsx","webpack:///./system-addon/content-src/components/Base/Base.jsx","webpack:///./system-addon/content-src/lib/constants.js","webpack:///./system-addon/content-src/components/Sections/Sections.jsx","webpack:///./system-addon/content-src/components/Card/types.js","webpack:///./system-addon/content-src/components/Card/Card.jsx","webpack:///./system-addon/content-src/components/Topics/Topics.jsx","webpack:///./system-addon/content-src/components/TopSites/TopSites.jsx","webpack:///./system-addon/content-src/components/TopSites/TopSiteForm.jsx","webpack:///./system-addon/content-src/components/TopSites/TopSite.jsx","webpack:///./system-addon/content-src/lib/detect-user-session-start.js","webpack:///./system-addon/content-src/lib/init-store.js","webpack:///external \"Redux\"","webpack:///external \"ReactDOM\""],"names":["globalImportContext","Window","BACKGROUND_PROCESS","UI_CODE","actionTypes","type","_RouteMessage","action","options","meta","Object","assign","from","to","Error","forEach","o","AlsoToMain","fromTarget","skipLocal","CONTENT_MESSAGE_TYPE","MAIN_MESSAGE_TYPE","OnlyToMain","BroadcastToContent","AlsoToOneContent","target","skipMain","toTarget","OnlyToOneContent","AlsoToPreloaded","PRELOAD_MESSAGE_TYPE","UserEvent","data","TELEMETRY_USER_EVENT","UndesiredEvent","importContext","TELEMETRY_UNDESIRED_EVENT","PerfEvent","TELEMETRY_PERFORMANCE_EVENT","ImpressionStats","TELEMETRY_IMPRESSION_STATS","SetPref","name","value","SET_PREF","WebExtEvent","source","isSendToMain","isBroadcastToContent","isSendToOneContent","isSendToPreloaded","isFromMain","getPortIdOfSender","TOP_SITES_SOURCE","TOP_SITES_CONTEXT_MENU_OPTIONS","MIN_RICH_FAVICON_SIZE","MIN_CORNER_FAVICON_SIZE","Dedupe","constructor","createKey","defaultCreateKey","item","group","groups","globalKeys","Set","result","values","valueMap","Map","key","has","set","push","add","map","m","Array","TOP_SITES_DEFAULT_ROWS","TOP_SITES_MAX_SITES_PER_ROW","dedupe","site","url","INITIAL_STATE","App","initialized","version","Snippets","TopSites","rows","editForm","Prefs","Dialog","visible","Sections","PreferencesPane","prevState","at","INIT","insertPinned","links","pinned","pinnedUrls","link","newLinks","filter","includes","isPinned","pinIndex","val","index","length","splice","hasMatch","newRows","TOP_SITES_UPDATED","TOP_SITES_EDIT","TOP_SITES_CANCEL_EDIT","SCREENSHOT_UPDATED","row","screenshot","PLACES_BOOKMARK_ADDED","bookmarkGuid","bookmarkTitle","dateAdded","bookmarkDateCreated","PLACES_BOOKMARK_REMOVED","newSite","DIALOG_OPEN","DIALOG_CANCEL","DELETE_HISTORY_URL","newValues","PREFS_INITIAL_VALUES","PREF_CHANGED","newState","SECTION_DEREGISTER","section","id","SECTION_REGISTER","order","undefined","findIndex","title","enabled","SECTION_UPDATE","dedupeConfigurations","dedupeConf","dedupedRows","dedupeFrom","reduce","dedupeSectionId","dedupeSection","find","s","SECTION_UPDATE_CARD","card","PLACES_LINKS_DELETED","PLACES_LINK_BLOCKED","SNIPPETS_DATA","SNIPPETS_RESET","SETTINGS_OPEN","SETTINGS_CLOSE","ErrorBoundaryFallback","React","PureComponent","props","windowObj","window","onClick","bind","location","reload","render","defaultClass","className","defaultProps","ErrorBoundary","state","hasError","componentDidCatch","error","info","setState","children","FallbackComponent","hideContext","onUpdate","componentWillMount","componentDidUpdate","prevProps","setTimeout","addEventListener","removeEventListener","componentWillUnmount","option","i","onKeyDown","event","shiftKey","first","last","icon","label","LinkMenuOptions","Separator","RemoveBookmark","ac","DELETE_BOOKMARK_BY_ID","userEvent","AddBookmark","BOOKMARK_URL","OpenInNewWindow","OPEN_NEW_WINDOW","referrer","OpenInPrivateWindow","OPEN_PRIVATE_WINDOW","BlockUrl","eventSource","BLOCK_URL","impression","block","tiles","guid","pos","WebExtDismiss","string_id","WEBEXT_DISMISS","action_position","DeleteUrl","onConfirm","forceBlock","body_string_id","confirm_button_string_id","cancel_button_string_id","PinTopSite","TOP_SITES_PIN","UnpinTopSite","TOP_SITES_UNPIN","SaveToPocket","SAVE_TO_POCKET","pocket","EditTopSite","CheckBookmark","CheckPinTopSite","DEFAULT_SITE_MENU_OPTIONS","getOptions","propOptions","isDefault","intl","formatMessage","dispatch","shouldSendImpressionStats","LinkMenu","injectIntl","VISIBLE","VISIBILITY_CHANGE_EVENT","getFormattedMessage","message","getCollapsed","prefName","Info","onInfoEnter","onInfoLeave","onManageClick","infoActive","_setInfoState","nextActive","relatedTarget","currentTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINS","infoOption","infoOptionIconA11yAttrs","sectionInfoTitle","header","body","href","InfoIntl","Disclaimer","onAcknowledge","disclaimerPref","disclaimer","text","button","DisclaimerIntl","_CollapsibleSection","onBodyMount","onHeaderClick","onTransitionEnd","enableOrDisableAnimation","enableAnimation","isAnimating","document","componentWillUpdate","nextProps","sectionBody","scrollHeight","visibilityState","node","maxHeight","renderIcon","startsWith","backgroundImage","isCollapsible","isCollapsed","needsDisclaimer","global","CollapsibleSection","RECORDED_SECTIONS","ComponentPerfTimer","Component","perfSvc","_sendBadStateEvent","_sendPaintedEvent","_reportMissingData","_timestampHandled","_recordedFirstRender","componentDidMount","_maybeSendPaintedEvent","_afterFramePaint","callback","requestAnimationFrame","_maybeSendBadStateEvent","_ensureFirstRenderTsRecorded","mark","dataReadyKey","firstRenderKey","parseInt","getMostRecentAbsMarkStartByName","SAVE_SESSION_PERF_DATA","ex","ChromeUtils","import","usablePerfObj","Services","appShell","hiddenDOMWindow","performance","now","_PerfService","performanceObj","_perf","prototype","str","getEntriesByName","timeOrigin","absNow","entries","mostRecentEntry","startTime","store","initStore","gActivityStreamPrerenderedState","sendEventOrAddListener","NEW_TAB_STATE_REQUEST","ReactDOM","hydrate","documentElement","lang","gActivityStreamStrings","getElementById","addSnippetsSubscriber","DATABASE_NAME","DATABASE_VERSION","SNIPPETS_OBJECTSTORE_NAME","SNIPPETS_UPDATE_INTERVAL_MS","SNIPPETS_ENABLED_EVENT","SNIPPETS_DISABLED_EVENT","SnippetsMap","_db","_dispatch","_dbTransaction","db","put","delete","clear","blockList","get","blockSnippetById","SNIPPETS_BLOCKLIST_UPDATED","disableOnboarding","DISABLE_ONBOARDING","showFirefoxAccounts","SHOW_FIREFOX_ACCOUNTS","connect","_openDB","_restoreFromDb","modifier","Promise","resolve","reject","transaction","objectStore","onsuccess","onerror","openRequest","indexedDB","open","deleteDatabase","onupgradeneeded","objectStoreNames","contains","createObjectStore","err","console","onversionchange","versionChangeEvent","close","cursorRequest","openCursor","cursor","continue","SnippetsProvider","gSnippetsMap","_onAction","snippetsMap","_refreshSnippets","cachedVersion","appData","lastUpdate","needsUpdate","Date","snippetsURL","response","fetch","status","payload","e","_noSnippetFallback","_forceOnboardingVisibility","shouldBeVisible","onboardingEl","style","display","_showRemoteSnippets","snippetsEl","elementId","innerHTML","scriptEl","getElementsByTagName","relocatedScript","createElement","parentNode","replaceChild","msg","SNIPPET_BLOCKED","init","addMessageListener","keys","dispatchEvent","Event","uninit","removeMessageListener","snippets","initializing","subscribe","getState","disableSnippets","_handleCancelBtn","_handleConfirmBtn","_renderModalMessage","message_body","ConfirmDialog","onLaunchTour","onCancelTour","MIGRATION_START","MIGRATION_CANCEL","ManualMigration","PreferencesInput","disabled","onChange","labelClassName","titleString","descString","Children","child","handleClickOutside","handlePrefChange","handleSectionChange","togglePane","onWrapperMount","isSidebarOpen","wrapper","checked","SECTION_ENABLE","SECTION_DISABLE","prefs","sections","isVisible","showSearch","showTopSites","topSitesRows","shouldHidePref","pref","feed","nestedPrefs","nestedPref","_PrerenderData","initialPrefs","initialSections","_setValidation","validation","_validation","invalidatingPrefs","_invalidatingPrefs","next","oneOf","concat","arePrefsValid","getPref","some","provider","onInputMount","handleEvent","detail","gContentSearchController","search","input","healthReportKey","IS_NEWTAB","searchSource","ContentSearchUIController","Search","addLocaleDataForReactIntl","locale","addLocaleData","parentLocale","sendNewTabRehydrated","isPrerendered","PAGE_PRERENDERED","renderNotified","NEW_TAB_REHYDRATED","strings","shouldBeFixedToTop","PrerenderData","outerClassName","enableWideLayout","migrationExpired","Base","documentURI","CARDS_PER_ROW","Section","_dispatchImpressionStats","maxCards","maxRows","cards","slice","needsImpressionStats","impressionCardGuids","sendImpressionStatsOrAddListener","_onVisibilityChange","isCollapsedPref","wasCollapsed","numberOfPlaceholders","items","remainder","emptyState","contextMenuOptions","shouldShowTopics","topics","realRows","placeholders","shouldShowEmptyState","padding","isWebExtension","_","read_more_endpoint","SectionIntl","_Sections","cardContextTypes","history","intlID","bookmark","trending","gImageLoading","activeCard","imageLoaded","showContextMenu","onMenuButtonClick","onMenuUpdate","onLinkClick","maybeLoadImage","image","loaderPromise","loader","Image","src","catch","then","preventDefault","altKey","ctrlKey","metaKey","OPEN_LINK","WEBEXT_CLICK","click","componentWillReceiveProps","isContextMenuOpen","hasImage","imageStyle","placeholder","hostname","description","join","context","Card","PlaceholderCard","Topic","Topics","t","countTopSitesIconsTypes","topSites","countTopSitesTypes","acc","tippyTopIcon","faviconRef","tippytop","faviconSize","rich_icon","screenshot_with_icon","no_image","_TopSites","onAddButtonClick","onFormClose","_dispatchTopSitesStats","_getVisibleTopSites","topSitesIconsStats","topSitesPinned","topsites_icon_stats","topsites_pinned","sitesPerRow","matchMedia","matches","TopSitesRows","TopSiteForm","validationError","onLabelChange","onUrlChange","onCancelButtonClick","onDoneButtonClick","onUrlInputMount","resetValidation","ev","onClose","validateForm","cleanUrl","validateUrl","URL","inputUrl","focus","showAsAdd","TopSite","TopSiteLink","onDragEvent","_allowDrop","dataTransfer","types","dragged","effectAllowed","setData","blur","isDraggable","topSiteOuterClassName","isDragged","letterFallback","imageClassName","showSmallFavicon","smallFaviconStyle","smallFaviconFallback","backgroundColor","favicon","draggableProps","onDragEnd","onDragStart","onMouseDown","onActivate","activeIndex","TopSitePlaceholder","onEditButtonClick","_TopSiteList","DEFAULT_STATE","draggedIndex","draggedSite","draggedTitle","topSitesPreview","prevTopSites","newTopSites","dropped","_makeTopSitesPreview","TOP_SITES_INSERT","draggedFromIndex","_getTopSites","pinnedOnly","unpinned","siteToInsert","holeIndex","indexStep","shiftingStep","nextIndex","preview","shift","topSitesUI","commonProps","maxNarrowVisibleIndex","l","slotProps","TopSiteList","DetectUserSessionStart","_store","_perfService","perfService","_sendEvent","visibility_event_rcvd_ts","MERGE_STORE_ACTION","OUTGOING_MESSAGE_NAME","INCOMING_MESSAGE_NAME","EARLY_QUEUED_ACTIONS","mergeStateReducer","mainReducer","messageMiddleware","au","sendAsyncMessage","rehydrationMiddleware","_didRehydrate","isMergeStoreAction","isRehydrationRequest","_didRequestInitialState","queueEarlyMessageMiddleware","_receivedFromMain","_earlyActionQueue","reducers","initialState","createStore","combineReducers","applyMiddleware","dump","JSON","stringify","stack"],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;AC7DA;AAAA;;;AAGA;;wBAEyB,qB;2BACG,wB;2BACA,iC;cACb,C;yBACW,C;;AAE1B;;;;;;AAKA,MAAMA,sBAAsB,OAAOC,MAAP,KAAkB,WAAlB,GAAgCC,kBAAhC,GAAqDC,OAAjF;AAAA;AAAA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAMC,cAAc,EAApB;AAAA;AAAA;;AACA,KAAK,MAAMC,IAAX,IAAmB,CACjB,WADiB,EAEjB,cAFiB,EAGjB,uBAHiB,EAIjB,oBAJiB,EAKjB,4BALiB,EAMjB,eANiB,EAOjB,aAPiB,EAQjB,oBARiB,EASjB,MATiB,EAUjB,kBAViB,EAWjB,qBAXiB,EAYjB,iBAZiB,EAajB,cAbiB,EAcjB,uBAdiB,EAejB,cAfiB,EAgBjB,oBAhBiB,EAiBjB,uBAjBiB,EAkBjB,gBAlBiB,EAmBjB,WAnBiB,EAoBjB,iBApBiB,EAqBjB,qBArBiB,EAsBjB,kBAtBiB,EAuBjB,uBAvBiB,EAwBjB,yBAxBiB,EAyBjB,yBAzBiB,EA0BjB,wBA1BiB,EA2BjB,sBA3BiB,EA4BjB,qBA5BiB,EA6BjB,sBA7BiB,EA8BjB,cA9BiB,EA+BjB,mBA/BiB,EAgCjB,wBAhCiB,EAiCjB,gBAjCiB,EAkCjB,oBAlCiB,EAmCjB,oBAnCiB,EAoCjB,iBApCiB,EAqCjB,gBArCiB,EAsCjB,yBAtCiB,EAuCjB,kBAvCiB,EAwCjB,gBAxCiB,EAyCjB,qBAzCiB,EA0CjB,gBA1CiB,EA2CjB,eA3CiB,EA4CjB,UA5CiB,EA6CjB,uBA7CiB,EA8CjB,4BA9CiB,EA+CjB,eA/CiB,EAgDjB,gBAhDiB,EAiDjB,iBAjDiB,EAkDjB,aAlDiB,EAmDjB,4BAnDiB,EAoDjB,6BApDiB,EAqDjB,2BArDiB,EAsDjB,sBAtDiB,EAuDjB,uBAvDiB,EAwDjB,gBAxDiB,EAyDjB,kBAzDiB,EA0DjB,eA1DiB,EA2DjB,iBA3DiB,EA4DjB,mBA5DiB,EA6DjB,QA7DiB,EA8DjB,cA9DiB,EA+DjB,gBA/DiB,CAAnB,EAgEG;AACDD,cAAYC,IAAZ,IAAoBA,IAApB;AACD;;AAED;AACA;AACA,SAASC,aAAT,CAAuBC,MAAvB,EAA+BC,OAA/B,EAAwC;AACtC,QAAMC,OAAOF,OAAOE,IAAP,GAAcC,OAAOC,MAAP,CAAc,EAAd,EAAkBJ,OAAOE,IAAzB,CAAd,GAA+C,EAA5D;AACA,MAAI,CAACD,OAAD,IAAY,CAACA,QAAQI,IAArB,IAA6B,CAACJ,QAAQK,EAA1C,EAA8C;AAC5C,UAAM,IAAIC,KAAJ,CAAU,gHAAV,CAAN;AACD;AACD;AACA;AACA,GAAC,MAAD,EAAS,IAAT,EAAe,UAAf,EAA2B,YAA3B,EAAyC,UAAzC,EAAqD,WAArD,EAAkEC,OAAlE,CAA0EC,KAAK;AAC7E,QAAI,OAAOR,QAAQQ,CAAR,CAAP,KAAsB,WAA1B,EAAuC;AACrCP,WAAKO,CAAL,IAAUR,QAAQQ,CAAR,CAAV;AACD,KAFD,MAEO,IAAIP,KAAKO,CAAL,CAAJ,EAAa;AAClB,aAAOP,KAAKO,CAAL,CAAP;AACD;AACF,GAND;AAOA,SAAON,OAAOC,MAAP,CAAc,EAAd,EAAkBJ,MAAlB,EAA0B,EAACE,IAAD,EAA1B,CAAP;AACD;;AAED;;;;;;;;;AASA,SAASQ,UAAT,CAAoBV,MAApB,EAA4BW,UAA5B,EAAwCC,SAAxC,EAAmD;AACjD,SAAOb,cAAcC,MAAd,EAAsB;AAC3BK,UAAMQ,oBADqB;AAE3BP,QAAIQ,iBAFuB;AAG3BH,cAH2B;AAI3BC;AAJ2B,GAAtB,CAAP;AAMD;;AAED;;;;;;;;AAQA,SAASG,UAAT,CAAoBf,MAApB,EAA4BW,UAA5B,EAAwC;AACtC,SAAOD,WAAWV,MAAX,EAAmBW,UAAnB,EAA+B,IAA/B,CAAP;AACD;;AAED;;;;;;AAMA,SAASK,kBAAT,CAA4BhB,MAA5B,EAAoC;AAClC,SAAOD,cAAcC,MAAd,EAAsB;AAC3BK,UAAMS,iBADqB;AAE3BR,QAAIO;AAFuB,GAAtB,CAAP;AAID;;AAED;;;;;;;;;AASA,SAASI,gBAAT,CAA0BjB,MAA1B,EAAkCkB,MAAlC,EAA0CC,QAA1C,EAAoD;AAClD,MAAI,CAACD,MAAL,EAAa;AACX,UAAM,IAAIX,KAAJ,CAAU,gJAAV,CAAN;AACD;AACD,SAAOR,cAAcC,MAAd,EAAsB;AAC3BK,UAAMS,iBADqB;AAE3BR,QAAIO,oBAFuB;AAG3BO,cAAUF,MAHiB;AAI3BC;AAJ2B,GAAtB,CAAP;AAMD;;AAED;;;;;;;;AAQA,SAASE,gBAAT,CAA0BrB,MAA1B,EAAkCkB,MAAlC,EAA0C;AACxC,SAAOD,iBAAiBjB,MAAjB,EAAyBkB,MAAzB,EAAiC,IAAjC,CAAP;AACD;;AAED;;;;;;AAMA,SAASI,eAAT,CAAyBtB,MAAzB,EAAiC;AAC/B,SAAOD,cAAcC,MAAd,EAAsB;AAC3BK,UAAMS,iBADqB;AAE3BR,QAAIiB;AAFuB,GAAtB,CAAP;AAID;;AAED;;;;;;;AAOA,SAASC,SAAT,CAAmBC,IAAnB,EAAyB;AACvB,SAAOf,WAAW;AAChBZ,UAAMD,YAAY6B,oBADF;AAEhBD;AAFgB,GAAX,CAAP;AAID;;AAED;;;;;;;AAOA,SAASE,cAAT,CAAwBF,IAAxB,EAA8BG,gBAAgBnC,mBAA9C,EAAmE;AACjE,QAAMO,SAAS;AACbF,UAAMD,YAAYgC,yBADL;AAEbJ;AAFa,GAAf;AAIA,SAAOG,kBAAkBhC,OAAlB,GAA4Bc,WAAWV,MAAX,CAA5B,GAAiDA,MAAxD;AACD;;AAED;;;;;;;AAOA,SAAS8B,SAAT,CAAmBL,IAAnB,EAAyBG,gBAAgBnC,mBAAzC,EAA8D;AAC5D,QAAMO,SAAS;AACbF,UAAMD,YAAYkC,2BADL;AAEbN;AAFa,GAAf;AAIA,SAAOG,kBAAkBhC,OAAlB,GAA4Bc,WAAWV,MAAX,CAA5B,GAAiDA,MAAxD;AACD;;AAED;;;;;;;AAOA,SAASgC,eAAT,CAAyBP,IAAzB,EAA+BG,gBAAgBnC,mBAA/C,EAAoE;AAClE,QAAMO,SAAS;AACbF,UAAMD,YAAYoC,0BADL;AAEbR;AAFa,GAAf;AAIA,SAAOG,kBAAkBhC,OAAlB,GAA4Bc,WAAWV,MAAX,CAA5B,GAAiDA,MAAxD;AACD;;AAED,SAASkC,OAAT,CAAiBC,IAAjB,EAAuBC,KAAvB,EAA8BR,gBAAgBnC,mBAA9C,EAAmE;AACjE,QAAMO,SAAS,EAACF,MAAMD,YAAYwC,QAAnB,EAA6BZ,MAAM,EAACU,IAAD,EAAOC,KAAP,EAAnC,EAAf;AACA,SAAOR,kBAAkBhC,OAAlB,GAA4Bc,WAAWV,MAAX,CAA5B,GAAiDA,MAAxD;AACD;;AAED,SAASsC,WAAT,CAAqBxC,IAArB,EAA2B2B,IAA3B,EAAiCG,gBAAgBnC,mBAAjD,EAAsE;AACpE,MAAI,CAACgC,IAAD,IAAS,CAACA,KAAKc,MAAnB,EAA2B;AACzB,UAAM,IAAIhC,KAAJ,CAAU,qHAAV,CAAN;AACD;AACD,QAAMP,SAAS,EAACF,IAAD,EAAO2B,IAAP,EAAf;AACA,SAAOG,kBAAkBhC,OAAlB,GAA4Bc,WAAWV,MAAX,CAA5B,GAAiDA,MAAxD;AACD;;qBAIqB;AACpBgB,oBADoB;AAEpBQ,WAFoB;AAGpBG,gBAHoB;AAIpBG,WAJoB;AAKpBE,iBALoB;AAMpBf,kBANoB;AAOpBI,kBAPoB;AAQpBX,YARoB;AASpBK,YAToB;AAUpBO,iBAVoB;AAWpBY,SAXoB;AAYpBI;AAZoB,C;;AAetB;;kBACmB;AACjBE,eAAaxC,MAAb,EAAqB;AACnB,QAAI,CAACA,OAAOE,IAAZ,EAAkB;AAChB,aAAO,KAAP;AACD;AACD,WAAOF,OAAOE,IAAP,CAAYI,EAAZ,KAAmBQ,iBAAnB,IAAwCd,OAAOE,IAAP,CAAYG,IAAZ,KAAqBQ,oBAApE;AACD,GANgB;AAOjB4B,uBAAqBzC,MAArB,EAA6B;AAC3B,QAAI,CAACA,OAAOE,IAAZ,EAAkB;AAChB,aAAO,KAAP;AACD;AACD,QAAIF,OAAOE,IAAP,CAAYI,EAAZ,KAAmBO,oBAAnB,IAA2C,CAACb,OAAOE,IAAP,CAAYkB,QAA5D,EAAsE;AACpE,aAAO,IAAP;AACD;AACD,WAAO,KAAP;AACD,GAfgB;AAgBjBsB,qBAAmB1C,MAAnB,EAA2B;AACzB,QAAI,CAACA,OAAOE,IAAZ,EAAkB;AAChB,aAAO,KAAP;AACD;AACD,QAAIF,OAAOE,IAAP,CAAYI,EAAZ,KAAmBO,oBAAnB,IAA2Cb,OAAOE,IAAP,CAAYkB,QAA3D,EAAqE;AACnE,aAAO,IAAP;AACD;AACD,WAAO,KAAP;AACD,GAxBgB;AAyBjBuB,oBAAkB3C,MAAlB,EAA0B;AACxB,QAAI,CAACA,OAAOE,IAAZ,EAAkB;AAChB,aAAO,KAAP;AACD;AACD,WAAOF,OAAOE,IAAP,CAAYI,EAAZ,KAAmBiB,oBAAnB,IACLvB,OAAOE,IAAP,CAAYG,IAAZ,KAAqBS,iBADvB;AAED,GA/BgB;AAgCjB8B,aAAW5C,MAAX,EAAmB;AACjB,QAAI,CAACA,OAAOE,IAAZ,EAAkB;AAChB,aAAO,KAAP;AACD;AACD,WAAOF,OAAOE,IAAP,CAAYG,IAAZ,KAAqBS,iBAArB,IACLd,OAAOE,IAAP,CAAYI,EAAZ,KAAmBO,oBADrB;AAED,GAtCgB;AAuCjBgC,oBAAkB7C,MAAlB,EAA0B;AACxB,WAAQA,OAAOE,IAAP,IAAeF,OAAOE,IAAP,CAAYS,UAA5B,IAA2C,IAAlD;AACD,GAzCgB;AA0CjBZ;AA1CiB,C;;;;;;ACpSnB,uB;;;;;;ACAA,2B;;;;;;ACAA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;ACpBA,4B;;;;;;;ACAO,MAAM+C,mBAAmB,WAAzB;AAAA;AAAA;AACA,MAAMC,iCAAiC,CAAC,iBAAD,EAAoB,aAApB,EAAmC,WAAnC,EAC5C,iBAD4C,EACzB,qBADyB,EACF,WADE,EACW,UADX,EACuB,WADvB,CAAvC;AAAA;AAAA;AAEP;AACO,MAAMC,wBAAwB,EAA9B;AAAA;AAAA;AACP;AACO,MAAMC,0BAA0B,EAAhC,C;;;;;;;;;;;;;;ACNO,MAAMC,MAAN,CAAa;AACzBC,cAAYC,SAAZ,EAAuB;AACrB,SAAKA,SAAL,GAAiBA,aAAa,KAAKC,gBAAnC;AACD;;AAEDA,mBAAiBC,IAAjB,EAAuB;AACrB,WAAOA,IAAP;AACD;;AAED;;;;;;AAMAC,QAAM,GAAGC,MAAT,EAAiB;AACf,UAAMC,aAAa,IAAIC,GAAJ,EAAnB;AACA,UAAMC,SAAS,EAAf;AACA,SAAK,MAAMC,MAAX,IAAqBJ,MAArB,EAA6B;AAC3B,YAAMK,WAAW,IAAIC,GAAJ,EAAjB;AACA,WAAK,MAAM1B,KAAX,IAAoBwB,MAApB,EAA4B;AAC1B,cAAMG,MAAM,KAAKX,SAAL,CAAehB,KAAf,CAAZ;AACA,YAAI,CAACqB,WAAWO,GAAX,CAAeD,GAAf,CAAD,IAAwB,CAACF,SAASG,GAAT,CAAaD,GAAb,CAA7B,EAAgD;AAC9CF,mBAASI,GAAT,CAAaF,GAAb,EAAkB3B,KAAlB;AACD;AACF;AACDuB,aAAOO,IAAP,CAAYL,QAAZ;AACAA,eAASrD,OAAT,CAAiB,CAAC4B,KAAD,EAAQ2B,GAAR,KAAgBN,WAAWU,GAAX,CAAeJ,GAAf,CAAjC;AACD;AACD,WAAOJ,OAAOS,GAAP,CAAWC,KAAKC,MAAMjE,IAAN,CAAWgE,EAAET,MAAF,EAAX,CAAhB,CAAP;AACD;AA9BwB,C;;;ACA3B;AAAA;;;AAGA;;;;AAKA,MAAMW,yBAAyB,CAA/B;AAAA;AAAA;AACA,MAAMC,8BAA8B,CAApC;AAAA;AAAA;;;AAEA,MAAMC,SAAS,IAAI,MAAJ,CAAWC,QAAQA,QAAQA,KAAKC,GAAhC,CAAf;;AAEA,MAAMC,gBAAgB;AACpBC,OAAK;AACH;AACAC,iBAAa,KAFV;AAGH;AACAC,aAAS;AAJN,GADe;AAOpBC,YAAU,EAACF,aAAa,KAAd,EAPU;AAQpBG,YAAU;AACR;AACAH,iBAAa,KAFL;AAGR;AACAI,UAAM,EAJE;AAKR;AACAC,cAAU;AANF,GARU;AAgBpBC,SAAO;AACLN,iBAAa,KADR;AAELlB,YAAQ;AAFH,GAhBa;AAoBpByB,UAAQ;AACNC,aAAS,KADH;AAEN7D,UAAM;AAFA,GApBY;AAwBpB8D,YAAU,EAxBU;AAyBpBC,mBAAiB,EAACF,SAAS,KAAV;AAzBG,CAAtB;AAAA;AAAA;;;AA4BA,SAAST,GAAT,CAAaY,YAAYb,cAAcC,GAAvC,EAA4C7E,MAA5C,EAAoD;AAClD,UAAQA,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAGC,IAAR;AACE,aAAOxF,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6BzF,OAAOyB,IAAP,IAAe,EAA5C,EAAgD,EAACqD,aAAa,IAAd,EAAhD,CAAP;AACF;AACE,aAAOW,SAAP;AAJJ;AAMD;;AAED;;;;;;;AAOA,SAASG,YAAT,CAAsBC,KAAtB,EAA6BC,MAA7B,EAAqC;AACnC;AACA,QAAMC,aAAaD,OAAO1B,GAAP,CAAW4B,QAAQA,QAAQA,KAAKrB,GAAhC,CAAnB;AACA,MAAIsB,WAAWJ,MAAMK,MAAN,CAAaF,QAASA,OAAO,CAACD,WAAWI,QAAX,CAAoBH,KAAKrB,GAAzB,CAAR,GAAwC,KAA9D,CAAf;AACAsB,aAAWA,SAAS7B,GAAT,CAAa4B,QAAQ;AAC9B,QAAIA,QAAQA,KAAKI,QAAjB,EAA2B;AACzB,aAAOJ,KAAKI,QAAZ;AACA,aAAOJ,KAAKK,QAAZ;AACD;AACD,WAAOL,IAAP;AACD,GANU,CAAX;;AAQA;AACAF,SAAOtF,OAAP,CAAe,CAAC8F,GAAD,EAAMC,KAAN,KAAgB;AAC7B,QAAI,CAACD,GAAL,EAAU;AAAE;AAAS;AACrB,QAAIN,OAAO7F,OAAOC,MAAP,CAAc,EAAd,EAAkBkG,GAAlB,EAAuB,EAACF,UAAU,IAAX,EAAiBC,UAAUE,KAA3B,EAAvB,CAAX;AACA,QAAIA,QAAQN,SAASO,MAArB,EAA6B;AAC3BP,eAASM,KAAT,IAAkBP,IAAlB;AACD,KAFD,MAEO;AACLC,eAASQ,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB,EAA0BP,IAA1B;AACD;AACF,GARD;;AAUA,SAAOC,QAAP;AACD;;;AAED,SAAShB,QAAT,CAAkBQ,YAAYb,cAAcK,QAA5C,EAAsDjF,MAAtD,EAA8D;AAC5D,MAAI0G,QAAJ;AACA,MAAIC,OAAJ;AACA,UAAQ3G,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAGkB,iBAAR;AACE,UAAI,CAAC5G,OAAOyB,IAAZ,EAAkB;AAChB,eAAOgE,SAAP;AACD;AACD,aAAOtF,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACX,aAAa,IAAd,EAAoBI,MAAMlF,OAAOyB,IAAjC,EAA7B,CAAP;AACF,SAAK,8BAAAiE,CAAGmB,cAAR;AACE,aAAO1G,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACN,UAAU,EAACoB,OAAOvG,OAAOyB,IAAP,CAAY8E,KAApB,EAAX,EAA7B,CAAP;AACF,SAAK,8BAAAb,CAAGoB,qBAAR;AACE,aAAO3G,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACN,UAAU,IAAX,EAA7B,CAAP;AACF,SAAK,8BAAAO,CAAGqB,kBAAR;AACEJ,gBAAUlB,UAAUP,IAAV,CAAed,GAAf,CAAmB4C,OAAO;AAClC,YAAIA,OAAOA,IAAIrC,GAAJ,KAAY3E,OAAOyB,IAAP,CAAYkD,GAAnC,EAAwC;AACtC+B,qBAAW,IAAX;AACA,iBAAOvG,OAAOC,MAAP,CAAc,EAAd,EAAkB4G,GAAlB,EAAuB,EAACC,YAAYjH,OAAOyB,IAAP,CAAYwF,UAAzB,EAAvB,CAAP;AACD;AACD,eAAOD,GAAP;AACD,OANS,CAAV;AAOA,aAAON,WAAWvG,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACP,MAAMyB,OAAP,EAA7B,CAAX,GAA2DlB,SAAlE;AACF,SAAK,8BAAAC,CAAGwB,qBAAR;AACE,UAAI,CAAClH,OAAOyB,IAAZ,EAAkB;AAChB,eAAOgE,SAAP;AACD;AACDkB,gBAAUlB,UAAUP,IAAV,CAAed,GAAf,CAAmBM,QAAQ;AACnC,YAAIA,QAAQA,KAAKC,GAAL,KAAa3E,OAAOyB,IAAP,CAAYkD,GAArC,EAA0C;AACxC,gBAAM,EAACwC,YAAD,EAAeC,aAAf,EAA8BC,SAA9B,KAA2CrH,OAAOyB,IAAxD;AACA,iBAAOtB,OAAOC,MAAP,CAAc,EAAd,EAAkBsE,IAAlB,EAAwB,EAACyC,YAAD,EAAeC,aAAf,EAA8BE,qBAAqBD,SAAnD,EAAxB,CAAP;AACD;AACD,eAAO3C,IAAP;AACD,OANS,CAAV;AAOA,aAAOvE,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACP,MAAMyB,OAAP,EAA7B,CAAP;AACF,SAAK,8BAAAjB,CAAG6B,uBAAR;AACE,UAAI,CAACvH,OAAOyB,IAAZ,EAAkB;AAChB,eAAOgE,SAAP;AACD;AACDkB,gBAAUlB,UAAUP,IAAV,CAAed,GAAf,CAAmBM,QAAQ;AACnC,YAAIA,QAAQA,KAAKC,GAAL,KAAa3E,OAAOyB,IAAP,CAAYkD,GAArC,EAA0C;AACxC,gBAAM6C,UAAUrH,OAAOC,MAAP,CAAc,EAAd,EAAkBsE,IAAlB,CAAhB;AACA,iBAAO8C,QAAQL,YAAf;AACA,iBAAOK,QAAQJ,aAAf;AACA,iBAAOI,QAAQF,mBAAf;AACA,iBAAOE,OAAP;AACD;AACD,eAAO9C,IAAP;AACD,OATS,CAAV;AAUA,aAAOvE,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACP,MAAMyB,OAAP,EAA7B,CAAP;AACF;AACE,aAAOlB,SAAP;AA/CJ;AAiDD;;AAED,SAASJ,MAAT,CAAgBI,YAAYb,cAAcS,MAA1C,EAAkDrF,MAAlD,EAA0D;AACxD,UAAQA,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAG+B,WAAR;AACE,aAAOtH,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACH,SAAS,IAAV,EAAgB7D,MAAMzB,OAAOyB,IAA7B,EAA7B,CAAP;AACF,SAAK,8BAAAiE,CAAGgC,aAAR;AACE,aAAOvH,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACH,SAAS,KAAV,EAA7B,CAAP;AACF,SAAK,8BAAAI,CAAGiC,kBAAR;AACE,aAAOxH,OAAOC,MAAP,CAAc,EAAd,EAAkBwE,cAAcS,MAAhC,CAAP;AACF;AACE,aAAOI,SAAP;AARJ;AAUD;;AAED,SAASL,KAAT,CAAeK,YAAYb,cAAcQ,KAAzC,EAAgDpF,MAAhD,EAAwD;AACtD,MAAI4H,SAAJ;AACA,UAAQ5H,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAGmC,oBAAR;AACE,aAAO1H,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACX,aAAa,IAAd,EAAoBlB,QAAQ5D,OAAOyB,IAAnC,EAA7B,CAAP;AACF,SAAK,8BAAAiE,CAAGoC,YAAR;AACEF,kBAAYzH,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,UAAU7B,MAA5B,CAAZ;AACAgE,gBAAU5H,OAAOyB,IAAP,CAAYU,IAAtB,IAA8BnC,OAAOyB,IAAP,CAAYW,KAA1C;AACA,aAAOjC,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAAC7B,QAAQgE,SAAT,EAA7B,CAAP;AACF;AACE,aAAOnC,SAAP;AARJ;AAUD;;AAED,SAASF,QAAT,CAAkBE,YAAYb,cAAcW,QAA5C,EAAsDvF,MAAtD,EAA8D;AAC5D,MAAI0G,QAAJ;AACA,MAAIqB,QAAJ;AACA,UAAQ/H,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAGsC,kBAAR;AACE,aAAOvC,UAAUS,MAAV,CAAiB+B,WAAWA,QAAQC,EAAR,KAAelI,OAAOyB,IAAlD,CAAP;AACF,SAAK,8BAAAiE,CAAGyC,gBAAR;AACE;AACAJ,iBAAWtC,UAAUrB,GAAV,CAAc6D,WAAW;AAClC,YAAIA,WAAWA,QAAQC,EAAR,KAAelI,OAAOyB,IAAP,CAAYyG,EAA1C,EAA8C;AAC5CxB,qBAAW,IAAX;AACA,iBAAOvG,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2BjI,OAAOyB,IAAlC,CAAP;AACD;AACD,eAAOwG,OAAP;AACD,OANU,CAAX;;AAQA;AACA;AACA;AACA;AACA,UAAI,CAACvB,QAAL,EAAe;AACb,cAAM5B,cAAc,CAAC,EAAE9E,OAAOyB,IAAP,CAAYyD,IAAZ,IAAoBlF,OAAOyB,IAAP,CAAYyD,IAAZ,CAAiBsB,MAAjB,GAA0B,CAAhD,CAArB;AACA,YAAI4B,KAAJ;AACA,YAAI7B,KAAJ;AACA,YAAId,UAAUe,MAAV,GAAmB,CAAvB,EAA0B;AACxB4B,kBAAQpI,OAAOyB,IAAP,CAAY2G,KAAZ,KAAsBC,SAAtB,GAAkCrI,OAAOyB,IAAP,CAAY2G,KAA9C,GAAsD3C,UAAU,CAAV,EAAa2C,KAAb,GAAqB,CAAnF;AACA7B,kBAAQwB,SAASO,SAAT,CAAmBL,WAAWA,QAAQG,KAAR,IAAiBA,KAA/C,CAAR;AACA,cAAI7B,UAAU,CAAC,CAAf,EAAkB;AAChBA,oBAAQwB,SAASvB,MAAjB;AACD;AACF,SAND,MAMO;AACL4B,kBAAQpI,OAAOyB,IAAP,CAAY2G,KAAZ,KAAsBC,SAAtB,GAAkCrI,OAAOyB,IAAP,CAAY2G,KAA9C,GAAsD,CAA9D;AACA7B,kBAAQ,CAAR;AACD;;AAED,cAAM0B,UAAU9H,OAAOC,MAAP,CAAc,EAACmI,OAAO,EAAR,EAAYrD,MAAM,EAAlB,EAAsBkD,KAAtB,EAA6BI,SAAS,KAAtC,EAAd,EAA4DxI,OAAOyB,IAAnE,EAAyE,EAACqD,WAAD,EAAzE,CAAhB;AACAiD,iBAAStB,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB,EAA0B0B,OAA1B;AACD;AACD,aAAOF,QAAP;AACF,SAAK,8BAAArC,CAAG+C,cAAR;AACEV,iBAAWtC,UAAUrB,GAAV,CAAc6D,WAAW;AAClC,YAAIA,WAAWA,QAAQC,EAAR,KAAelI,OAAOyB,IAAP,CAAYyG,EAA1C,EAA8C;AAC5C;AACA;AACA,gBAAMpD,cAAc9E,OAAOyB,IAAP,CAAYyD,IAAZ,GAAmB,EAACJ,aAAa,IAAd,EAAnB,GAAyC,EAA7D;AACA,iBAAO3E,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2BnD,WAA3B,EAAwC9E,OAAOyB,IAA/C,CAAP;AACD;AACD,eAAOwG,OAAP;AACD,OARU,CAAX;;AAUA,UAAI,CAACjI,OAAOyB,IAAP,CAAYiH,oBAAjB,EAAuC;AACrC,eAAOX,QAAP;AACD;;AAED/H,aAAOyB,IAAP,CAAYiH,oBAAZ,CAAiClI,OAAjC,CAAyCmI,cAAc;AACrDZ,mBAAWA,SAAS3D,GAAT,CAAa6D,WAAW;AACjC,cAAIA,QAAQC,EAAR,KAAeS,WAAWT,EAA9B,EAAkC;AAChC,kBAAMU,cAAcD,WAAWE,UAAX,CAAsBC,MAAtB,CAA6B,CAAC5D,IAAD,EAAO6D,eAAP,KAA2B;AAC1E,oBAAMC,gBAAgBjB,SAASkB,IAAT,CAAcC,KAAKA,EAAEhB,EAAF,KAASa,eAA5B,CAAtB;AACA,oBAAM,GAAGpC,OAAH,IAAclC,OAAOlB,KAAP,CAAayF,cAAc9D,IAA3B,EAAiCA,IAAjC,CAApB;AACA,qBAAOyB,OAAP;AACD,aAJmB,EAIjBsB,QAAQ/C,IAJS,CAApB;;AAMA,mBAAO/E,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2B,EAAC/C,MAAM0D,WAAP,EAA3B,CAAP;AACD;;AAED,iBAAOX,OAAP;AACD,SAZU,CAAX;AAaD,OAdD;;AAgBA,aAAOF,QAAP;AACF,SAAK,8BAAArC,CAAGyD,mBAAR;AACE,aAAO1D,UAAUrB,GAAV,CAAc6D,WAAW;AAC9B,YAAIA,WAAWA,QAAQC,EAAR,KAAelI,OAAOyB,IAAP,CAAYyG,EAAtC,IAA4CD,QAAQ/C,IAAxD,EAA8D;AAC5D,gBAAMyB,UAAUsB,QAAQ/C,IAAR,CAAad,GAAb,CAAiBgF,QAAQ;AACvC,gBAAIA,KAAKzE,GAAL,KAAa3E,OAAOyB,IAAP,CAAYkD,GAA7B,EAAkC;AAChC,qBAAOxE,OAAOC,MAAP,CAAc,EAAd,EAAkBgJ,IAAlB,EAAwBpJ,OAAOyB,IAAP,CAAYxB,OAApC,CAAP;AACD;AACD,mBAAOmJ,IAAP;AACD,WALe,CAAhB;AAMA,iBAAOjJ,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2B,EAAC/C,MAAMyB,OAAP,EAA3B,CAAP;AACD;AACD,eAAOsB,OAAP;AACD,OAXM,CAAP;AAYF,SAAK,8BAAAvC,CAAGwB,qBAAR;AACE,UAAI,CAAClH,OAAOyB,IAAZ,EAAkB;AAChB,eAAOgE,SAAP;AACD;AACD,aAAOA,UAAUrB,GAAV,CAAc6D,WAAW9H,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2B;AACzD/C,cAAM+C,QAAQ/C,IAAR,CAAad,GAAb,CAAiBd,QAAQ;AAC7B;AACA,cAAIA,KAAKqB,GAAL,KAAa3E,OAAOyB,IAAP,CAAYkD,GAA7B,EAAkC;AAChC,kBAAM,EAACwC,YAAD,EAAeC,aAAf,EAA8BC,SAA9B,KAA2CrH,OAAOyB,IAAxD;AACA,mBAAOtB,OAAOC,MAAP,CAAc,EAAd,EAAkBkD,IAAlB,EAAwB;AAC7B6D,0BAD6B;AAE7BC,2BAF6B;AAG7BE,mCAAqBD,SAHQ;AAI7BvH,oBAAM;AAJuB,aAAxB,CAAP;AAMD;AACD,iBAAOwD,IAAP;AACD,SAZK;AADmD,OAA3B,CAAzB,CAAP;AAeF,SAAK,8BAAAoC,CAAG6B,uBAAR;AACE,UAAI,CAACvH,OAAOyB,IAAZ,EAAkB;AAChB,eAAOgE,SAAP;AACD;AACD,aAAOA,UAAUrB,GAAV,CAAc6D,WAAW9H,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2B;AACzD/C,cAAM+C,QAAQ/C,IAAR,CAAad,GAAb,CAAiBd,QAAQ;AAC7B;AACA,cAAIA,KAAKqB,GAAL,KAAa3E,OAAOyB,IAAP,CAAYkD,GAA7B,EAAkC;AAChC,kBAAM6C,UAAUrH,OAAOC,MAAP,CAAc,EAAd,EAAkBkD,IAAlB,CAAhB;AACA,mBAAOkE,QAAQL,YAAf;AACA,mBAAOK,QAAQJ,aAAf;AACA,mBAAOI,QAAQF,mBAAf;AACA,gBAAI,CAACE,QAAQ1H,IAAT,IAAiB0H,QAAQ1H,IAAR,KAAiB,UAAtC,EAAkD;AAChD0H,sBAAQ1H,IAAR,GAAe,SAAf;AACD;AACD,mBAAO0H,OAAP;AACD;AACD,iBAAOlE,IAAP;AACD,SAbK;AADmD,OAA3B,CAAzB,CAAP;AAgBF,SAAK,8BAAAoC,CAAG2D,oBAAR;AACE,aAAO5D,UAAUrB,GAAV,CAAc6D,WAAW9H,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAC9B,EAAC/C,MAAM+C,QAAQ/C,IAAR,CAAagB,MAAb,CAAoBxB,QAAQ,CAAC1E,OAAOyB,IAAP,CAAY0E,QAAZ,CAAqBzB,KAAKC,GAA1B,CAA7B,CAAP,EAD8B,CAAzB,CAAP;AAEF,SAAK,8BAAAe,CAAG4D,mBAAR;AACE,aAAO7D,UAAUrB,GAAV,CAAc6D,WACnB9H,OAAOC,MAAP,CAAc,EAAd,EAAkB6H,OAAlB,EAA2B,EAAC/C,MAAM+C,QAAQ/C,IAAR,CAAagB,MAAb,CAAoBxB,QAAQA,KAAKC,GAAL,KAAa3E,OAAOyB,IAAP,CAAYkD,GAArD,CAAP,EAA3B,CADK,CAAP;AAEF;AACE,aAAOc,SAAP;AA/HJ;AAiID;;AAED,SAAST,QAAT,CAAkBS,YAAYb,cAAcI,QAA5C,EAAsDhF,MAAtD,EAA8D;AAC5D,UAAQA,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAG6D,aAAR;AACE,aAAOpJ,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACX,aAAa,IAAd,EAA7B,EAAkD9E,OAAOyB,IAAzD,CAAP;AACF,SAAK,8BAAAiE,CAAG8D,cAAR;AACE,aAAO5E,cAAcI,QAArB;AACF;AACE,aAAOS,SAAP;AANJ;AAQD;;AAED,SAASD,eAAT,CAAyBC,YAAYb,cAAcY,eAAnD,EAAoExF,MAApE,EAA4E;AAC1E,UAAQA,OAAOF,IAAf;AACE,SAAK,8BAAA4F,CAAG+D,aAAR;AACE,aAAOtJ,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACH,SAAS,IAAV,EAA7B,CAAP;AACF,SAAK,8BAAAI,CAAGgE,cAAR;AACE,aAAOvJ,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6B,EAACH,SAAS,KAAV,EAA7B,CAAP;AACF;AACE,aAAOG,SAAP;AANJ;AAQD;;eAMe,EAACR,QAAD,EAAWJ,GAAX,EAAgBG,QAAhB,EAA0BI,KAA1B,EAAiCC,MAAjC,EAAyCE,QAAzC,EAAmDC,eAAnD,E;;;;;;;;;;;ACpUhB;AACA;;AAEO,MAAMmE,qBAAN,SAAoC,6CAAAC,CAAMC,aAA1C,CAAwD;AAC7D1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKC,SAAL,GAAiB,KAAKD,KAAL,CAAWC,SAAX,IAAwBC,MAAzC;AACA,SAAKC,OAAL,GAAe,KAAKA,OAAL,CAAaC,IAAb,CAAkB,IAAlB,CAAf;AACD;;AAED;;;;AAIAD,YAAU;AACR,SAAKF,SAAL,CAAeI,QAAf,CAAwBC,MAAxB,CAA+B,IAA/B;AACD;;AAEDC,WAAS;AACP,UAAMC,eAAe,mBAArB;AACA,QAAIC,SAAJ;AACA,QAAI,eAAe,KAAKT,KAAxB,EAA+B;AAC7BS,kBAAa,GAAE,KAAKT,KAAL,CAAWS,SAAU,IAAGD,YAAa,EAApD;AACD,KAFD,MAEO;AACLC,kBAAYD,YAAZ;AACD;;AAED;AACA,WACE;AAAA;AAAA,QAAK,WAAWC,SAAhB;AACE;AAAA;AAAA;AACE,oEAAC,4DAAD;AACE,0BAAe,kDADjB;AAEE,cAAG,6BAFL;AADF,OADF;AAME;AAAA;AAAA;AACE;AAAA;AAAA,YAAG,MAAK,GAAR,EAAY,WAAU,eAAtB,EAAsC,SAAS,KAAKN,OAApD;AACE,sEAAC,4DAAD;AACE,4BAAe,4BADjB;AAEE,gBAAG,2CAFL;AADF;AADF;AANF,KADF;AAgBD;AAzC4D;AAAA;AAAA;AA2C/DN,sBAAsBa,YAAtB,GAAqC,EAACD,WAAW,mBAAZ,EAArC;;AAEO,MAAME,aAAN,SAA4B,6CAAAb,CAAMC,aAAlC,CAAgD;AACrD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKY,KAAL,GAAa,EAACC,UAAU,KAAX,EAAb;AACD;;AAEDC,oBAAkBC,KAAlB,EAAyBC,IAAzB,EAA+B;AAC7B,SAAKC,QAAL,CAAc,EAACJ,UAAU,IAAX,EAAd;AACD;;AAEDN,WAAS;AACP,QAAI,CAAC,KAAKK,KAAL,CAAWC,QAAhB,EAA0B;AACxB,aAAQ,KAAKb,KAAL,CAAWkB,QAAnB;AACD;;AAED,WAAO,iEAAM,KAAN,CAAY,iBAAZ,IAA8B,WAAW,KAAKlB,KAAL,CAAWS,SAApD,GAAP;AACD;AAhBoD;AAAA;AAAA;;AAmBvDE,cAAcD,YAAd,GAA6B,EAACS,mBAAmBtB,qBAApB,EAA7B,C;;;;;;;;;;;;;;;;ACnEA;;AAEO,MAAM,uBAAN,SAA0B,0BAAAC,CAAMC,aAAhC,CAA8C;AACnD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKoB,WAAL,GAAmB,KAAKA,WAAL,CAAiBhB,IAAjB,CAAsB,IAAtB,CAAnB;AACD;;AAEDgB,gBAAc;AACZ,SAAKpB,KAAL,CAAWqB,QAAX,CAAoB,KAApB;AACD;;AAEDC,uBAAqB;AACnB,SAAKF,WAAL;AACD;;AAEDG,qBAAmBC,SAAnB,EAA8B;AAC5B,QAAI,KAAKxB,KAAL,CAAWxE,OAAX,IAAsB,CAACgG,UAAUhG,OAArC,EAA8C;AAC5CiG,iBAAW,MAAM;AACfvB,eAAOwB,gBAAP,CAAwB,OAAxB,EAAiC,KAAKN,WAAtC;AACD,OAFD,EAEG,CAFH;AAGD;AACD,QAAI,CAAC,KAAKpB,KAAL,CAAWxE,OAAZ,IAAuBgG,UAAUhG,OAArC,EAA8C;AAC5C0E,aAAOyB,mBAAP,CAA2B,OAA3B,EAAoC,KAAKP,WAAzC;AACD;AACF;;AAEDQ,yBAAuB;AACrB1B,WAAOyB,mBAAP,CAA2B,OAA3B,EAAoC,KAAKP,WAAzC;AACD;;AAEDb,WAAS;AACP,WAAQ;AAAA;AAAA,QAAM,QAAQ,CAAC,KAAKP,KAAL,CAAWxE,OAA1B,EAAmC,WAAU,cAA7C;AACN;AAAA;AAAA,UAAI,MAAK,MAAT,EAAgB,WAAU,mBAA1B;AACG,aAAKwE,KAAL,CAAW7J,OAAX,CAAmBmE,GAAnB,CAAuB,CAACuH,MAAD,EAASC,CAAT,KAAgBD,OAAO7L,IAAP,KAAgB,WAAhB,GACrC,iDAAI,KAAK8L,CAAT,EAAY,WAAU,WAAtB,GADqC,GAErC,yCAAC,2BAAD,IAAiB,KAAKA,CAAtB,EAAyB,QAAQD,MAAjC,EAAyC,aAAa,KAAKT,WAA3D,GAFF;AADH;AADM,KAAR;AAQD;AAtCkD;;AAyC9C,MAAM,2BAAN,SAA8B,0BAAAtB,CAAMC,aAApC,CAAkD;AACvD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKG,OAAL,GAAe,KAAKA,OAAL,CAAaC,IAAb,CAAkB,IAAlB,CAAf;AACA,SAAK2B,SAAL,GAAiB,KAAKA,SAAL,CAAe3B,IAAf,CAAoB,IAApB,CAAjB;AACD;;AAEDD,YAAU;AACR,SAAKH,KAAL,CAAWoB,WAAX;AACA,SAAKpB,KAAL,CAAW6B,MAAX,CAAkB1B,OAAlB;AACD;;AAED4B,YAAUC,KAAV,EAAiB;AACf,UAAM,EAACH,MAAD,KAAW,KAAK7B,KAAtB;AACA,YAAQgC,MAAM/H,GAAd;AACE,WAAK,KAAL;AACE;AACA;AACA;AACA,YAAK+H,MAAMC,QAAN,IAAkBJ,OAAOK,KAA1B,IAAqC,CAACF,MAAMC,QAAP,IAAmBJ,OAAOM,IAAnE,EAA0E;AACxE,eAAKnC,KAAL,CAAWoB,WAAX;AACD;AACD;AACF,WAAK,OAAL;AACE,aAAKpB,KAAL,CAAWoB,WAAX;AACAS,eAAO1B,OAAP;AACA;AAZJ;AAcD;;AAEDI,WAAS;AACP,UAAM,EAACsB,MAAD,KAAW,KAAK7B,KAAtB;AACA,WACE;AAAA;AAAA,QAAI,MAAK,UAAT,EAAoB,WAAU,mBAA9B;AACE;AAAA;AAAA,UAAG,SAAS,KAAKG,OAAjB,EAA0B,WAAW,KAAK4B,SAA1C,EAAqD,UAAS,GAA9D;AACGF,eAAOO,IAAP,IAAe,mDAAM,WAAY,yBAAwBP,OAAOO,IAAK,EAAtD,GADlB;AAEGP,eAAOQ;AAFV;AADF,KADF;AAOD;AAvCsD,C;;;;;;AC3CzD;;AAEA;;;;;AAKO,MAAMC,kBAAkB;AAC7BC,aAAW,OAAO,EAACvM,MAAM,WAAP,EAAP,CADkB;AAE7BwM,kBAAgB5H,SAAS;AACvBwD,QAAI,6BADmB;AAEvBgE,UAAM,gBAFiB;AAGvBlM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAG8G,qBADW;AAEpB/K,YAAMiD,KAAKyC;AAFS,KAAd,CAHe;AAOvBsF,eAAW;AAPY,GAAT,CAFa;AAW7BC,eAAahI,SAAS;AACpBwD,QAAI,sBADgB;AAEpBgE,UAAM,iBAFc;AAGpBlM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAGiH,YADW;AAEpBlL,YAAM,EAACkD,KAAKD,KAAKC,GAAX,EAAgB4D,OAAO7D,KAAK6D,KAA5B,EAAmCzI,MAAM4E,KAAK5E,IAA9C;AAFc,KAAd,CAHY;AAOpB2M,eAAW;AAPS,GAAT,CAXgB;AAoB7BG,mBAAiBlI,SAAS;AACxBwD,QAAI,6BADoB;AAExBgE,UAAM,YAFkB;AAGxBlM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAGmH,eADW;AAEpBpL,YAAM,EAACkD,KAAKD,KAAKC,GAAX,EAAgBmI,UAAUpI,KAAKoI,QAA/B;AAFc,KAAd,CAHgB;AAOxBL,eAAW;AAPa,GAAT,CApBY;AA6B7BM,uBAAqBrI,SAAS;AAC5BwD,QAAI,iCADwB;AAE5BgE,UAAM,oBAFsB;AAG5BlM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAGsH,mBADW;AAEpBvL,YAAM,EAACkD,KAAKD,KAAKC,GAAX,EAAgBmI,UAAUpI,KAAKoI,QAA/B;AAFc,KAAd,CAHoB;AAO5BL,eAAW;AAPiB,GAAT,CA7BQ;AAsC7BQ,YAAU,CAACvI,IAAD,EAAO6B,KAAP,EAAc2G,WAAd,MAA+B;AACvChF,QAAI,qBADmC;AAEvCgE,UAAM,SAFiC;AAGvClM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAGyH,SADW;AAEpB1L,YAAMiD,KAAKC;AAFS,KAAd,CAH+B;AAOvCyI,gBAAY,iCAAAb,CAAGvK,eAAH,CAAmB;AAC7BO,cAAQ2K,WADqB;AAE7BG,aAAO,CAFsB;AAG7BC,aAAO,CAAC,EAACpF,IAAIxD,KAAK6I,IAAV,EAAgBC,KAAKjH,KAArB,EAAD;AAHsB,KAAnB,CAP2B;AAYvCkG,eAAW;AAZ4B,GAA/B,CAtCmB;;AAqD7B;AACA;AACAgB,iBAAe,CAAC/I,IAAD,EAAO6B,KAAP,EAAc2G,WAAd,MAA+B;AAC5ChF,QAAI,4BADwC;AAE5CwF,eAAW,qBAFiC;AAG5CxB,UAAM,SAHsC;AAI5ClM,YAAQ,iCAAAuM,CAAGjK,WAAH,CAAe,8BAAAoD,CAAGiI,cAAlB,EAAkC;AACxCpL,cAAQ2K,WADgC;AAExCvI,WAAKD,KAAKC,GAF8B;AAGxCiJ,uBAAiBrH;AAHuB,KAAlC;AAJoC,GAA/B,CAvDc;AAiE7BsH,aAAWnJ,SAAS;AAClBwD,QAAI,oBADc;AAElBgE,UAAM,QAFY;AAGlBlM,YAAQ;AACNF,YAAM,8BAAA4F,CAAG+B,WADH;AAENhG,YAAM;AACJqM,mBAAW,CACT,iCAAAvB,CAAG7L,UAAH,CAAc,EAACZ,MAAM,8BAAA4F,CAAGiC,kBAAV,EAA8BlG,MAAM,EAACkD,KAAKD,KAAKC,GAAX,EAAgBoJ,YAAYrJ,KAAKyC,YAAjC,EAApC,EAAd,CADS,EAET,iCAAAoF,CAAG/K,SAAH,CAAa,EAACsK,OAAO,QAAR,EAAb,CAFS,CADP;AAKJkC,wBAAgB,CAAC,2BAAD,EAA8B,kCAA9B,CALZ;AAMJC,kCAA0B,oBANtB;AAOJC,iCAAyB,6BAPrB;AAQJhC,cAAM;AARF;AAFA,KAHU;AAgBlBO,eAAW;AAhBO,GAAT,CAjEkB;AAmF7B0B,cAAY,CAACzJ,IAAD,EAAO6B,KAAP,MAAkB;AAC5B2B,QAAI,iBADwB;AAE5BgE,UAAM,KAFsB;AAG5BlM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAG0I,aADW;AAEpB3M,YAAM,EAACiD,MAAM,EAACC,KAAKD,KAAKC,GAAX,EAAP,EAAwB4B,KAAxB;AAFc,KAAd,CAHoB;AAO5BkG,eAAW;AAPiB,GAAlB,CAnFiB;AA4F7B4B,gBAAc3J,SAAS;AACrBwD,QAAI,mBADiB;AAErBgE,UAAM,OAFe;AAGrBlM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAG4I,eADW;AAEpB7M,YAAM,EAACiD,MAAM,EAACC,KAAKD,KAAKC,GAAX,EAAP;AAFc,KAAd,CAHa;AAOrB8H,eAAW;AAPU,GAAT,CA5Fe;AAqG7B8B,gBAAc,CAAC7J,IAAD,EAAO6B,KAAP,EAAc2G,WAAd,MAA+B;AAC3ChF,QAAI,4BADuC;AAE3CgE,UAAM,QAFqC;AAG3ClM,YAAQ,iCAAAuM,CAAG7L,UAAH,CAAc;AACpBZ,YAAM,8BAAA4F,CAAG8I,cADW;AAEpB/M,YAAM,EAACiD,MAAM,EAACC,KAAKD,KAAKC,GAAX,EAAgB4D,OAAO7D,KAAK6D,KAA5B,EAAP;AAFc,KAAd,CAHmC;AAO3C6E,gBAAY,iCAAAb,CAAGvK,eAAH,CAAmB;AAC7BO,cAAQ2K,WADqB;AAE7BuB,cAAQ,CAFqB;AAG7BnB,aAAO,CAAC,EAACpF,IAAIxD,KAAK6I,IAAV,EAAgBC,KAAKjH,KAArB,EAAD;AAHsB,KAAnB,CAP+B;AAY3CkG,eAAW;AAZgC,GAA/B,CArGe;AAmH7BiC,eAAa,CAAChK,IAAD,EAAO6B,KAAP,MAAkB;AAC7B2B,QAAI,2BADyB;AAE7BgE,UAAM,MAFuB;AAG7BlM,YAAQ;AACNF,YAAM,8BAAA4F,CAAGmB,cADH;AAENpF,YAAM,EAAC8E,KAAD;AAFA;AAHqB,GAAlB,CAnHgB;AA2H7BoI,iBAAejK,QAASA,KAAKyC,YAAL,GAAoBiF,gBAAgBE,cAAhB,CAA+B5H,IAA/B,CAApB,GAA2D0H,gBAAgBM,WAAhB,CAA4BhI,IAA5B,CA3HtD;AA4H7BkK,mBAAiB,CAAClK,IAAD,EAAO6B,KAAP,KAAkB7B,KAAK0B,QAAL,GAAgBgG,gBAAgBiC,YAAhB,CAA6B3J,IAA7B,CAAhB,GAAqD0H,gBAAgB+B,UAAhB,CAA2BzJ,IAA3B,EAAiC6B,KAAjC;AA5H3D,CAAxB,C;;ACPP;AACA;AACA;AACA;AACA;;AAEA,MAAMsI,4BAA4B,CAAC,iBAAD,EAAoB,aAApB,EAAmC,WAAnC,EAAgD,iBAAhD,EAAmE,qBAAnE,EAA0F,WAA1F,EAAuG,UAAvG,CAAlC;;AAEO,MAAM,kBAAN,SAAwB,0BAAAjF,CAAMC,aAA9B,CAA4C;AACjDiF,eAAa;AACX,UAAM,EAAChF,KAAD,KAAU,IAAhB;AACA,UAAM,EAACpF,IAAD,EAAO6B,KAAP,EAAchE,MAAd,KAAwBuH,KAA9B;;AAEA;AACA,UAAMiF,cAAc,CAACrK,KAAKsK,SAAN,GAAkBlF,MAAM7J,OAAxB,GAAkC4O,yBAAtD;;AAEA,UAAM5O,UAAU8O,YAAY3K,GAAZ,CAAgB3D,KAAK,eAAA2L,CAAgB3L,CAAhB,EAAmBiE,IAAnB,EAAyB6B,KAAzB,EAAgChE,MAAhC,CAArB,EAA8D6B,GAA9D,CAAkEuH,UAAU;AAC1F,YAAM,EAAC3L,MAAD,EAASoN,UAAT,EAAqBlF,EAArB,EAAyBwF,SAAzB,EAAoC5N,IAApC,EAA0C2M,SAA1C,KAAuDd,MAA7D;AACA,UAAI,CAAC7L,IAAD,IAASoI,EAAb,EAAiB;AACfyD,eAAOQ,KAAP,GAAerC,MAAMmF,IAAN,CAAWC,aAAX,CAAyB,EAAChH,IAAIwF,aAAaxF,EAAlB,EAAzB,CAAf;AACAyD,eAAO1B,OAAP,GAAiB,MAAM;AACrBH,gBAAMqF,QAAN,CAAenP,MAAf;AACA,cAAIyM,SAAJ,EAAe;AACb3C,kBAAMqF,QAAN,CAAe,iCAAA5C,CAAG/K,SAAH,CAAa;AAC1BsK,qBAAOW,SADmB;AAE1BlK,oBAF0B;AAG1BqL,+BAAiBrH;AAHS,aAAb,CAAf;AAKD;AACD,cAAI6G,cAActD,MAAMsF,yBAAxB,EAAmD;AACjDtF,kBAAMqF,QAAN,CAAe/B,UAAf;AACD;AACF,SAZD;AAaD;AACD,aAAOzB,MAAP;AACD,KAnBe,CAAhB;;AAqBA;AACA;AACA;AACA1L,YAAQ,CAAR,EAAW+L,KAAX,GAAmB,IAAnB;AACA/L,YAAQA,QAAQuG,MAAR,GAAiB,CAAzB,EAA4ByF,IAA5B,GAAmC,IAAnC;AACA,WAAOhM,OAAP;AACD;;AAEDoK,WAAS;AACP,WAAQ,yCAAC,uBAAD;AACN,eAAS,KAAKP,KAAL,CAAWxE,OADd;AAEN,gBAAU,KAAKwE,KAAL,CAAWqB,QAFf;AAGN,eAAS,KAAK2D,UAAL,EAHH,GAAR;AAID;AA1CgD;AAAA;AAAA;;AA6C5C,MAAMO,WAAW,0CAAAC,CAAW,kBAAX,CAAjB,C;;;;;;;;;;;;;;;;;ACrDP;AACA;AACA;AACA;;AAEA,MAAMC,UAAU,SAAhB;AACA,MAAMC,0BAA0B,kBAAhC;;AAEA,SAASC,mBAAT,CAA6BC,OAA7B,EAAsC;AACpC,SAAO,OAAOA,OAAP,KAAmB,QAAnB,GAA8B;AAAA;AAAA;AAAOA;AAAP,GAA9B,GAAuD,4DAAC,4DAAD,EAAsBA,OAAtB,CAA9D;AACD;AACD,SAASC,YAAT,CAAsB7F,KAAtB,EAA6B;AAC3B,SAAQA,MAAM8F,QAAN,IAAkB9F,MAAM1E,KAAN,CAAYxB,MAA/B,GAAyCkG,MAAM1E,KAAN,CAAYxB,MAAZ,CAAmBkG,MAAM8F,QAAzB,CAAzC,GAA8E,KAArF;AACD;;AAEM,MAAMC,IAAN,SAAmB,6CAAAjG,CAAMC,aAAzB,CAAuC;AAC5C1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKgG,WAAL,GAAmB,KAAKA,WAAL,CAAiB5F,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAK6F,WAAL,GAAmB,KAAKA,WAAL,CAAiB7F,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAK8F,aAAL,GAAqB,KAAKA,aAAL,CAAmB9F,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKQ,KAAL,GAAa,EAACuF,YAAY,KAAb,EAAb;AACD;;AAED;;;AAGAC,gBAAcC,UAAd,EAA0B;AACxB,UAAMF,aAAa,CAAC,CAACE,UAArB;AACA,QAAIF,eAAe,KAAKvF,KAAL,CAAWuF,UAA9B,EAA0C;AACxC,WAAKlF,QAAL,CAAc,EAACkF,UAAD,EAAd;AACD;AACF;;AAEDH,gBAAc;AACZ;AACA,SAAKI,aAAL,CAAmB,IAAnB;AACD;;AAEDH,cAAYjE,KAAZ,EAAmB;AACjB;AACA;AACA;AACA,SAAKoE,aAAL,CAAmBpE,SAASA,MAAMsE,aAAf,KACjBtE,MAAMsE,aAAN,KAAwBtE,MAAMuE,aAA9B,IACCvE,MAAMsE,aAAN,CAAoBE,uBAApB,CAA4CxE,MAAMuE,aAAlD,IACCE,KAAKC,0BAHU,CAAnB;AAID;;AAEDR,kBAAgB;AACd,SAAKlG,KAAL,CAAWqF,QAAX,CAAoB,EAACrP,MAAM,uEAAA4F,CAAG+D,aAAV,EAApB;AACA,SAAKK,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,mBAAR,EAAb,CAApB;AACD;;AAEDzB,WAAS;AACP,UAAM,EAACoG,UAAD,EAAaxB,IAAb,KAAqB,KAAKnF,KAAhC;AACA,UAAM4G,0BAA0B;AAC9B,uBAAiB,MADa;AAE9B,uBAAiB,aAFa;AAG9B,uBAAiB,KAAKhG,KAAL,CAAWuF,UAAX,GAAwB,MAAxB,GAAiC,OAHpB;AAI9B,cAAQ,MAJsB;AAK9B,kBAAY;AALkB,KAAhC;AAOA,UAAMU,mBAAmB1B,KAAKC,aAAL,CAAmB,EAAChH,IAAI,qBAAL,EAAnB,CAAzB;;AAEA,WACE;AAAA;AAAA,QAAM,WAAU,qBAAhB;AACE,gBAAQ,KAAK6H,WADf;AAEE,iBAAS,KAAKD,WAFhB;AAGE,oBAAY,KAAKC,WAHnB;AAIE,qBAAa,KAAKD,WAJpB;AAKE,oFAAK,WAAU,kBAAf,EAAkC,OAAOa;AAAzC,SACMD,uBADN,EALF;AAOE;AAAA;AAAA,UAAK,WAAU,aAAf;AACGD,mBAAWG,MAAX,IACC;AAAA;AAAA,YAAK,WAAU,oBAAf,EAAoC,MAAK,SAAzC;AACGnB,8BAAoBgB,WAAWG,MAA/B;AADH,SAFJ;AAKE;AAAA;AAAA,YAAG,WAAU,kBAAb;AACGH,qBAAWI,IAAX,IAAmBpB,oBAAoBgB,WAAWI,IAA/B,CADtB;AAEGJ,qBAAWzK,IAAX,IACC;AAAA;AAAA,cAAG,MAAMyK,WAAWzK,IAAX,CAAgB8K,IAAzB,EAA+B,QAAO,QAAtC,EAA+C,KAAI,qBAAnD,EAAyE,WAAU,kBAAnF;AACGrB,gCAAoBgB,WAAWzK,IAAX,CAAgBuC,KAAhB,IAAyBkI,WAAWzK,IAAxD;AADH;AAHJ,SALF;AAaE;AAAA;AAAA,YAAK,WAAU,oBAAf;AACE;AAAA;AAAA,cAAQ,SAAS,KAAKgK,aAAtB;AACE,wEAAC,4DAAD,IAAkB,IAAG,sBAArB;AADF;AADF;AAbF;AAPF,KADF;AA6BD;AA/E2C;AAAA;AAAA;;AAkFvC,MAAMe,WAAW,8DAAAzB,CAAWO,IAAX,CAAjB;AAAA;AAAA;;AAEA,MAAMmB,UAAN,SAAyB,6CAAApH,CAAMC,aAA/B,CAA6C;AAClD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKmH,aAAL,GAAqB,KAAKA,aAAL,CAAmB/G,IAAnB,CAAwB,IAAxB,CAArB;AACD;;AAED+G,kBAAgB;AACd,SAAKnH,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAGrK,OAAH,CAAW,KAAK4H,KAAL,CAAWoH,cAAtB,EAAsC,KAAtC,CAApB;AACA,SAAKpH,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,iCAAR,EAA2CvJ,QAAQ,KAAKuH,KAAL,CAAWoD,WAA9D,EAAb,CAApB;AACD;;AAED7C,WAAS;AACP,UAAM,EAAC8G,UAAD,KAAe,KAAKrH,KAA1B;AACA,WACE;AAAA;AAAA,QAAK,WAAU,oBAAf;AACI;AAAA;AAAA,UAAK,WAAU,yBAAf;AACG2F,4BAAoB0B,WAAWC,IAA/B,CADH;AAEGD,mBAAWnL,IAAX,IACC;AAAA;AAAA,YAAG,MAAMmL,WAAWnL,IAAX,CAAgB8K,IAAzB,EAA+B,QAAO,QAAtC,EAA+C,KAAI,qBAAnD;AACGrB,8BAAoB0B,WAAWnL,IAAX,CAAgBuC,KAAhB,IAAyB4I,WAAWnL,IAAxD;AADH;AAHJ,OADJ;AAUI;AAAA;AAAA,UAAQ,SAAS,KAAKiL,aAAtB;AACGxB,4BAAoB0B,WAAWE,MAA/B;AADH;AAVJ,KADF;AAgBD;AA7BiD;AAAA;AAAA;;AAgC7C,MAAMC,iBAAiB,8DAAAhC,CAAW0B,UAAX,CAAvB;AAAA;AAAA;;AAEA,MAAMO,mBAAN,SAAkC,6CAAA3H,CAAMC,aAAxC,CAAsD;AAC3D1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAK0H,WAAL,GAAmB,KAAKA,WAAL,CAAiBtH,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAK4F,WAAL,GAAmB,KAAKA,WAAL,CAAiB5F,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAK6F,WAAL,GAAmB,KAAKA,WAAL,CAAiB7F,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKuH,aAAL,GAAqB,KAAKA,aAAL,CAAmBvH,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKwH,eAAL,GAAuB,KAAKA,eAAL,CAAqBxH,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKyH,wBAAL,GAAgC,KAAKA,wBAAL,CAA8BzH,IAA9B,CAAmC,IAAnC,CAAhC;AACA,SAAKQ,KAAL,GAAa,EAACkH,iBAAiB,IAAlB,EAAwBC,aAAa,KAArC,EAA4C5B,YAAY,KAAxD,EAAb;AACD;;AAED7E,uBAAqB;AACnB,SAAKtB,KAAL,CAAWgI,QAAX,CAAoBtG,gBAApB,CAAqCgE,uBAArC,EAA8D,KAAKmC,wBAAnE;AACD;;AAEDI,sBAAoBC,SAApB,EAA+B;AAC7B;AACA,QAAI,CAACrC,aAAa,KAAK7F,KAAlB,CAAD,IAA6B6F,aAAaqC,SAAb,CAAjC,EAA0D;AACxD;AACA;AACA;AACA;AACA,WAAKC,WAAL,CAAiBC,YAAjB,CALwD,CAKzB;AAChC;AACF;;AAEDxG,yBAAuB;AACrB,SAAK5B,KAAL,CAAWgI,QAAX,CAAoBrG,mBAApB,CAAwC+D,uBAAxC,EAAiE,KAAKmC,wBAAtE;AACD;;AAEDA,6BAA2B;AACzB;AACA,UAAMrM,UAAU,KAAKwE,KAAL,CAAWgI,QAAX,CAAoBK,eAApB,KAAwC5C,OAAxD;AACA,QAAI,KAAK7E,KAAL,CAAWkH,eAAX,KAA+BtM,OAAnC,EAA4C;AAC1C,WAAKyF,QAAL,CAAc,EAAC6G,iBAAiBtM,OAAlB,EAAd;AACD;AACF;;AAED4K,gBAAcC,UAAd,EAA0B;AACxB;AACA,UAAMF,aAAa,CAAC,CAACE,UAArB;AACA,QAAIF,eAAe,KAAKvF,KAAL,CAAWuF,UAA9B,EAA0C;AACxC,WAAKlF,QAAL,CAAc,EAACkF,UAAD,EAAd;AACD;AACF;;AAEDuB,cAAYY,IAAZ,EAAkB;AAChB,SAAKH,WAAL,GAAmBG,IAAnB;AACD;;AAEDtC,gBAAc;AACZ;AACA,SAAKI,aAAL,CAAmB,IAAnB;AACD;;AAEDH,cAAYjE,KAAZ,EAAmB;AACjB;AACA;AACA;AACA,SAAKoE,aAAL,CAAmBpE,SAASA,MAAMsE,aAAf,KACjBtE,MAAMsE,aAAN,KAAwBtE,MAAMuE,aAA9B,IACCvE,MAAMsE,aAAN,CAAoBE,uBAApB,CAA4CxE,MAAMuE,aAAlD,IACCE,KAAKC,0BAHU,CAAnB;AAID;;AAEDiB,kBAAgB;AACd;AACA;AACA;AACA,QAAI,CAAC,KAAKQ,WAAV,EAAuB;AACrB;AACD;;AAED;AACA,SAAKlH,QAAL,CAAc;AACZ8G,mBAAa,IADD;AAEZQ,iBAAY,GAAE,KAAKJ,WAAL,CAAiBC,YAAa;AAFhC,KAAd;AAIA,SAAKpI,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAGrK,OAAH,CAAW,KAAK4H,KAAL,CAAW8F,QAAtB,EAAgC,CAACD,aAAa,KAAK7F,KAAlB,CAAjC,CAApB;AACD;;AAED4H,kBAAgB5F,KAAhB,EAAuB;AACrB;AACA,QAAIA,MAAM5K,MAAN,KAAiB4K,MAAMuE,aAA3B,EAA0C;AACxC,WAAKtF,QAAL,CAAc,EAAC8G,aAAa,KAAd,EAAd;AACD;AACF;;AAEDS,eAAa;AACX,UAAM,EAACpG,IAAD,KAAS,KAAKpC,KAApB;AACA,QAAIoC,QAAQA,KAAKqG,UAAL,CAAgB,kBAAhB,CAAZ,EAAiD;AAC/C,aAAO,sEAAM,WAAU,wBAAhB,EAAyC,OAAO,EAACC,iBAAkB,QAAOtG,IAAK,IAA/B,EAAhD,GAAP;AACD;AACD,WAAO,sEAAM,WAAY,+BAA8BA,QAAQ,cAAe,EAAvE,GAAP;AACD;;AAED7B,WAAS;AACP,UAAMoI,gBAAgB,KAAK3I,KAAL,CAAW8F,QAAX,IAAuB,KAAK9F,KAAL,CAAW1E,KAAX,CAAiBxB,MAA9D;AACA,UAAM8O,cAAc/C,aAAa,KAAK7F,KAAlB,CAApB;AACA,UAAM,EAAC8H,eAAD,EAAkBC,WAAlB,EAA+BQ,SAA/B,KAA4C,KAAK3H,KAAvD;AACA,UAAM,EAACxC,EAAD,EAAKuI,UAAL,EAAiBvD,WAAjB,EAA8BiE,UAA9B,KAA4C,KAAKrH,KAAvD;AACA,UAAMoH,iBAAkB,WAAUhJ,EAAG,iBAArC;AACA,UAAMyK,kBAAkBxB,cAAc,KAAKrH,KAAL,CAAW1E,KAAX,CAAiBxB,MAAjB,CAAwBsN,cAAxB,CAAtC;;AAEA,WACE;AAAA;AAAA,QAAS,WAAY,uBAAsB,KAAKpH,KAAL,CAAWS,SAAU,GAAEqH,kBAAkB,oBAAlB,GAAyC,EAAG,GAAEc,cAAc,YAAd,GAA6B,EAAG,EAAhJ;AACE;AAAA;AAAA,UAAK,WAAU,iBAAf;AACE;AAAA;AAAA,YAAI,WAAU,eAAd;AACE;AAAA;AAAA,cAAM,WAAU,cAAhB,EAA+B,SAASD,iBAAiB,KAAKhB,aAA9D;AACG,iBAAKa,UAAL,EADH;AAEG,iBAAKxI,KAAL,CAAWvB,KAFd;AAGCkK,6BAAiB,sEAAM,WAAY,0BAAyBC,cAAc,wBAAd,GAAyC,qBAAsB,EAA1G;AAHlB;AADF,SADF;AAQGjC,sBAAc,4DAAC,QAAD,IAAU,YAAYA,UAAtB,EAAkC,UAAU,KAAK3G,KAAL,CAAWqF,QAAvD;AARjB,OADF;AAWE;AAAC,iHAAD;AAAA,UAAe,WAAU,uBAAzB;AACE;AAAA;AAAA;AACE,uBAAY,eAAc0C,cAAc,YAAd,GAA6B,EAAG,EAD5D;AAEE,6BAAiB,KAAKH,eAFxB;AAGE,iBAAK,KAAKF,WAHZ;AAIE,mBAAOK,eAAe,CAACa,WAAhB,GAA8B,EAACL,SAAD,EAA9B,GAA4C,IAJrD;AAKGM,6BAAmB,4DAAC,cAAD,IAAgB,gBAAgBzB,cAAhC,EAAgD,YAAYC,UAA5D,EAAwE,aAAajE,WAArF,EAAkG,UAAU,KAAKpD,KAAL,CAAWqF,QAAvH,GALtB;AAMG,eAAKrF,KAAL,CAAWkB;AANd;AADF;AAXF,KADF;AAwBD;AAjI0D;AAAA;AAAA;;AAoI7DuG,oBAAoB/G,YAApB,GAAmC;AACjCsH,YAAUc,OAAOd,QAAP,IAAmB;AAC3BtG,sBAAkB,MAAM,CAAE,CADC;AAE3BC,yBAAqB,MAAM,CAAE,CAFF;AAG3B0G,qBAAiB;AAHU,GADI;AAMjC/M,SAAO,EAACxB,QAAQ,EAAT;AAN0B,CAAnC;;AASO,MAAMiP,qBAAqB,8DAAAvD,CAAWiC,mBAAX,CAA3B,C;;;;;;;;;;;;;;AClRP;AACA;AACA;;AAEA;AACA;AACA,MAAMuB,oBAAoB,CAAC,YAAD,EAAe,UAAf,CAA1B;;AAEO,MAAMC,kBAAN,SAAiC,6CAAAnJ,CAAMoJ,SAAvC,CAAiD;AACtD7P,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA;AACA,SAAKmJ,OAAL,GAAe,KAAKnJ,KAAL,CAAWmJ,OAAX,IAAsB,2EAArC;;AAEA,SAAKC,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBhJ,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKiJ,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBjJ,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKkJ,kBAAL,GAA0B,KAA1B;AACA,SAAKC,iBAAL,GAAyB,KAAzB;AACA,SAAKC,oBAAL,GAA4B,KAA5B;AACD;;AAEDC,sBAAoB;AAClB,QAAI,CAACT,kBAAkB3M,QAAlB,CAA2B,KAAK2D,KAAL,CAAW5B,EAAtC,CAAL,EAAgD;AAC9C;AACD;;AAED,SAAKsL,sBAAL;AACD;;AAEDnI,uBAAqB;AACnB,QAAI,CAACyH,kBAAkB3M,QAAlB,CAA2B,KAAK2D,KAAL,CAAW5B,EAAtC,CAAL,EAAgD;AAC9C;AACD;;AAED,SAAKsL,sBAAL;AACD;;AAED;;;;;;;;;;;;;;;;;;;;AAoBAC,mBAAiBC,QAAjB,EAA2B;AACzBC,0BAAsB,MAAMpI,WAAWmI,QAAX,EAAqB,CAArB,CAA5B;AACD;;AAEDE,4BAA0B;AACxB;AACA;AACA,QAAI,CAAC,KAAK9J,KAAL,CAAWhF,WAAhB,EAA6B;AAC3B;AACA,WAAKsO,kBAAL,GAA0B,IAA1B;AACD,KAHD,MAGO,IAAI,KAAKA,kBAAT,EAA6B;AAClC,WAAKA,kBAAL,GAA0B,KAA1B;AACA;AACA,WAAKF,kBAAL;AACD;AACF;;AAEDM,2BAAyB;AACvB;AACA,QAAI,KAAKH,iBAAL,IAA0B,CAAC,KAAKvJ,KAAL,CAAWhF,WAA1C,EAAuD;AACrD;AACD;;AAED;AACA;AACA;AACA;AACA;AACA,SAAKuO,iBAAL,GAAyB,IAAzB;AACA,SAAKI,gBAAL,CAAsB,KAAKN,iBAA3B;AACD;;AAED;;;;AAIAU,iCAA+B;AAC7B;AACA,QAAI,CAAC,KAAKP,oBAAV,EAAgC;AAC9B,WAAKA,oBAAL,GAA4B,IAA5B;AACA;AACA,YAAMvP,MAAO,GAAE,KAAK+F,KAAL,CAAW5B,EAAG,kBAA7B;AACA,WAAK+K,OAAL,CAAaa,IAAb,CAAkB/P,GAAlB;AACD;AACF;;AAED;;;;;;AAMAmP,uBAAqB;AACnB;AACA,UAAMa,eAAgB,GAAE,KAAKjK,KAAL,CAAW5B,EAAG,gBAAtC;AACA,SAAK+K,OAAL,CAAaa,IAAb,CAAkBC,YAAlB;;AAEA,QAAI;AACF,YAAMC,iBAAkB,GAAE,KAAKlK,KAAL,CAAW5B,EAAG,kBAAxC;AACA;AACA,YAAM9F,QAAQ6R,SAAS,KAAKhB,OAAL,CAAaiB,+BAAb,CAA6CH,YAA7C,IACA,KAAKd,OAAL,CAAaiB,+BAAb,CAA6CF,cAA7C,CADT,EACuE,EADvE,CAAd;AAEA,WAAKlK,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAGxL,UAAH,CAAc;AAChCjB,cAAM,uEAAA4F,CAAGyO,sBADuB;AAEhC;AACA1S,cAAM,EAAC,CAAE,GAAE,KAAKqI,KAAL,CAAW5B,EAAG,kBAAlB,GAAsC9F,KAAvC;AAH0B,OAAd,CAApB;AAKD,KAVD,CAUE,OAAOgS,EAAP,EAAW;AACX;AACA;AACD;AACF;;AAEDjB,sBAAoB;AAClB;AACA,QAAI,KAAKrJ,KAAL,CAAW5B,EAAX,KAAkB,UAAtB,EAAkC;AAChC;AACD;;AAED;AACA,UAAMnE,MAAO,GAAE,KAAK+F,KAAL,CAAW5B,EAAG,mBAA7B;AACA,SAAK+K,OAAL,CAAaa,IAAb,CAAkB/P,GAAlB;;AAEA,QAAI;AACF,YAAMtC,OAAO,EAAb;AACAA,WAAKsC,GAAL,IAAY,KAAKkP,OAAL,CAAaiB,+BAAb,CAA6CnQ,GAA7C,CAAZ;;AAEA,WAAK+F,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAGxL,UAAH,CAAc;AAChCjB,cAAM,uEAAA4F,CAAGyO,sBADuB;AAEhC1S;AAFgC,OAAd,CAApB;AAID,KARD,CAQE,OAAO2S,EAAP,EAAW;AACX;AACA;AACA;AACD;AACF;;AAED/J,WAAS;AACP,QAAIyI,kBAAkB3M,QAAlB,CAA2B,KAAK2D,KAAL,CAAW5B,EAAtC,CAAJ,EAA+C;AAC7C,WAAK2L,4BAAL;AACA,WAAKD,uBAAL;AACD;AACD,WAAO,KAAK9J,KAAL,CAAWkB,QAAlB;AACD;AAzJqD,C;;;;;;;;;;ACRxD;AAAA;AACA;;AAEA;;AACA,IAAI,OAAOqJ,WAAP,KAAuB,WAA3B,EAAwC;AACtCA,cAAYC,MAAZ,CAAmB,qCAAnB;AACD;;AAED,IAAIC,aAAJ;;AAEA;AACA;AACA,IAAI,OAAOC,QAAP,KAAoB,WAAxB,EAAqC;AACnC;AACAD,kBAAgBC,SAASC,QAAT,CAAkBC,eAAlB,CAAkCC,WAAlD;AACD,CAHD,MAGO,IAAI,OAAOA,WAAP,KAAuB,WAA3B,EAAwC;AAC7C;AACA;AACAJ,kBAAgBI,WAAhB;AACD,CAJM,MAIA;AACL;AACA;AACAJ,kBAAgB;AACdK,UAAM,CAAE,CADM;AAEdd,WAAO,CAAE;AAFK,GAAhB;AAID;;AAEmB,SAASe,YAAT,CAAsB5U,OAAtB,EAA+B;AACjD;AACA;AACA,MAAIA,WAAWA,QAAQ6U,cAAvB,EAAuC;AACrC,SAAKC,KAAL,GAAa9U,QAAQ6U,cAArB;AACD,GAFD,MAEO;AACL,SAAKC,KAAL,GAAaR,aAAb;AACD;AACF;;;AAEDM,aAAaG,SAAb,GAAyB;AACvB;;;;;;;;AAQAlB,QAAM,SAASA,IAAT,CAAcmB,GAAd,EAAmB;AACvB,SAAKF,KAAL,CAAWjB,IAAX,CAAgBmB,GAAhB;AACD,GAXsB;;AAavB;;;;;;;;AAQAC,oBAAkB,SAASA,gBAAT,CAA0B/S,IAA1B,EAAgCrC,IAAhC,EAAsC;AACtD,WAAO,KAAKiV,KAAL,CAAWG,gBAAX,CAA4B/S,IAA5B,EAAkCrC,IAAlC,CAAP;AACD,GAvBsB;;AAyBvB;;;;;;;;;;;;;;;AAeA,MAAIqV,UAAJ,GAAiB;AACf,WAAO,KAAKJ,KAAL,CAAWI,UAAlB;AACD,GA1CsB;;AA4CvB;;;;;;;AAOAC,UAAQ,SAASA,MAAT,GAAkB;AACxB,WAAO,KAAKD,UAAL,GAAkB,KAAKJ,KAAL,CAAWH,GAAX,EAAzB;AACD,GArDsB;;AAuDvB;;;;;;;;;;;;;;;;;;AAkBAV,kCAAgC/R,IAAhC,EAAsC;AACpC,QAAIkT,UAAU,KAAKH,gBAAL,CAAsB/S,IAAtB,EAA4B,MAA5B,CAAd;;AAEA,QAAI,CAACkT,QAAQ7O,MAAb,EAAqB;AACnB,YAAM,IAAIjG,KAAJ,CAAW,0BAAyB4B,IAAK,EAAzC,CAAN;AACD;;AAED,QAAImT,kBAAkBD,QAAQA,QAAQ7O,MAAR,GAAiB,CAAzB,CAAtB;AACA,WAAO,KAAKuO,KAAL,CAAWI,UAAX,GAAwBG,gBAAgBC,SAA/C;AACD;AAlFsB,CAAzB;;kBAqFmB,IAAIV,YAAJ,E;;;;;;;;;;;;;;;;;;;;AC3HnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMW,QAAQ,qFAAAC,CAAU,qEAAV,EAAoB7C,OAAO8C,+BAA3B,CAAd;;AAEA,IAAI,yGAAJ,CAA2BF,KAA3B,EAAkCG,sBAAlC;;AAEA;AACA;AACA;AACA,IAAI,CAAC/C,OAAO8C,+BAAZ,EAA6C;AAC3CF,QAAMrG,QAAN,CAAe,0EAAA5C,CAAG7L,UAAH,CAAc,EAACZ,MAAM,uEAAA4F,CAAGkQ,qBAAV,EAAd,CAAf;AACD;;AAED,iDAAAC,CAASC,OAAT,CAAiB;AAAC,uDAAD;AAAA,IAAU,OAAON,KAAjB;AACf,8DAAC,8EAAD;AACE,mBAAe,CAAC,CAAC5C,OAAO8C,+BAD1B;AAEE,YAAQ9C,OAAOd,QAAP,CAAgBiE,eAAhB,CAAgCC,IAF1C;AAGE,aAASpD,OAAOqD,sBAHlB;AADe,CAAjB,EAKanE,SAASoE,cAAT,CAAwB,MAAxB,CALb;;AAOA,+FAAAC,CAAsBX,KAAtB,E;;;;;;;;;AC5BA;AAAA,MAAMY,gBAAgB,aAAtB;AACA,MAAMC,mBAAmB,CAAzB;AACA,MAAMC,4BAA4B,UAAlC;AACO,MAAMC,8BAA8B,QAApC,C;;CAA8C;;AAErD,MAAMC,yBAAyB,kBAA/B;AACA,MAAMC,0BAA0B,mBAAhC;;AAEA;;AAEA;;;;;;;;AAQO,MAAMC,WAAN,SAA0B5S,GAA1B,CAA8B;AACnCX,cAAYgM,QAAZ,EAAsB;AACpB;AACA,SAAKwH,GAAL,GAAW,IAAX;AACA,SAAKC,SAAL,GAAiBzH,QAAjB;AACD;;AAEDlL,MAAIF,GAAJ,EAAS3B,KAAT,EAAgB;AACd,UAAM6B,GAAN,CAAUF,GAAV,EAAe3B,KAAf;AACA,WAAO,KAAKyU,cAAL,CAAoBC,MAAMA,GAAGC,GAAH,CAAO3U,KAAP,EAAc2B,GAAd,CAA1B,CAAP;AACD;;AAEDiT,SAAOjT,GAAP,EAAY;AACV,UAAMiT,MAAN,CAAajT,GAAb;AACA,WAAO,KAAK8S,cAAL,CAAoBC,MAAMA,GAAGE,MAAH,CAAUjT,GAAV,CAA1B,CAAP;AACD;;AAEDkT,UAAQ;AACN,UAAMA,KAAN;AACA,WAAO,KAAKJ,cAAL,CAAoBC,MAAMA,GAAGG,KAAH,EAA1B,CAAP;AACD;;AAED,MAAIC,SAAJ,GAAgB;AACd,WAAO,KAAKC,GAAL,CAAS,WAAT,KAAyB,EAAhC;AACD;;AAED;;;;;;;AAOA,QAAMC,gBAAN,CAAuBlP,EAAvB,EAA2B;AACzB,QAAI,CAACA,EAAL,EAAS;AACP;AACD;AACD,UAAM,EAACgP,SAAD,KAAc,IAApB;AACA,QAAI,CAACA,UAAU/Q,QAAV,CAAmB+B,EAAnB,CAAL,EAA6B;AAC3BgP,gBAAUhT,IAAV,CAAegE,EAAf;AACA,WAAK0O,SAAL,CAAe,0EAAArK,CAAG7L,UAAH,CAAc,EAACZ,MAAM,uEAAA4F,CAAG2R,0BAAV,EAAsC5V,MAAMyV,SAA5C,EAAd,CAAf;AACA,YAAM,KAAKjT,GAAL,CAAS,WAAT,EAAsBiT,SAAtB,CAAN;AACD;AACF;;AAEDI,sBAAoB;AAClB,SAAKV,SAAL,CAAe,0EAAArK,CAAG7L,UAAH,CAAc,EAACZ,MAAM,uEAAA4F,CAAG6R,kBAAV,EAAd,CAAf;AACD;;AAEDC,wBAAsB;AACpB,SAAKZ,SAAL,CAAe,0EAAArK,CAAG7L,UAAH,CAAc,EAACZ,MAAM,uEAAA4F,CAAG+R,qBAAV,EAAd,CAAf;AACD;;AAED;;;;;;;AAOA,QAAMC,OAAN,GAAgB;AACd;AACA,UAAMZ,KAAK,MAAM,KAAKa,OAAL,EAAjB;;AAEA;AACA,UAAM,KAAKC,cAAL,CAAoBd,EAApB,CAAN;;AAEA;AACA,SAAKH,GAAL,GAAWG,EAAX;AACD;;AAED;;;;;;;;;AASAD,iBAAegB,QAAf,EAAyB;AACvB,QAAI,CAAC,KAAKlB,GAAV,EAAe;AACb,aAAOmB,QAAQC,OAAR,EAAP;AACD;AACD,WAAO,IAAID,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,YAAMC,cAAcJ,SAClB,KAAKlB,GAAL,CACGsB,WADH,CACe3B,yBADf,EAC0C,WAD1C,EAEG4B,WAFH,CAEe5B,yBAFf,CADkB,CAApB;AAKA2B,kBAAYE,SAAZ,GAAwBrM,SAASiM,SAAjC;;AAEA;AACAE,kBAAYG,OAAZ,GAAsBtM,SAASkM,OAAOC,YAAYpN,KAAnB,CAA/B;AACD,KAVM,CAAP;AAWD;;AAED8M,YAAU;AACR,WAAO,IAAIG,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,YAAMK,cAAcC,UAAUC,IAAV,CAAenC,aAAf,EAA8BC,gBAA9B,CAApB;;AAEA;AACAgC,kBAAYD,OAAZ,GAAsBtM,SAAS;AAC7B;AACA;AACAwM,kBAAUE,cAAV,CAAyBpC,aAAzB;AACA4B,eAAOlM,KAAP;AACD,OALD;;AAOAuM,kBAAYI,eAAZ,GAA8B3M,SAAS;AACrC,cAAMgL,KAAKhL,MAAM5K,MAAN,CAAayC,MAAxB;AACA,YAAI,CAACmT,GAAG4B,gBAAH,CAAoBC,QAApB,CAA6BrC,yBAA7B,CAAL,EAA8D;AAC5DQ,aAAG8B,iBAAH,CAAqBtC,yBAArB;AACD;AACF,OALD;;AAOA+B,kBAAYF,SAAZ,GAAwBrM,SAAS;AAC/B,YAAIgL,KAAKhL,MAAM5K,MAAN,CAAayC,MAAtB;;AAEA;AACAmT,WAAGsB,OAAH,GAAaS,OAAOC,QAAQjO,KAAR,CAAcgO,GAAd,CAApB,CAJ+B,CAIS;AACxC;AACA/B,WAAGiC,eAAH,GAAqBC,sBAAsBA,mBAAmB9X,MAAnB,CAA0B+X,KAA1B,EAA3C;;AAEAlB,gBAAQjB,EAAR;AACD,OATD;AAUD,KA5BM,CAAP;AA6BD;;AAEDc,iBAAed,EAAf,EAAmB;AACjB,WAAO,IAAIgB,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,UAAIkB,aAAJ;AACA,UAAI;AACFA,wBAAgBpC,GAAGmB,WAAH,CAAe3B,yBAAf,EACb4B,WADa,CACD5B,yBADC,EAC0B6C,UAD1B,EAAhB;AAED,OAHD,CAGE,OAAON,GAAP,EAAY;AACZ;AACAb,eAAOa,GAAP;AACA;AACA;AACD;;AAED;AACAK,oBAAcd,OAAd,GAAwBtM,SAASkM,OAAOlM,KAAP,CAAjC;;AAEAoN,oBAAcf,SAAd,GAA0BrM,SAAS;AACjC,YAAIsN,SAAStN,MAAM5K,MAAN,CAAayC,MAA1B;AACA;AACA,YAAIyV,MAAJ,EAAY;AACV,eAAKnV,GAAL,CAASmV,OAAOrV,GAAhB,EAAqBqV,OAAOhX,KAA5B;AACAgX,iBAAOC,QAAP;AACD,SAHD,MAGO;AACL;AACAtB;AACD;AACF,OAVD;AAWD,KA1BM,CAAP;AA2BD;AA7JkC;AAAA;AAAA;;AAgKrC;;;;;AAKO,MAAMuB,gBAAN,CAAuB;AAC5BnW,cAAYgM,QAAZ,EAAsB;AACpB;AACA;AACAyD,WAAO2G,YAAP,GAAsB,IAAI7C,WAAJ,CAAgBvH,QAAhB,CAAtB;AACA,SAAKqK,SAAL,GAAiB,KAAKA,SAAL,CAAetP,IAAf,CAAoB,IAApB,CAAjB;AACD;;AAED,MAAIuP,WAAJ,GAAkB;AAChB,WAAO7G,OAAO2G,YAAd;AACD;;AAED,QAAMG,gBAAN,GAAyB;AACvB;AACA;AACA,UAAMC,gBAAgB,KAAKF,WAAL,CAAiBtC,GAAjB,CAAqB,yBAArB,CAAtB;;AAEA,QAAIwC,kBAAkB,KAAKC,OAAL,CAAa7U,OAAnC,EAA4C;AAC1C,WAAK0U,WAAL,CAAiBxC,KAAjB;AACD;;AAED;AACA,UAAM4C,aAAa,KAAKJ,WAAL,CAAiBtC,GAAjB,CAAqB,sBAArB,CAAnB;AACA,UAAM2C,cAAc,EAAED,cAAc,CAAhB,KAAsBE,KAAKnF,GAAL,KAAaiF,UAAb,GAA0BtD,2BAApE;;AAEA,QAAIuD,eAAe,KAAKF,OAAL,CAAaI,WAAhC,EAA6C;AAC3C,WAAKP,WAAL,CAAiBxV,GAAjB,CAAqB,sBAArB,EAA6C8V,KAAKnF,GAAL,EAA7C;AACA,UAAI;AACF,cAAMqF,WAAW,MAAMC,MAAM,KAAKN,OAAL,CAAaI,WAAnB,CAAvB;AACA,YAAIC,SAASE,MAAT,KAAoB,GAAxB,EAA6B;AAC3B,gBAAMC,UAAU,MAAMH,SAAS7I,IAAT,EAAtB;;AAEA,eAAKqI,WAAL,CAAiBxV,GAAjB,CAAqB,UAArB,EAAiCmW,OAAjC;AACA,eAAKX,WAAL,CAAiBxV,GAAjB,CAAqB,yBAArB,EAAgD,KAAK2V,OAAL,CAAa7U,OAA7D;AACD;AACF,OARD,CAQE,OAAOsV,CAAP,EAAU;AACVvB,gBAAQjO,KAAR,CAAcwP,CAAd,EADU,CACQ;AACnB;AACF;AACF;;AAEDC,uBAAqB;AACnB;AACD;;AAEDC,6BAA2BC,eAA3B,EAA4C;AAC1C,UAAMC,eAAe3I,SAASoE,cAAT,CAAwB,6BAAxB,CAArB;;AAEA,QAAIuE,YAAJ,EAAkB;AAChBA,mBAAaC,KAAb,CAAmBC,OAAnB,GAA6BH,kBAAkB,EAAlB,GAAuB,MAApD;AACD;AACF;;AAEDI,wBAAsB;AACpB,UAAMC,aAAa/I,SAASoE,cAAT,CAAwB,KAAK4E,SAA7B,CAAnB;AACA,UAAMV,UAAU,KAAKX,WAAL,CAAiBtC,GAAjB,CAAqB,UAArB,CAAhB;;AAEA,QAAI,CAAC0D,UAAL,EAAiB;AACf,YAAM,IAAIta,KAAJ,CAAW,iCAAgC,KAAKua,SAAU,IAA1D,CAAN;AACD;;AAED;AACA,QAAI,CAACV,OAAL,EAAc;AACZ,YAAM,IAAI7Z,KAAJ,CAAU,gDAAV,CAAN;AACD;;AAED,QAAI,OAAO6Z,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,YAAM,IAAI7Z,KAAJ,CAAU,2CAAV,CAAN;AACD;;AAED;AACA;AACAsa,eAAWE,SAAX,GAAuBX,OAAvB;;AAEA;AACA;AACA,SAAK,MAAMY,QAAX,IAAuBH,WAAWI,oBAAX,CAAgC,QAAhC,CAAvB,EAAkE;AAChE,YAAMC,kBAAkBpJ,SAASqJ,aAAT,CAAuB,QAAvB,CAAxB;AACAD,sBAAgB9J,IAAhB,GAAuB4J,SAAS5J,IAAhC;AACA4J,eAASI,UAAT,CAAoBC,YAApB,CAAiCH,eAAjC,EAAkDF,QAAlD;AACD;AACF;;AAEDxB,YAAU8B,GAAV,EAAe;AACb,QAAIA,IAAI7Z,IAAJ,CAAS3B,IAAT,KAAkB,uEAAA4F,CAAG6V,eAAzB,EAA0C;AACxC,WAAK9B,WAAL,CAAiBxV,GAAjB,CAAqB,WAArB,EAAkCqX,IAAI7Z,IAAJ,CAASA,IAA3C;AACAqQ,eAASoE,cAAT,CAAwB,oBAAxB,EAA8CwE,KAA9C,CAAoDC,OAApD,GAA8D,MAA9D;AACD;AACF;;AAED;;;;;;;;;AASA,QAAMa,IAAN,CAAWvb,OAAX,EAAoB;AAClBE,WAAOC,MAAP,CAAc,IAAd,EAAoB;AAClBwZ,eAAS,EADS;AAElBkB,iBAAW,UAFO;AAGlBpD,eAAS;AAHS,KAApB,EAIGzX,OAJH;;AAMA;AACA,QAAI2S,OAAO6I,kBAAX,EAA+B;AAC7B7I,aAAO6I,kBAAP,CAA0B,8BAA1B,EAA0D,KAAKjC,SAA/D;AACD;;AAED;AACA;AACA,QAAI,KAAK9B,OAAT,EAAkB;AAChB,UAAI;AACF,cAAM,KAAK+B,WAAL,CAAiB/B,OAAjB,EAAN;AACD,OAFD,CAEE,OAAO2C,CAAP,EAAU;AACVvB,gBAAQjO,KAAR,CAAcwP,CAAd,EADU,CACQ;AACnB;AACF;;AAED;AACA,SAAK,MAAMtW,GAAX,IAAkB5D,OAAOub,IAAP,CAAY,KAAK9B,OAAjB,CAAlB,EAA6C;AAC3C,WAAKH,WAAL,CAAiBxV,GAAjB,CAAsB,WAAUF,GAAI,EAApC,EAAuC,KAAK6V,OAAL,CAAa7V,GAAb,CAAvC;AACD;;AAED;AACA,UAAM,KAAK2V,gBAAL,EAAN;;AAEA;AACA,QAAI;AACF,WAAKkB,mBAAL;AACD,KAFD,CAEE,OAAOP,CAAP,EAAU;AACV,WAAKC,kBAAL,CAAwBD,CAAxB;AACD;;AAEDrQ,WAAO2R,aAAP,CAAqB,IAAIC,KAAJ,CAAUpF,sBAAV,CAArB;;AAEA,SAAK+D,0BAAL,CAAgC,IAAhC;AACA,SAAKzV,WAAL,GAAmB,IAAnB;AACD;;AAED+W,WAAS;AACP7R,WAAO2R,aAAP,CAAqB,IAAIC,KAAJ,CAAUnF,uBAAV,CAArB;AACA,SAAK8D,0BAAL,CAAgC,KAAhC;AACA,QAAI3H,OAAOkJ,qBAAX,EAAkC;AAChClJ,aAAOkJ,qBAAP,CAA6B,8BAA7B,EAA6D,KAAKtC,SAAlE;AACD;AACD,SAAK1U,WAAL,GAAmB,KAAnB;AACD;AArJ2B;AAAA;AAAA;;AAwJ9B;;;;;;;;AAQO,SAASqR,qBAAT,CAA+BX,KAA/B,EAAsC;AAC3C,QAAMuG,WAAW,IAAIzC,gBAAJ,CAAqB9D,MAAMrG,QAA3B,CAAjB;;AAEA,MAAI6M,eAAe,KAAnB;;AAEAxG,QAAMyG,SAAN,CAAgB,YAAY;AAC1B,UAAMvR,QAAQ8K,MAAM0G,QAAN,EAAd;AACA;AACA;AACA;AACA,QAAIxR,MAAMtF,KAAN,CAAYxB,MAAZ,CAAmB,gBAAnB,KACF,CAAC8G,MAAMtF,KAAN,CAAYxB,MAAZ,CAAmBuY,eADlB,IAEFzR,MAAM1F,QAAN,CAAeF,WAFb,IAGF,CAACiX,SAASjX,WAHR;AAIF;AACA,KAACkX,YALH,EAME;AACAA,qBAAe,IAAf;AACA,YAAMD,SAASP,IAAT,CAAc,EAAC5B,SAASlP,MAAM1F,QAAhB,EAAd,CAAN;AACAgX,qBAAe,KAAf;AACD,KAVD,MAUO,IACL,CAACtR,MAAMtF,KAAN,CAAYxB,MAAZ,CAAmB,gBAAnB,MAAyC,KAAzC,IACC8G,MAAMtF,KAAN,CAAYxB,MAAZ,CAAmBuY,eAAnB,KAAuC,IADzC,KAEAJ,SAASjX,WAHJ,EAIL;AACAiX,eAASF,MAAT;AACD;AACF,GAtBD;;AAwBA;AACA,SAAOE,QAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;ACtXD;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;AAmBO,MAAM,4BAAN,SAA6B,0BAAAnS,CAAMC,aAAnC,CAAiD;AACtD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKsS,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBlS,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKmS,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBnS,IAAvB,CAA4B,IAA5B,CAAzB;AACD;;AAEDkS,qBAAmB;AACjB,SAAKtS,KAAL,CAAWqF,QAAX,CAAoB,EAACrP,MAAM,8BAAAD,CAAY6H,aAAnB,EAApB;AACA,SAAKoC,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,8BAAAjM,CAAY6H,aAApB,EAAb,CAApB;AACD;;AAED2U,sBAAoB;AAClB,SAAKvS,KAAL,CAAWrI,IAAX,CAAgBqM,SAAhB,CAA0BtN,OAA1B,CAAkC,KAAKsJ,KAAL,CAAWqF,QAA7C;AACD;;AAEDmN,wBAAsB;AACpB,UAAMC,eAAe,KAAKzS,KAAL,CAAWrI,IAAX,CAAgBuM,cAArC;;AAEA,QAAI,CAACuO,YAAL,EAAmB;AACjB,aAAO,IAAP;AACD;;AAED,WAAQ;AAAA;AAAA;AACLA,mBAAanY,GAAb,CAAiBkX,OAAO;AAAA;AAAA,UAAG,KAAKA,GAAR;AAAa,iDAAC,wCAAD,IAAkB,IAAIA,GAAtB;AAAb,OAAxB;AADK,KAAR;AAGD;;AAEDjR,WAAS;AACP,QAAI,CAAC,KAAKP,KAAL,CAAWxE,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED,WAAQ;AAAA;AAAA,QAAK,WAAU,qBAAf;AACN,wDAAK,WAAU,eAAf,EAA+B,SAAS,KAAK8W,gBAA7C,GADM;AAEN;AAAA;AAAA,UAAK,WAAU,OAAf;AACE;AAAA;AAAA,YAAS,WAAU,eAAnB;AACG,eAAKtS,KAAL,CAAWrI,IAAX,CAAgByK,IAAhB,IAAwB,mDAAM,WAAY,yBAAwB,KAAKpC,KAAL,CAAWrI,IAAX,CAAgByK,IAAK,EAA/D,GAD3B;AAEG,eAAKoQ,mBAAL;AAFH,SADF;AAKE;AAAA;AAAA,YAAS,WAAU,SAAnB;AACE;AAAA;AAAA,cAAQ,SAAS,KAAKF,gBAAtB;AACE,qDAAC,wCAAD,IAAkB,IAAI,KAAKtS,KAAL,CAAWrI,IAAX,CAAgByM,uBAAtC;AADF,WADF;AAIE;AAAA;AAAA,cAAQ,WAAU,MAAlB,EAAyB,SAAS,KAAKmO,iBAAvC;AACE,qDAAC,wCAAD,IAAkB,IAAI,KAAKvS,KAAL,CAAWrI,IAAX,CAAgBwM,wBAAtC;AADF;AAJF;AALF;AAFM,KAAR;AAiBD;AAlDqD;;AAqDjD,MAAMuO,gBAAgB,wCAAA9E,CAAQhN,SAASA,MAAMrF,MAAvB,EAA+B,4BAA/B,CAAtB,C;;;;;AC7EP;AACA;AACA;AACA;;AAEA;;;;;;;;AAQO,MAAM,gCAAN,SAA+B,0BAAAuE,CAAMC,aAArC,CAAmD;AACxD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAK2S,YAAL,GAAoB,KAAKA,YAAL,CAAkBvS,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKwS,YAAL,GAAoB,KAAKA,YAAL,CAAkBxS,IAAlB,CAAuB,IAAvB,CAApB;AACD;;AAEDuS,iBAAe;AACb,SAAK3S,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc,EAACZ,MAAM,8BAAA4F,CAAGiX,eAAV,EAAd,CAApB;AACA,SAAK7S,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,8BAAApG,CAAGiX,eAAX,EAAb,CAApB;AACD;;AAEDD,iBAAe;AACb,SAAK5S,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc,EAACZ,MAAM,8BAAA4F,CAAGkX,gBAAV,EAAd,CAApB;AACA,SAAK9S,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,8BAAApG,CAAGkX,gBAAX,EAAb,CAApB;AACD;;AAEDvS,WAAS;AACP,WAAQ;AAAA;AAAA,QAAK,WAAU,4BAAf;AACJ;AAAA;AAAA;AACE,2DAAM,WAAU,kBAAhB,GADF;AAEE,iDAAC,wCAAD,IAAkB,IAAG,+BAArB;AAFF,OADI;AAKJ;AAAA;AAAA,UAAK,WAAU,kCAAf;AACE;AAAA;AAAA,YAAQ,WAAU,SAAlB,EAA4B,SAAS,KAAKqS,YAA1C;AACE,mDAAC,wCAAD,IAAkB,IAAG,gCAArB;AADF,SADF;AAIE;AAAA;AAAA,YAAQ,SAAS,KAAKD,YAAtB;AACE,mDAAC,wCAAD,IAAkB,IAAG,gCAArB;AADF;AAJF;AALI,KAAR;AAcD;AAhCuD;;AAmCnD,MAAMI,kBAAkB,wCAAAnF,GAAU,gCAAV,CAAxB,C;;AChDP;AACA;AACA;AACA;;AAEA,MAAMjI,sBAAsBC,WACzB,OAAOA,OAAP,KAAmB,QAAnB,GAA8B;AAAA;AAAA;AAAOA;AAAP,CAA9B,GAAuD,yCAAC,wCAAD,EAAsBA,OAAtB,CAD1D;;AAGO,MAAMoN,mBAAmBhT,SAC9B;AAAA;AAAA;AACE,sDAAO,MAAK,UAAZ,EAAuB,IAAIA,MAAM8F,QAAjC,EAA2C,MAAM9F,MAAM8F,QAAvD,EAAiE,SAAS9F,MAAM1H,KAAhF,EAAuF,UAAU0H,MAAMiT,QAAvG,EAAiH,UAAUjT,MAAMkT,QAAjI,EAA2I,WAAWlT,MAAMS,SAA5J,GADF;AAEE;AAAA;AAAA,MAAO,SAAST,MAAM8F,QAAtB,EAAgC,WAAW9F,MAAMmT,cAAjD;AACGxN,wBAAoB3F,MAAMoT,WAA1B;AADH,GAFF;AAKGpT,QAAMqT,UAAN,IAAoB;AAAA;AAAA,MAAG,WAAU,yBAAb;AAClB1N,wBAAoB3F,MAAMqT,UAA1B;AADkB,GALvB;AAQGvT,EAAA,0BAAAA,CAAMwT,QAAN,CAAehZ,GAAf,CAAmB0F,MAAMkB,QAAzB,EACCqS,SAAS;AAAA;AAAA,MAAK,WAAY,UAASA,MAAMvT,KAAN,CAAYiT,QAAZ,GAAuB,WAAvB,GAAqC,EAAG,EAAlE;AAAsEM;AAAtE,GADV;AARH,CADK;;AAcA,MAAM,gCAAN,SAA+B,0BAAAzT,CAAMC,aAArC,CAAmD;AACxD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKwT,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBpT,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKqT,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBrT,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKsT,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBtT,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKuT,UAAL,GAAkB,KAAKA,UAAL,CAAgBvT,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKwT,cAAL,GAAsB,KAAKA,cAAL,CAAoBxT,IAApB,CAAyB,IAAzB,CAAtB;AACD;;AAEDmB,qBAAmBC,SAAnB,EAA8B7F,SAA9B,EAAyC;AACvC,QAAI6F,UAAU9F,eAAV,CAA0BF,OAA1B,KAAsC,KAAKwE,KAAL,CAAWtE,eAAX,CAA2BF,OAArE,EAA8E;AAC5E;AACA,UAAI,KAAKqY,aAAL,EAAJ,EAA0B;AACxB7L,iBAAStG,gBAAT,CAA0B,OAA1B,EAAmC,KAAK8R,kBAAxC;AACD,OAFD,MAEO;AACLxL,iBAASrG,mBAAT,CAA6B,OAA7B,EAAsC,KAAK6R,kBAA3C;AACD;AACF;AACF;;AAEDK,kBAAgB;AACd,WAAO,KAAK7T,KAAL,CAAWtE,eAAX,CAA2BF,OAAlC;AACD;;AAEDgY,qBAAmBxR,KAAnB,EAA0B;AACxB;AACA,QAAI,KAAK6R,aAAL,MAAwB,CAAC,KAAKC,OAAL,CAAajF,QAAb,CAAsB7M,MAAM5K,MAA5B,CAA7B,EAAkE;AAChE,WAAKuc,UAAL;AACD;AACF;;AAEDF,mBAAiB,EAACrc,QAAQ,EAACiB,IAAD,EAAO0b,OAAP,EAAT,EAAjB,EAA4C;AAC1C,QAAIzb,QAAQyb,OAAZ;AACA,QAAI1b,SAAS,cAAb,EAA6B;AAC3BC,cAAQyb,UAAU,CAAV,GAAc,CAAtB;AACD;AACD,SAAK/T,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAGrK,OAAH,CAAWC,IAAX,EAAiBC,KAAjB,CAApB;AACD;;AAEDob,sBAAoB,EAACtc,MAAD,EAApB,EAA8B;AAC5B,UAAMgH,KAAKhH,OAAOiB,IAAlB;AACA,UAAMrC,OAAOoB,OAAO2c,OAAP,GAAiB,8BAAAnY,CAAGoY,cAApB,GAAqC,8BAAApY,CAAGqY,eAArD;AACA,SAAKjU,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc,EAACZ,IAAD,EAAO2B,MAAMyG,EAAb,EAAd,CAApB;AACD;;AAEDuV,eAAa;AACX,QAAI,KAAKE,aAAL,EAAJ,EAA0B;AACxB,WAAK7T,KAAL,CAAWqF,QAAX,CAAoB,EAACrP,MAAM,8BAAA4F,CAAGgE,cAAV,EAApB;AACA,WAAKI,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,oBAAR,EAAb,CAApB;AACD,KAHD,MAGO;AACL,WAAKhC,KAAL,CAAWqF,QAAX,CAAoB,EAACrP,MAAM,8BAAA4F,CAAG+D,aAAV,EAApB;AACA,WAAKK,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,mBAAR,EAAb,CAApB;AACD;AACF;;AAED4R,iBAAeE,OAAf,EAAwB;AACtB,SAAKA,OAAL,GAAeA,OAAf;AACD;;AAEDvT,WAAS;AACP,UAAM,EAACP,KAAD,KAAU,IAAhB;AACA,UAAMkU,QAAQlU,MAAM1E,KAAN,CAAYxB,MAA1B;AACA,UAAMqa,WAAWnU,MAAMvE,QAAvB;AACA,UAAM2Y,YAAY,KAAKP,aAAL,EAAlB;AACA,WACE;AAAA;AAAA,QAAK,WAAU,oBAAf,EAAoC,KAAK,KAAKD,cAA9C;AACE;AAAA;AAAA,UAAK,WAAU,mBAAf;AACE;AACE,qBAAY,qBAAoBQ,YAAY,cAAZ,GAA6B,eAAgB,EAD/E;AAEE,iBAAOpU,MAAMmF,IAAN,CAAWC,aAAX,CAAyB,EAAChH,IAAIgW,YAAY,2BAAZ,GAA0C,4BAA/C,EAAzB,CAFT;AAGE,mBAAS,KAAKT,UAHhB;AADF,OADF;AAOE;AAAA;AAAA,UAAK,WAAU,YAAf;AACE;AAAA;AAAA,YAAK,WAAY,WAAUS,YAAY,EAAZ,GAAiB,QAAS,EAArD;AACE;AAAA;AAAA,cAAK,WAAU,2BAAf;AACE;AAAA;AAAA;AAAI,uDAAC,wCAAD,IAAkB,IAAG,sBAArB;AAAJ,aADF;AAEE;AAAA;AAAA;AAAG,uDAAC,wCAAD,IAAkB,IAAG,qBAArB;AAAH,aAFF;AAIE,qDAAC,gBAAD;AACE,yBAAU,YADZ;AAEE,wBAAS,YAFX;AAGE,qBAAOF,MAAMG,UAHf;AAIE,wBAAU,KAAKZ,gBAJjB;AAKE,2BAAa,EAACrV,IAAI,6BAAL,EALf;AAME,0BAAY,EAACA,IAAI,2BAAL,EANd,GAJF;AAYE,gEAZF;AAcE;AAAC,8BAAD;AAAA;AACE,2BAAU,cADZ;AAEE,0BAAS,cAFX;AAGE,uBAAO8V,MAAMI,YAHf;AAIE,0BAAU,KAAKb,gBAJjB;AAKE,6BAAa,EAACrV,IAAI,+BAAL,EALf;AAME,4BAAY,EAACA,IAAI,6BAAL,EANd;AAQE,uDAAC,gBAAD;AACE,2BAAU,kBADZ;AAEE,0BAAS,cAFX;AAGE,0BAAU,CAAC8V,MAAMI,YAHnB;AAIE,uBAAOJ,MAAMK,YAAN,KAAuB,CAJhC;AAKE,0BAAU,KAAKd,gBALjB;AAME,6BAAa,EAACrV,IAAI,yCAAL,EANf;AAOE,gCAAe,oBAPjB;AARF,aAdF;AAgCG+V,qBACE/X,MADF,CACS+B,WAAW,CAACA,QAAQqW,cAD7B,EAEEla,GAFF,CAEM,CAAC,EAAC8D,EAAD,EAAKK,KAAL,EAAYC,OAAZ,EAAqB+V,IAArB,EAAD,KACF;AAAC,8BAAD;AAAA;AACC,qBAAKrW,EADN;AAEC,2BAAU,aAFX;AAGC,0BAAWqW,QAAQA,KAAKC,IAAd,IAAuBtW,EAHlC;AAIC,uBAAOM,OAJR;AAKC,0BAAW+V,QAAQA,KAAKC,IAAd,GAAsB,KAAKjB,gBAA3B,GAA8C,KAAKC,mBAL9D;AAMC,6BAAce,QAAQA,KAAKrB,WAAd,IAA8B3U,KAN5C;AAOC,4BAAYgW,QAAQA,KAAKpB,UAP1B;AASEoB,sBAAQA,KAAKE,WAAb,IAA4BF,KAAKE,WAAL,CAAiBra,GAAjB,CAAqBsa,cAC/C,yCAAC,gBAAD;AACC,qBAAKA,WAAWvc,IADjB;AAEC,0BAAUuc,WAAWvc,IAFtB;AAGC,0BAAU,CAACqG,OAHZ;AAIC,uBAAOwV,MAAMU,WAAWvc,IAAjB,CAJR;AAKC,0BAAU,KAAKob,gBALhB;AAMC,6BAAamB,WAAWxB,WANzB;AAOC,gCAAiB,QAAOwB,WAAWxS,IAAK,EAPzC,GAD0B;AAT9B,aAHJ,CAhCH;AAwDG,aAAC8R,MAAM7B,eAAP,IAA0B,oDAxD7B;AA0DG,aAAC6B,MAAM7B,eAAP,IAA0B,yCAAC,gBAAD,IAAkB,WAAU,cAA5B,EAA2C,UAAS,gBAApD;AACzB,qBAAO6B,MAAM,gBAAN,CADkB,EACO,UAAU,KAAKT,gBADtB;AAEzB,2BAAa,EAACrV,IAAI,+BAAL,EAFY;AAGzB,0BAAY,EAACA,IAAI,6BAAL,EAHa;AA1D7B,WADF;AAiEE;AAAA;AAAA,cAAS,WAAU,SAAnB;AACE;AAAA;AAAA,gBAAQ,WAAU,MAAlB,EAAyB,SAAS,KAAKuV,UAAvC;AACE,uDAAC,wCAAD,IAAkB,IAAG,2BAArB;AADF;AADF;AAjEF;AADF;AAPF,KADF;AAkFD;AAnJuD;;AAsJnD,MAAMjY,kBAAkB,wCAAAkS,CAAQhN,UAAU;AAC/CtF,SAAOsF,MAAMtF,KADkC;AAE/CI,mBAAiBkF,MAAMlF,eAFwB;AAG/CD,YAAUmF,MAAMnF;AAH+B,CAAV,CAAR,EAI3B,0CAAA+J,CAAW,gCAAX,CAJ2B,CAAxB,C;;AC5KP,MAAMqP,cAAN,CAAqB;AACnBxb,cAAYlD,OAAZ,EAAqB;AACnB,SAAK2e,YAAL,GAAoB3e,QAAQ2e,YAA5B;AACA,SAAKC,eAAL,GAAuB5e,QAAQ4e,eAA/B;AACA,SAAKC,cAAL,CAAoB7e,QAAQ8e,UAA5B;AACD;;AAED,MAAIA,UAAJ,GAAiB;AACf,WAAO,KAAKC,WAAZ;AACD;;AAED,MAAID,UAAJ,CAAe3c,KAAf,EAAsB;AACpB,SAAK0c,cAAL,CAAoB1c,KAApB;AACD;;AAED,MAAI6c,iBAAJ,GAAwB;AACtB,WAAO,KAAKC,kBAAZ;AACD;;AAEC;AACFJ,iBAAe1c,QAAQ,EAAvB,EAA2B;AACzB,SAAK4c,WAAL,GAAmB5c,KAAnB;AACA,SAAK8c,kBAAL,GAA0B9c,MAAM0G,MAAN,CAAa,CAACnF,MAAD,EAASwb,IAAT,KAAkB;AACvD,UAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5Bxb,eAAOO,IAAP,CAAYib,IAAZ;AACA,eAAOxb,MAAP;AACD,OAHD,MAGO,IAAIwb,QAAQA,KAAKC,KAAjB,EAAwB;AAC7B,eAAOzb,OAAO0b,MAAP,CAAcF,KAAKC,KAAnB,CAAP;AACD;AACD,YAAM,IAAI7e,KAAJ,CAAU,0DAAV,CAAN;AACD,KARyB,EAQvB,EARuB,CAA1B;AASD;;AAED+e,gBAAcC,OAAd,EAAuB;AACrB,SAAK,MAAMvB,KAAX,IAAoB,KAAKe,UAAzB,EAAqC;AACnC;AACA,UAAIf,SAASA,MAAMoB,KAAf,IAAwB,CAACpB,MAAMoB,KAAN,CAAYI,IAAZ,CAAiBrd,QAAQod,QAAQpd,IAAR,MAAkB,KAAKyc,YAAL,CAAkBzc,IAAlB,CAA3C,CAA7B,EAAkG;AAChG,eAAO,KAAP;;AAEF;AACC,OAJD,MAIO,IAAIod,QAAQvB,KAAR,MAAmB,KAAKY,YAAL,CAAkBZ,KAAlB,CAAvB,EAAiD;AACtD,eAAO,KAAP;AACD;AACF;AACD,WAAO,IAAP;AACD;AA7CkB;oBAgDA,IAAIW,cAAJ,CAAmB;AACtCC,gBAAc;AACZ,wBAAoB,IADR;AAEZ,oBAAgB,IAFJ;AAGZ,kBAAc,IAHF;AAIZ,oBAAgB,CAJJ;AAKZ,wBAAoB,KALR;AAMZ,oCAAgC,KANpB;AAOZ,oCAAgC,KAPpB;AAQZ,gCAA4B,IARhB;AASZ,gCAA4B;AAThB,GADwB;AAYtC;AACA;AACA;AACA;AACA;AACA;AACAG,cAAY,CACV,cADU,EAEV,YAFU,EAGV,cAHU,EAIV,kBAJU,EAKV,8BALU,EAMV,8BANU;AAOV;AACA;AACA,IAACK,OAAO,CAAC,0BAAD,EAA6B,0BAA7B,CAAR,EATU,CAlB0B;AA6BtCP,mBAAiB,CACf;AACErW,aAAS,IADX;AAEE0D,UAAM,QAFR;AAGEhE,QAAI,YAHN;AAIEE,WAAO,CAJT;AAKEG,WAAO,EAACL,IAAI,uBAAL,EAA8BtE,QAAQ,EAAC6b,UAAU,QAAX,EAAtC;AALT,GADe,EAQf;AACEjX,aAAS,IADX;AAEEN,QAAI,YAFN;AAGEgE,UAAM,YAHR;AAIE9D,WAAO,CAJT;AAKEG,WAAO,EAACL,IAAI,mBAAL;AALT,GARe;AA7BqB,CAAnB,C;;;;;AChDrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO,MAAM,cAAN,SAAsB,0BAAA0B,CAAMC,aAA5B,CAA0C;AAC/C1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKG,OAAL,GAAe,KAAKA,OAAL,CAAaC,IAAb,CAAkB,IAAlB,CAAf;AACA,SAAKwV,YAAL,GAAoB,KAAKA,YAAL,CAAkBxV,IAAlB,CAAuB,IAAvB,CAApB;AACD;;AAEDyV,cAAY7T,KAAZ,EAAmB;AACjB;AACA,QAAIA,MAAM8T,MAAN,CAAa9f,IAAb,KAAsB,QAA1B,EAAoC;AAClC,WAAKgK,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa,EAACsK,OAAO,QAAR,EAAb,CAApB;AACD;AACF;;AAED7B,UAAQ6B,KAAR,EAAe;AACb9B,WAAO6V,wBAAP,CAAgCC,MAAhC,CAAuChU,KAAvC;AACD;;AAEDJ,yBAAuB;AACrB,WAAO1B,OAAO6V,wBAAd;AACD;;AAEDH,eAAaK,KAAb,EAAoB;AAClB,QAAIA,KAAJ,EAAW;AACT;AACA;AACA;AACA;AACA;AACA,YAAMC,kBAAkB,8BAAAC,GAAY,QAAZ,GAAuB,WAA/C;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAMC,eAAe,8BAAAD,GAAY,QAAZ,GAAuB,UAA5C;;AAEA;AACA;AACA;AACAjW,aAAO6V,wBAAP,GAAkC,IAAIM,yBAAJ,CAA8BJ,KAA9B,EAAqCA,MAAM3E,UAA3C,EAChC4E,eADgC,EACfE,YADe,CAAlC;AAEA1U,uBAAiB,qBAAjB,EAAwC,IAAxC;AACD,KArBD,MAqBO;AACLxB,aAAO6V,wBAAP,GAAkC,IAAlC;AACApU,0BAAoB,qBAApB,EAA2C,IAA3C;AACD;AACF;;AAED;;;;;AAKApB,WAAS;AACP,WAAQ;AAAA;AAAA,QAAK,WAAU,gBAAf;AACN;AAAA;AAAA,UAAO,SAAQ,oBAAf,EAAoC,WAAU,cAA9C;AACE;AAAA;AAAA,YAAM,WAAU,SAAhB;AAA0B,mDAAC,wCAAD,IAAkB,IAAG,wBAArB;AAA1B;AADF,OADM;AAIN;AACE,YAAG,oBADL;AAEE,mBAAU,KAFZ;AAGE,qBAAa,KAAKP,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,wBAAL,EAA9B,CAHf;AAIE,aAAK,KAAKwX,YAJZ;AAKE,eAAO,KAAK5V,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,wBAAL,EAA9B,CALT;AAME,cAAK,QANP,GAJM;AAWN;AAAA;AAAA;AACE,cAAG,cADL;AAEE,qBAAU,eAFZ;AAGE,mBAAS,KAAK+B,OAHhB;AAIE,iBAAO,KAAKH,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,eAAL,EAA9B,CAJT;AAKE;AAAA;AAAA,YAAM,WAAU,SAAhB;AAA0B,mDAAC,wCAAD,IAAkB,IAAG,eAArB;AAA1B;AALF;AAXM,KAAR;AAmBD;AA3E8C;;AA8E1C,MAAMkY,SAAS,wCAAA1I,GAAU,0CAAApI,CAAW,cAAX,CAAV,CAAf,C;;;;;;;;ACvFP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS+Q,yBAAT,CAAmCC,MAAnC,EAA2C;AACzCC,EAAA,6CAAAA,CAAc,CAAC,EAACD,MAAD,EAASE,cAAc,IAAvB,EAAD,CAAd;AACD;;AAEM,MAAM,UAAN,SAAoB,0BAAA5W,CAAMC,aAA1B,CAAwC;AAC7CuB,uBAAqB;AACnB,UAAM,EAACvG,GAAD,EAAMyb,MAAN,KAAgB,KAAKxW,KAA3B;AACA,SAAK2W,oBAAL,CAA0B5b,GAA1B;AACAwb,8BAA0BC,MAA1B;AACD;;AAED/M,sBAAoB;AAClB;AACA;AACA;AACA,QAAI,KAAKzJ,KAAL,CAAW4W,aAAf,EAA8B;AAC5B,WAAK5W,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc,EAACZ,MAAM,8BAAA4F,CAAGkQ,qBAAV,EAAd,CAApB;AACA,WAAK9L,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc,EAACZ,MAAM,8BAAA4F,CAAGib,gBAAV,EAAd,CAApB;AACD;AACF;;AAED5O,sBAAoB,EAAClN,GAAD,EAApB,EAA2B;AACzB,SAAK4b,oBAAL,CAA0B5b,GAA1B;AACD;;AAED;AACA;AACA;AACA4b,uBAAqB5b,GAArB,EAA0B;AACxB,QAAIA,OAAOA,IAAIC,WAAX,IAA0B,CAAC,KAAK8b,cAApC,EAAoD;AAClD,WAAK9W,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc,EAACZ,MAAM,8BAAA4F,CAAGmb,kBAAV,EAA8Bpf,MAAM,EAApC,EAAd,CAApB;AACA,WAAKmf,cAAL,GAAsB,IAAtB;AACD;AACF;;AAEDvW,WAAS;AACP,UAAM,EAACP,KAAD,KAAU,IAAhB;AACA,UAAM,EAACjF,GAAD,EAAMyb,MAAN,EAAcQ,OAAd,KAAyBhX,KAA/B;AACA,UAAM,EAAChF,WAAD,KAAgBD,GAAtB;;AAEA,QAAI,CAACiF,MAAM4W,aAAP,IAAwB,CAAC5b,WAA7B,EAA0C;AACxC,aAAO,IAAP;AACD;;AAED,WAAQ;AAAC,0CAAD;AAAA,QAAc,QAAQwb,MAAtB,EAA8B,UAAUQ,OAAxC;AACJ;AAAC,8CAAD;AAAA,UAAe,WAAU,uBAAzB;AACE,iDAAC,gBAAD,EAAiB,KAAKhX,KAAtB;AADF;AADI,KAAR;AAKD;AA7C4C;AAAA;AAAA;;AAgDxC,MAAM,gBAAN,SAA0B,0BAAAF,CAAMC,aAAhC,CAA8C;AACnDQ,WAAS;AACP,UAAM,EAACP,KAAD,KAAU,IAAhB;AACA,UAAM,EAACjF,GAAD,KAAQiF,KAAd;AACA,UAAM,EAAChF,WAAD,KAAgBD,GAAtB;AACA,UAAMmZ,QAAQlU,MAAM1E,KAAN,CAAYxB,MAA1B;;AAEA,UAAMmd,qBAAqB,aAAAC,CAAc1B,aAAd,CAA4Bnd,QAAQ6b,MAAM7b,IAAN,CAApC,CAA3B;;AAEA,UAAM8e,iBAAkB,gBAAeF,qBAAqB,eAArB,GAAuC,EAAG,IAAG/C,MAAMkD,gBAAN,GAAyB,qBAAzB,GAAiD,sBAAuB,EAA5J;;AAEA,WACI;AAAA;AAAA,QAAK,WAAWD,cAAhB;AACE;AAAA;AAAA;AACGjD,cAAMG,UAAN,IACC;AAAC,gDAAD;AAAA;AACE,mDAAC,MAAD;AADF,SAFJ;AAKE;AAAA;AAAA,YAAK,WAAY,eAAerZ,cAAc,KAAd,GAAsB,EAAI,EAA1D;AACG,WAACkZ,MAAMmD,gBAAP,IAA2B,yCAAC,eAAD,OAD9B;AAEGnD,gBAAMI,YAAN,IAAsB,yCAAC,4BAAD,OAFzB;AAGE,mDAAC,4BAAD;AAHF,SALF;AAUE,iDAAC,aAAD;AAVF,OADF;AAaGtZ,qBACC;AAAA;AAAA,UAAK,WAAU,YAAf;AACE;AAAC,gDAAD;AAAA,YAAe,WAAU,SAAzB;AAAA;AAAoC,mDAAC,eAAD,OAApC;AAAA;AAAA;AADF;AAdJ,KADJ;AAoBD;AA/BkD;AAAA;AAAA;;AAkC9C,MAAMsc,OAAO,wCAAA1J,CAAQhN,UAAU,EAAC7F,KAAK6F,MAAM7F,GAAZ,EAAiBO,OAAOsF,MAAMtF,KAA9B,EAAV,CAAR,EAAyD,UAAzD,CAAb,C;;;;;;;;;8CCtGA,MAAM6a,YAAYrN,OAAOd,QAAP,IAAmBc,OAAOd,QAAP,CAAgBuP,WAAhB,KAAgC,cAArE,C;;;;;;;;;;;;;;;;;;;;;;;ACAP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM9R,UAAU,SAAhB;AACA,MAAMC,0BAA0B,kBAAhC;AACA,MAAM8R,gBAAgB,CAAtB;;AAEA,SAAS7R,mBAAT,CAA6BC,OAA7B,EAAsC;AACpC,SAAO,OAAOA,OAAP,KAAmB,QAAnB,GAA8B;AAAA;AAAA;AAAOA;AAAP,GAA9B,GAAuD,4DAAC,4DAAD,EAAsBA,OAAtB,CAA9D;AACD;;AAEM,MAAM6R,OAAN,SAAsB,6CAAA3X,CAAMC,aAA5B,CAA0C;AAC/C2X,6BAA2B;AACzB,UAAM,EAAC1X,KAAD,KAAU,IAAhB;AACA,UAAM2X,WAAW,IAAI3X,MAAM4X,OAA3B;AACA,UAAMC,QAAQ7X,MAAM5E,IAAN,CAAW0c,KAAX,CAAiB,CAAjB,EAAoBH,QAApB,CAAd;;AAEA,QAAI,KAAKI,oBAAL,CAA0BF,KAA1B,CAAJ,EAAsC;AACpC7X,YAAMqF,QAAN,CAAe,0EAAA5C,CAAGvK,eAAH,CAAmB;AAChCO,gBAAQuH,MAAMoD,WADkB;AAEhCI,eAAOqU,MAAMvd,GAAN,CAAU4B,SAAS,EAACkC,IAAIlC,KAAKuH,IAAV,EAAT,CAAV;AAFyB,OAAnB,CAAf;AAIA,WAAKuU,mBAAL,GAA2BH,MAAMvd,GAAN,CAAU4B,QAAQA,KAAKuH,IAAvB,CAA3B;AACD;AACF;;AAED;AACA;AACA;AACAwU,qCAAmC;AACjC,UAAM,EAACjY,KAAD,KAAU,IAAhB;;AAEA,QAAI,CAACA,MAAMsF,yBAAP,IAAoC,CAACtF,MAAMqF,QAA/C,EAAyD;AACvD;AACD;;AAED,QAAIrF,MAAMgI,QAAN,CAAeK,eAAf,KAAmC5C,OAAvC,EAAgD;AAC9C,WAAKiS,wBAAL;AACD,KAFD,MAEO;AACL;AACA;AACA,UAAI,KAAKQ,mBAAT,EAA8B;AAC5BlY,cAAMgI,QAAN,CAAerG,mBAAf,CAAmC+D,uBAAnC,EAA4D,KAAKwS,mBAAjE;AACD;;AAED;AACA,WAAKA,mBAAL,GAA2B,MAAM;AAC/B,YAAIlY,MAAMgI,QAAN,CAAeK,eAAf,KAAmC5C,OAAvC,EAAgD;AAC9C,gBAAM,EAACrH,EAAD,EAAK9C,KAAL,KAAc,KAAK0E,KAAzB;AACA,gBAAM4I,cAActN,MAAMxB,MAAN,CAAc,WAAUsE,EAAG,YAA3B,CAApB;AACA,cAAI,CAACwK,WAAL,EAAkB;AAChB,iBAAK8O,wBAAL;AACD;AACD1X,gBAAMgI,QAAN,CAAerG,mBAAf,CAAmC+D,uBAAnC,EAA4D,KAAKwS,mBAAjE;AACD;AACF,OATD;AAUAlY,YAAMgI,QAAN,CAAetG,gBAAf,CAAgCgE,uBAAhC,EAAyD,KAAKwS,mBAA9D;AACD;AACF;;AAEDzO,sBAAoB;AAClB,UAAM,EAACrL,EAAD,EAAKhD,IAAL,EAAWE,KAAX,KAAoB,KAAK0E,KAA/B;AACA,UAAM4I,cAActN,MAAMxB,MAAN,CAAc,WAAUsE,EAAG,YAA3B,CAApB;AACA,QAAIhD,KAAKsB,MAAL,IAAe,CAACkM,WAApB,EAAiC;AAC/B,WAAKqP,gCAAL;AACD;AACF;;AAED1W,qBAAmBC,SAAnB,EAA8B;AAC5B,UAAM,EAACxB,KAAD,KAAU,IAAhB;AACA,UAAM,EAAC5B,EAAD,EAAK9C,KAAL,KAAc0E,KAApB;AACA,UAAMmY,kBAAmB,WAAU/Z,EAAG,YAAtC;AACA,UAAMwK,cAActN,MAAMxB,MAAN,CAAaqe,eAAb,CAApB;AACA,UAAMC,eAAe5W,UAAUlG,KAAV,CAAgBxB,MAAhB,CAAuBqe,eAAvB,CAArB;AACA;AACE;AACAnY,UAAM5E,IAAN,CAAWsB,MAAX;AAEE;AACA;AACCsD,UAAM5E,IAAN,KAAeoG,UAAUpG,IAAzB,IAAiC,CAACwN,WAAnC;AACA;AACCwP,oBAAgB,CAACxP,WANpB,CAFF,EAUE;AACA,WAAKqP,gCAAL;AACD;AACF;;AAEDF,uBAAqBF,KAArB,EAA4B;AAC1B,QAAI,CAAC,KAAKG,mBAAN,IAA8B,KAAKA,mBAAL,CAAyBtb,MAAzB,KAAoCmb,MAAMnb,MAA5E,EAAqF;AACnF,aAAO,IAAP;AACD;;AAED,SAAK,IAAIoF,IAAI,CAAb,EAAgBA,IAAI+V,MAAMnb,MAA1B,EAAkCoF,GAAlC,EAAuC;AACrC,UAAI+V,MAAM/V,CAAN,EAAS2B,IAAT,KAAkB,KAAKuU,mBAAL,CAAyBlW,CAAzB,CAAtB,EAAmD;AACjD,eAAO,IAAP;AACD;AACF;;AAED,WAAO,KAAP;AACD;;AAEDuW,uBAAqBC,KAArB,EAA4B;AAC1B,QAAIA,UAAU,CAAd,EAAiB;AACf,aAAOd,aAAP;AACD;AACD,UAAMe,YAAYD,QAAQd,aAA1B;AACA,QAAIe,cAAc,CAAlB,EAAqB;AACnB,aAAO,CAAP;AACD;AACD,WAAOf,gBAAgBe,SAAvB;AACD;;AAEDhY,WAAS;AACP,UAAM;AACJnC,QADI,EACAgF,WADA,EACa3E,KADb,EACoB2D,IADpB,EAC0BhH,IAD1B;AAEJuL,gBAFI,EAEQ6R,UAFR,EAEoBnT,QAFpB,EAE8BuS,OAF9B;AAGJa,wBAHI,EAGgBzd,WAHhB,EAG6BqM;AAH7B,QAIF,KAAKrH,KAJT;AAKA,UAAM2X,WAAWH,gBAAgBI,OAAjC;;AAEA;AACA;AACA,UAAMc,mBAAoBta,OAAO,YAAP,KACvB,CAAC,KAAK4B,KAAL,CAAW2Y,MAAZ,IAAsB,KAAK3Y,KAAL,CAAW2Y,MAAX,CAAkBjc,MAAlB,GAA2B,CAD1B,CAA1B;;AAGA,UAAMkc,WAAWxd,KAAK0c,KAAL,CAAW,CAAX,EAAcH,QAAd,CAAjB;AACA,UAAMkB,eAAe,KAAKR,oBAAL,CAA0BO,SAASlc,MAAnC,CAArB;;AAEA;AACA;AACA,UAAMoc,uBAAuB9d,eAAe,CAACI,KAAKsB,MAAlD;;AAEA;AACA;AACA,WAAQ;AAAC,8HAAD;AAAwB,WAAKsD,KAA7B;AACN;AAAC,gIAAD;AAAA,UAAoB,WAAU,SAA9B,EAAwC,MAAMoC,IAA9C,EAAoD,OAAOuD,oBAAoBlH,KAApB,CAA3D;AACE,sBAAYkI,UADd;AAEE,cAAIvI,EAFN;AAGE,uBAAagF,WAHf;AAIE,sBAAYiE,UAJd;AAKE,oBAAW,WAAUjJ,EAAG,YAL1B;AAME,iBAAO,KAAK4B,KAAL,CAAW1E,KANpB;AAOE,oBAAU,KAAK0E,KAAL,CAAWqF,QAPvB;AASG,SAACyT,oBAAD,IAA0B;AAAA;AAAA,YAAI,WAAU,cAAd,EAA6B,OAAO,EAACC,SAAS,CAAV,EAApC;AACxBH,mBAASte,GAAT,CAAa,CAAC4B,IAAD,EAAOO,KAAP,KAAiBP,QAC7B,4DAAC,8EAAD,IAAM,KAAKO,KAAX,EAAkB,OAAOA,KAAzB,EAAgC,UAAU4I,QAA1C,EAAoD,MAAMnJ,IAA1D,EAAgE,oBAAoBuc,kBAApF;AACE,yBAAarV,WADf,EAC4B,2BAA2B,KAAKpD,KAAL,CAAWsF,yBADlE,EAC6F,gBAAgB,KAAKtF,KAAL,CAAWgZ,cADxH,GADD,CADwB;AAIxBH,yBAAe,CAAf,IAAoB,CAAC,GAAG,IAAIre,KAAJ,CAAUqe,YAAV,CAAJ,EAA6Bve,GAA7B,CAAiC,CAAC2e,CAAD,EAAInX,CAAJ,KAAU,4DAAC,yFAAD,IAAiB,KAAKA,CAAtB,GAA3C;AAJI,SAT7B;AAeGgX,gCACC;AAAA;AAAA,YAAK,WAAU,qBAAf;AACE;AAAA;AAAA,cAAK,WAAU,aAAf;AACGN,uBAAWpW,IAAX,IAAmBoW,WAAWpW,IAAX,CAAgBqG,UAAhB,CAA2B,kBAA3B,CAAnB,GACC,qEAAK,WAAU,uBAAf,EAAuC,OAAO,EAAC,oBAAqB,QAAO+P,WAAWpW,IAAK,IAA7C,EAA9C,GADD,GAEC,qEAAK,WAAY,8BAA6BoW,WAAWpW,IAAK,EAA9D,GAHJ;AAIE;AAAA;AAAA,gBAAG,WAAU,qBAAb;AACGuD,kCAAoB6S,WAAW5S,OAA/B;AADH;AAJF;AADF,SAhBJ;AA0BG8S,4BAAoB,4DAAC,oFAAD,IAAQ,QAAQ,KAAK1Y,KAAL,CAAW2Y,MAA3B,EAAmC,oBAAoB,KAAK3Y,KAAL,CAAWkZ,kBAAlE;AA1BvB;AADM,KAAR;AA8BD;AA3J8C;AAAA;AAAA;;AA8JjDzB,QAAQ/W,YAAR,GAAuB;AACrBsH,YAAUc,OAAOd,QADI;AAErB5M,QAAM,EAFe;AAGrBod,cAAY,EAHS;AAIrB/Z,SAAO;AAJc,CAAvB;;AAOO,MAAM0a,cAAc,8DAAA3T,CAAWiS,OAAX,CAApB;AAAA;AAAA;;AAEA,MAAM2B,SAAN,SAAwB,6CAAAtZ,CAAMC,aAA9B,CAA4C;AACjDQ,WAAS;AACP,UAAM4T,WAAW,KAAKnU,KAAL,CAAWvE,QAA5B;AACA,WACE;AAAA;AAAA,QAAK,WAAU,eAAf;AACG0Y,eACE/X,MADF,CACS+B,WAAWA,QAAQO,OAD5B,EAEEpE,GAFF,CAEM6D,WAAW,4DAAC,WAAD,aAAa,KAAKA,QAAQC,EAA1B,IAAkCD,OAAlC,IAA2C,OAAO,KAAK6B,KAAL,CAAW1E,KAA7D,EAAoE,UAAU,KAAK0E,KAAL,CAAWqF,QAAzF,IAFjB;AADH,KADF;AAOD;AAVgD;AAAA;AAAA;;AAa5C,MAAM5J,WAAW,4DAAAmS,CAAQhN,UAAU,EAACnF,UAAUmF,MAAMnF,QAAjB,EAA2BH,OAAOsF,MAAMtF,KAAxC,EAAV,CAAR,EAAmE8d,SAAnE,CAAjB,C;;;;;;;;;;;;;;;ACrMA,MAAMC,mBAAmB;AAC9BC,WAAS;AACPC,YAAQ,oBADD;AAEPnX,UAAM;AAFC,GADqB;AAK9BoX,YAAU;AACRD,YAAQ,uBADA;AAERnX,UAAM;AAFE,GALoB;AAS9BqX,YAAU;AACRF,YAAQ,wBADA;AAERnX,UAAM;AAFE,GAToB;AAa9B0I,OAAK;AACHyO,YAAQ,gBADL;AAEHnX,UAAM;AAFH;AAbyB,CAAzB,C;;;;;;;;;;;;;ACAP;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMsX,gBAAgB,IAAI1f,GAAJ,EAAtB;;AAEA;;;;;;;;;AASO,MAAM,SAAN,SAAmB,0BAAA8F,CAAMC,aAAzB,CAAuC;AAC5C1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKY,KAAL,GAAa;AACX+Y,kBAAY,IADD;AAEXC,mBAAa,KAFF;AAGXC,uBAAiB;AAHN,KAAb;AAKA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuB1Z,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAK2Z,YAAL,GAAoB,KAAKA,YAAL,CAAkB3Z,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAK4Z,WAAL,GAAmB,KAAKA,WAAL,CAAiB5Z,IAAjB,CAAsB,IAAtB,CAAnB;AACD;;AAED;;;AAGA,QAAM6Z,cAAN,GAAuB;AACrB;AACA,UAAM,EAACC,KAAD,KAAU,KAAKla,KAAL,CAAW9D,IAA3B;AACA,QAAI,CAAC,KAAK0E,KAAL,CAAWgZ,WAAZ,IAA2BM,KAA/B,EAAsC;AACpC;AACA,UAAI,CAACR,cAAcxf,GAAd,CAAkBggB,KAAlB,CAAL,EAA+B;AAC7B,cAAMC,gBAAgB,IAAInM,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACrD,gBAAMkM,SAAS,IAAIC,KAAJ,EAAf;AACAD,iBAAO1Y,gBAAP,CAAwB,MAAxB,EAAgCuM,OAAhC;AACAmM,iBAAO1Y,gBAAP,CAAwB,OAAxB,EAAiCwM,MAAjC;AACAkM,iBAAOE,GAAP,GAAaJ,KAAb;AACD,SALqB,CAAtB;;AAOA;AACAR,sBAAcvf,GAAd,CAAkB+f,KAAlB,EAAyBC,aAAzB;AACAA,sBAAcI,KAAd,CAAoBjQ,MAAMA,EAA1B,EAA8BkQ,IAA9B,CAAmC,MAAMd,cAAcxM,MAAd,CAAqBgN,KAArB,CAAzC,EAAsEK,KAAtE;AACD;;AAED;AACA,YAAMb,cAAcrM,GAAd,CAAkB6M,KAAlB,CAAN;;AAEA;AACA,UAAI,KAAKla,KAAL,CAAW9D,IAAX,CAAgBge,KAAhB,KAA0BA,KAA1B,IAAmC,CAAC,KAAKtZ,KAAL,CAAWgZ,WAAnD,EAAgE;AAC9D,aAAK3Y,QAAL,CAAc,EAAC2Y,aAAa,IAAd,EAAd;AACD;AACF;AACF;;AAEDE,oBAAkB9X,KAAlB,EAAyB;AACvBA,UAAMyY,cAAN;AACA,SAAKxZ,QAAL,CAAc;AACZ0Y,kBAAY,KAAK3Z,KAAL,CAAWvD,KADX;AAEZod,uBAAiB;AAFL,KAAd;AAID;;AAEDG,cAAYhY,KAAZ,EAAmB;AACjBA,UAAMyY,cAAN;AACA,UAAM,EAACC,MAAD,EAASnT,MAAT,EAAiBoT,OAAjB,EAA0BC,OAA1B,EAAmC3Y,QAAnC,KAA+CD,KAArD;AACA,SAAKhC,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG7L,UAAH,CAAc;AAChCZ,YAAM,8BAAA4F,CAAGif,SADuB;AAEhCljB,YAAMtB,OAAOC,MAAP,CAAc,KAAK0J,KAAL,CAAW9D,IAAzB,EAA+B,EAAC8F,OAAO,EAAC0Y,MAAD,EAASnT,MAAT,EAAiBoT,OAAjB,EAA0BC,OAA1B,EAAmC3Y,QAAnC,EAAR,EAA/B;AAF0B,KAAd,CAApB;;AAKA,QAAI,KAAKjC,KAAL,CAAWgZ,cAAf,EAA+B;AAC7B,WAAKhZ,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAGjK,WAAH,CAAe,8BAAAoD,CAAGkf,YAAlB,EAAgC;AAClDriB,gBAAQ,KAAKuH,KAAL,CAAWoD,WAD+B;AAElDvI,aAAK,KAAKmF,KAAL,CAAW9D,IAAX,CAAgBrB,GAF6B;AAGlDiJ,yBAAiB,KAAK9D,KAAL,CAAWvD;AAHsB,OAAhC,CAApB;AAKD,KAND,MAMO;AACL,WAAKuD,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAG/K,SAAH,CAAa;AAC/BsK,eAAO,OADwB;AAE/BvJ,gBAAQ,KAAKuH,KAAL,CAAWoD,WAFY;AAG/BU,yBAAiB,KAAK9D,KAAL,CAAWvD;AAHG,OAAb,CAApB;;AAMA,UAAI,KAAKuD,KAAL,CAAWsF,yBAAf,EAA0C;AACxC,aAAKtF,KAAL,CAAWqF,QAAX,CAAoB,iCAAA5C,CAAGvK,eAAH,CAAmB;AACrCO,kBAAQ,KAAKuH,KAAL,CAAWoD,WADkB;AAErC2X,iBAAO,CAF8B;AAGrCvX,iBAAO,CAAC,EAACpF,IAAI,KAAK4B,KAAL,CAAW9D,IAAX,CAAgBuH,IAArB,EAA2BC,KAAK,KAAK1D,KAAL,CAAWvD,KAA3C,EAAD;AAH8B,SAAnB,CAApB;AAKD;AACF;AACF;;AAEDsd,eAAaF,eAAb,EAA8B;AAC5B,SAAK5Y,QAAL,CAAc,EAAC4Y,eAAD,EAAd;AACD;;AAEDpQ,sBAAoB;AAClB,SAAKwQ,cAAL;AACD;;AAED1Y,uBAAqB;AACnB,SAAK0Y,cAAL;AACD;;AAEDe,4BAA0B9S,SAA1B,EAAqC;AACnC;AACA,QAAIA,UAAUhM,IAAV,CAAege,KAAf,KAAyB,KAAKla,KAAL,CAAW9D,IAAX,CAAgBge,KAA7C,EAAoD;AAClD,WAAKjZ,QAAL,CAAc,EAAC2Y,aAAa,KAAd,EAAd;AACD;AACF;;AAEDrZ,WAAS;AACP,UAAM,EAAC9D,KAAD,EAAQP,IAAR,EAAcmJ,QAAd,EAAwBoT,kBAAxB,EAA4CrV,WAA5C,EAAyDkC,yBAAzD,KAAsF,KAAKtF,KAAjG;AACA,UAAM,EAACA,KAAD,KAAU,IAAhB;AACA,UAAMib,oBAAoB,KAAKra,KAAL,CAAWiZ,eAAX,IAA8B,KAAKjZ,KAAL,CAAW+Y,UAAX,KAA0Bld,KAAlF;AACA;AACA,UAAM,EAAC2F,IAAD,EAAOmX,MAAP,KAAiB,gBAAAF,CAAiBnd,KAAKlG,IAAL,KAAc,KAAd,GAAsB,UAAtB,GAAmCkG,KAAKlG,IAAzD,KAAkE,EAAzF;AACA,UAAMklB,WAAWhf,KAAKge,KAAL,IAAche,KAAKgf,QAApC;AACA,UAAMC,aAAa,EAACzS,iBAAiBxM,KAAKge,KAAL,GAAc,OAAMhe,KAAKge,KAAM,GAA/B,GAAoC,MAAtD,EAAnB;;AAEA,WAAQ;AAAA;AAAA,QAAI,WAAY,aAAYe,oBAAoB,SAApB,GAAgC,EAAG,GAAEjb,MAAMob,WAAN,GAAoB,cAApB,GAAqC,EAAG,EAAzG;AACN;AAAA;AAAA,UAAG,MAAMlf,KAAKrB,GAAd,EAAmB,SAAS,CAACmF,MAAMob,WAAP,GAAqB,KAAKpB,WAA1B,GAAwCzb,SAApE;AACE;AAAA;AAAA,YAAK,WAAU,MAAf;AACG2c,sBAAY;AAAA;AAAA,cAAK,WAAU,0BAAf;AACX,8DAAK,WAAY,qBAAoB,KAAKta,KAAL,CAAWgZ,WAAX,GAAyB,SAAzB,GAAqC,EAAG,EAA7E,EAAgF,OAAOuB,UAAvF;AADW,WADf;AAIE;AAAA;AAAA,cAAK,WAAY,eAAcD,WAAW,EAAX,GAAgB,WAAY,EAA3D;AACGhf,iBAAKmf,QAAL,IAAiB;AAAA;AAAA,gBAAK,WAAU,gBAAf;AAAiCnf,mBAAKmf;AAAtC,aADpB;AAEE;AAAA;AAAA,gBAAK,WAAW,CACd,WADc,EAEdjZ,OAAO,EAAP,GAAY,YAFE,EAGdlG,KAAKof,WAAL,GAAmB,EAAnB,GAAwB,gBAHV,EAIdpf,KAAKmf,QAAL,GAAgB,EAAhB,GAAqB,cAJP,EAKdH,WAAW,EAAX,GAAgB,UALF,EAMdK,IANc,CAMT,GANS,CAAhB;AAOE;AAAA;AAAA,kBAAI,WAAU,YAAd,EAA2B,KAAI,MAA/B;AAAuCrf,qBAAKuC;AAA5C,eAPF;AAQE;AAAA;AAAA,kBAAG,WAAU,kBAAb,EAAgC,KAAI,MAApC;AAA4CvC,qBAAKof;AAAjD;AARF,aAFF;AAYE;AAAA;AAAA,gBAAK,WAAU,cAAf;AACGlZ,sBAAQ,CAAClG,KAAKsf,OAAd,IAAyB,mDAAM,WAAY,+BAA8BpZ,IAAK,EAArD,GAD5B;AAEGlG,mBAAKkG,IAAL,IAAalG,KAAKsf,OAAlB,IAA6B,mDAAM,WAAU,wBAAhB,EAAyC,OAAO,EAAC9S,iBAAkB,QAAOxM,KAAKkG,IAAK,IAApC,EAAhD,GAFhC;AAGGmX,wBAAU,CAACrd,KAAKsf,OAAhB,IAA2B;AAAA;AAAA,kBAAK,WAAU,oBAAf;AAAoC,yDAAC,wCAAD,IAAkB,IAAIjC,MAAtB,EAA8B,gBAAe,SAA7C;AAApC,eAH9B;AAIGrd,mBAAKsf,OAAL,IAAgB;AAAA;AAAA,kBAAK,WAAU,oBAAf;AAAqCtf,qBAAKsf;AAA1C;AAJnB;AAZF;AAJF;AADF,OADM;AA2BL,OAACxb,MAAMob,WAAP,IAAsB;AAAA;AAAA,UAAQ,WAAU,0BAAlB;AACrB,mBAAS,KAAKtB,iBADO;AAErB;AAAA;AAAA,YAAM,WAAU,SAAhB;AAA4B,mCAAwB5d,KAAKuC,KAAM;AAA/D;AAFqB,OA3BjB;AA+BL,OAACuB,MAAMob,WAAP,IAAsB,yCAAC,4BAAD;AACrB,kBAAU/V,QADW;AAErB,eAAO5I,KAFc;AAGrB,gBAAQ2G,WAHa;AAIrB,kBAAU,KAAK2W,YAJM;AAKrB,iBAAS7d,KAAKuc,kBAAL,IAA2BA,kBALf;AAMrB,cAAMvc,IANe;AAOrB,iBAAS+e,iBAPY;AAQrB,mCAA2B3V,yBARN;AA/BjB,KAAR;AAyCD;AAxJ2C;AAAA;AAAA;AA0J9C,SAAAmW,CAAK/a,YAAL,GAAoB,EAACxE,MAAM,EAAP,EAApB;;AAEO,MAAMwf,kBAAkB,MAAM,yCAAC,SAAD,IAAM,aAAa,IAAnB,GAA9B,C;;;;;;;;;;;;;AC9KP;AACA;;AAEO,MAAMC,KAAN,SAAoB,6CAAA7b,CAAMC,aAA1B,CAAwC;AAC7CQ,WAAS;AACP,UAAM,EAAC1F,GAAD,EAAMxC,IAAN,KAAc,KAAK2H,KAAzB;AACA,WAAQ;AAAA;AAAA;AAAI;AAAA;AAAA,UAAG,KAAK3H,IAAR,EAAc,WAAU,YAAxB,EAAqC,MAAMwC,GAA3C;AAAiDxC;AAAjD;AAAJ,KAAR;AACD;AAJ4C;AAAA;AAAA;;AAOxC,MAAMujB,MAAN,SAAqB,6CAAA9b,CAAMC,aAA3B,CAAyC;AAC9CQ,WAAS;AACP,UAAM,EAACoY,MAAD,EAASO,kBAAT,KAA+B,KAAKlZ,KAA1C;AACA,WACE;AAAA;AAAA,QAAK,WAAU,OAAf;AACE;AAAA;AAAA;AAAM,oEAAC,4DAAD,IAAkB,IAAG,kBAArB;AAAN,OADF;AAEE;AAAA;AAAA;AAAK2Y,kBAAUA,OAAOre,GAAP,CAAWuhB,KAAK,4DAAC,KAAD,IAAO,KAAKA,EAAExjB,IAAd,EAAoB,KAAKwjB,EAAEhhB,GAA3B,EAAgC,MAAMghB,EAAExjB,IAAxC,GAAhB;AAAf,OAFF;AAIG6gB,4BAAsB;AAAA;AAAA,UAAG,WAAU,iBAAb,EAA+B,MAAMA,kBAArC;AACrB,oEAAC,4DAAD,IAAkB,IAAG,uBAArB;AADqB;AAJzB,KADF;AAUD;AAb6C,C;;;;;;;;;;;;;;;;;;;;;;ACVhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;AAKA,SAAS4C,uBAAT,CAAiCC,QAAjC,EAA2C;AACzC,QAAMC,qBAAqB,CAACC,GAAD,EAAM/f,IAAN,KAAe;AACxC,QAAIA,KAAKggB,YAAL,IAAqBhgB,KAAKigB,UAAL,KAAoB,UAA7C,EAAyD;AACvDF,UAAIG,QAAJ;AACD,KAFD,MAEO,IAAIlgB,KAAKmgB,WAAL,IAAoB,iFAAxB,EAA+C;AACpDJ,UAAIK,SAAJ;AACD,KAFM,MAEA,IAAIpgB,KAAKiB,UAAL,IAAmBjB,KAAKmgB,WAAL,IAAoB,mFAA3C,EAAoE;AACzEJ,UAAIM,oBAAJ;AACD,KAFM,MAEA,IAAIrgB,KAAKiB,UAAT,EAAqB;AAC1B8e,UAAI9e,UAAJ;AACD,KAFM,MAEA;AACL8e,UAAIO,QAAJ;AACD;;AAED,WAAOP,GAAP;AACD,GAdD;;AAgBA,SAAOF,SAAS/c,MAAT,CAAgBgd,kBAAhB,EAAoC;AACzC,4BAAwB,CADiB;AAEzC,kBAAc,CAF2B;AAGzC,gBAAY,CAH6B;AAIzC,iBAAa,CAJ4B;AAKzC,gBAAY;AAL6B,GAApC,CAAP;AAOD;;AAEM,MAAMS,SAAN,SAAwB,6CAAA3c,CAAMC,aAA9B,CAA4C;AACjD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAK0c,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBtc,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKuc,WAAL,GAAmB,KAAKA,WAAL,CAAiBvc,IAAjB,CAAsB,IAAtB,CAAnB;AACD;;AAED;;;AAGAwc,2BAAyB;AACvB,UAAMb,WAAW,KAAKc,mBAAL,EAAjB;AACA,UAAMC,qBAAqBhB,wBAAwBC,QAAxB,CAA3B;AACA,UAAMgB,iBAAiBhB,SAAS3f,MAAT,CAAgBxB,QAAQ,CAAC,CAACA,KAAK0B,QAA/B,EAAyCI,MAAhE;AACA;AACA,SAAKsD,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG7L,UAAH,CAAc;AAChCZ,YAAM,uEAAA4F,CAAGyO,sBADuB;AAEhC1S,YAAM,EAACqlB,qBAAqBF,kBAAtB,EAA0CG,iBAAiBF,cAA3D;AAF0B,KAAd,CAApB;AAID;;AAED;;;AAGAF,wBAAsB;AACpB;AACA,QAAIK,cAAc,wFAAlB;AACA;AACA,QAAI,CAACpU,OAAOqU,UAAP,CAAmB,qBAAnB,EAAyCC,OAA9C,EAAuD;AACrDF,qBAAe,CAAf;AACD;AACD,WAAO,KAAKld,KAAL,CAAW7E,QAAX,CAAoBC,IAApB,CAAyB0c,KAAzB,CAA+B,CAA/B,EAAkC,KAAK9X,KAAL,CAAWqd,YAAX,GAA0BH,WAA5D,CAAP;AACD;;AAED3b,uBAAqB;AACnB,SAAKqb,sBAAL;AACD;;AAEDnT,sBAAoB;AAClB,SAAKmT,sBAAL;AACD;;AAEDF,qBAAmB;AACjB,SAAK1c,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa;AAC/Be,cAAQ,4EADuB;AAE/BuJ,aAAO;AAFwB,KAAb,CAApB;AAIA;AACA,SAAKhC,KAAL,CAAWqF,QAAX,CAAoB,EAACrP,MAAM,uEAAA4F,CAAGmB,cAAV,EAA0BpF,MAAM,EAAC8E,OAAO,CAAC,CAAT,EAAhC,EAApB;AACD;;AAEDkgB,gBAAc;AACZ,SAAK3c,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa;AAC/Be,cAAQ,4EADuB;AAE/BuJ,aAAO;AAFwB,KAAb,CAApB;AAIA,SAAKhC,KAAL,CAAWqF,QAAX,CAAoB,EAACrP,MAAM,uEAAA4F,CAAGoB,qBAAV,EAApB;AACD;;AAEDuD,WAAS;AACP,UAAM,EAACP,KAAD,KAAU,IAAhB;AACA,UAAM2G,aAAa;AACjBG,cAAQ,EAAC1I,IAAI,+BAAL,EADS;AAEjB2I,YAAM,EAAC3I,IAAI,6BAAL;AAFW,KAAnB;AAIA,UAAM,EAAC/C,QAAD,KAAa2E,MAAM7E,QAAzB;;AAEA,WAAQ;AAAC,8HAAD;AAAA,QAAoB,IAAG,UAAvB,EAAkC,aAAa6E,MAAM7E,QAAN,CAAeH,WAA9D,EAA2E,UAAUgF,MAAMqF,QAA3F;AACN;AAAC,gIAAD;AAAA,UAAoB,WAAU,WAA9B,EAA0C,MAAK,UAA/C,EAA0D,OAAO,4DAAC,4DAAD,IAAkB,IAAG,kBAArB,GAAjE,EAA6G,YAAYsB,UAAzH,EAAqI,UAAS,kBAA9I,EAAiK,OAAO3G,MAAM1E,KAA9K,EAAqL,UAAU0E,MAAMqF,QAArM;AACE,oEAAC,6DAAD,IAAa,UAAUrF,MAAM7E,QAA7B,EAAuC,cAAc6E,MAAMqd,YAA3D,EAAyE,UAAUrd,MAAMqF,QAAzF,EAAmG,MAAMrF,MAAMmF,IAA/G,GADF;AAEE;AAAA;AAAA,YAAK,WAAU,uBAAf;AACE;AAAA;AAAA,cAAK,WAAU,qBAAf;AACE;AAAA;AAAA;AACE,2BAAU,KADZ;AAEE,uBAAO,KAAKnF,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,kCAAL,EAA9B,CAFT;AAGE,yBAAS,KAAKse,gBAHhB;AAIE,0EAAC,4DAAD,IAAkB,IAAG,0BAArB;AAJF;AADF,WADF;AASGrhB,sBACC;AAAA;AAAA,cAAK,WAAU,eAAf;AACE,iFAAK,WAAU,eAAf,EAA+B,SAAS,KAAKshB,WAA7C,GADF;AAEE;AAAA;AAAA,gBAAK,WAAU,OAAf;AACE,0EAAC,iEAAD;AACE,sBAAM3c,MAAM7E,QAAN,CAAeC,IAAf,CAAoBC,SAASoB,KAA7B,CADR;AAEE,uBAAOpB,SAASoB,KAFlB;AAGE,yBAAS,KAAKkgB,WAHhB;AAIE,0BAAU,KAAK3c,KAAL,CAAWqF,QAJvB;AAKE,sBAAM,KAAKrF,KAAL,CAAWmF,IALnB;AADF;AAFF;AAVJ;AAFF;AADM,KAAR;AA4BD;AA/FgD;AAAA;AAAA;;AAkG5C,MAAMhK,WAAW,4DAAAyS,CAAQhN,UAAU;AACxCzF,YAAUyF,MAAMzF,QADwB;AAExCG,SAAOsF,MAAMtF,KAF2B;AAGxC+hB,gBAAczc,MAAMtF,KAAN,CAAYxB,MAAZ,CAAmBya;AAHO,CAAV,CAAR,EAIpB,8DAAA/O,CAAWiX,SAAX,CAJoB,CAAjB,C;;;;;;;;;;;;;;;;AC5IP;AACA;AACA;AACA;;AAEO,MAAMa,WAAN,SAA0B,6CAAAxd,CAAMC,aAAhC,CAA8C;AACnD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,UAAM,EAACpF,IAAD,KAASoF,KAAf;AACA,SAAKY,KAAL,GAAa;AACXyB,aAAOzH,OAAQA,KAAKyH,KAAL,IAAczH,KAAKygB,QAA3B,GAAuC,EADnC;AAEXxgB,WAAKD,OAAOA,KAAKC,GAAZ,GAAkB,EAFZ;AAGX0iB,uBAAiB;AAHN,KAAb;AAKA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBpd,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKqd,WAAL,GAAmB,KAAKA,WAAL,CAAiBrd,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKsd,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBtd,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKud,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBvd,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKwd,eAAL,GAAuB,KAAKA,eAAL,CAAqBxd,IAArB,CAA0B,IAA1B,CAAvB;AACD;;AAEDod,gBAAcxb,KAAd,EAAqB;AACnB,SAAK6b,eAAL;AACA,SAAK5c,QAAL,CAAc,EAAC,SAASe,MAAM5K,MAAN,CAAakB,KAAvB,EAAd;AACD;;AAEDmlB,cAAYzb,KAAZ,EAAmB;AACjB,SAAK6b,eAAL;AACA,SAAK5c,QAAL,CAAc,EAAC,OAAOe,MAAM5K,MAAN,CAAakB,KAArB,EAAd;AACD;;AAEDolB,sBAAoBI,EAApB,EAAwB;AACtBA,OAAGrD,cAAH;AACA,SAAKza,KAAL,CAAW+d,OAAX;AACD;;AAEDJ,oBAAkBG,EAAlB,EAAsB;AACpBA,OAAGrD,cAAH;;AAEA,QAAI,KAAKuD,YAAL,EAAJ,EAAyB;AACvB,YAAMpjB,OAAO,EAACC,KAAK,KAAKojB,QAAL,EAAN,EAAb;AACA,YAAM,EAACxhB,KAAD,KAAU,KAAKuD,KAArB;AACA,UAAI,KAAKY,KAAL,CAAWyB,KAAX,KAAqB,EAAzB,EAA6B;AAC3BzH,aAAKyH,KAAL,GAAa,KAAKzB,KAAL,CAAWyB,KAAxB;AACD;;AAED,WAAKrC,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG7L,UAAH,CAAc;AAChCZ,cAAM,uEAAA4F,CAAG0I,aADuB;AAEhC3M,cAAM,EAACiD,IAAD,EAAO6B,KAAP;AAF0B,OAAd,CAApB;AAIA,WAAKuD,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa;AAC/Be,gBAAQ,4EADuB;AAE/BuJ,eAAO,gBAFwB;AAG/B8B,yBAAiBrH;AAHc,OAAb,CAApB;;AAMA,WAAKuD,KAAL,CAAW+d,OAAX;AACD;AACF;;AAEDE,aAAW;AACT,QAAI,EAACpjB,GAAD,KAAQ,KAAK+F,KAAjB;AACA;AACA,QAAI,CAAC/F,IAAI4N,UAAJ,CAAe,OAAf,CAAD,IAA4B,CAAC5N,IAAI4N,UAAJ,CAAe,QAAf,CAAjC,EAA2D;AACzD5N,YAAO,UAASA,GAAI,EAApB;AACD;AACD,WAAOA,GAAP;AACD;;AAEDgjB,oBAAkB;AAChB,QAAI,KAAKjd,KAAL,CAAW2c,eAAf,EAAgC;AAC9B,WAAKtc,QAAL,CAAc,EAACsc,iBAAiB,KAAlB,EAAd;AACD;AACF;;AAEDW,gBAAc;AACZ,QAAI;AACF,aAAO,CAAC,CAAC,IAAIC,GAAJ,CAAQ,KAAKF,QAAL,EAAR,CAAT;AACD,KAFD,CAEE,OAAO1N,CAAP,EAAU;AACV,aAAO,KAAP;AACD;AACF;;AAEDyN,iBAAe;AACb,SAAKH,eAAL;AACA;AACA,QAAI,CAAC,KAAKjd,KAAL,CAAW/F,GAAZ,IAAmB,CAAC,KAAKqjB,WAAL,EAAxB,EAA4C;AAC1C,WAAKjd,QAAL,CAAc,EAACsc,iBAAiB,IAAlB,EAAd;AACA,WAAKa,QAAL,CAAcC,KAAd;AACA,aAAO,KAAP;AACD;AACD,WAAO,IAAP;AACD;;AAEDT,kBAAgB3H,KAAhB,EAAuB;AACrB,SAAKmI,QAAL,GAAgBnI,KAAhB;AACD;;AAED1V,WAAS;AACP;AACA,UAAM+d,YAAY,CAAC,KAAKte,KAAL,CAAWpF,IAA9B;;AAEA,WACE;AAAA;AAAA,QAAM,WAAU,cAAhB;AACE;AAAA;AAAA,UAAS,WAAU,6BAAnB;AACE;AAAA;AAAA,YAAK,WAAU,cAAf;AACE;AAAA;AAAA,cAAI,WAAU,eAAd;AACE,wEAAC,4DAAD,IAAkB,IAAI0jB,YAAY,0BAAZ,GAAyC,2BAA/D;AADF,WADF;AAIE;AAAA;AAAA,cAAK,WAAU,aAAf;AACE;AACE,oBAAK,MADP;AAEE,qBAAO,KAAK1d,KAAL,CAAWyB,KAFpB;AAGE,wBAAU,KAAKmb,aAHjB;AAIE,2BAAa,KAAKxd,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,iCAAL,EAA9B,CAJf;AADF,WAJF;AAWE;AAAA;AAAA,cAAK,WAAY,YAAW,KAAKwC,KAAL,CAAW2c,eAAX,GAA6B,UAA7B,GAA0C,EAAG,EAAzE;AACE;AACE,oBAAK,MADP;AAEE,mBAAK,KAAKK,eAFZ;AAGE,qBAAO,KAAKhd,KAAL,CAAW/F,GAHpB;AAIE,wBAAU,KAAK4iB,WAJjB;AAKE,2BAAa,KAAKzd,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,+BAAL,EAA9B,CALf,GADF;AAOG,iBAAKwC,KAAL,CAAW2c,eAAX,IACC;AAAA;AAAA,gBAAO,WAAU,eAAjB;AACE,0EAAC,4DAAD,IAAkB,IAAG,8BAArB;AADF;AARJ;AAXF;AADF,OADF;AA4BE;AAAA;AAAA,UAAS,WAAU,SAAnB;AACE;AAAA;AAAA,YAAQ,WAAU,QAAlB,EAA2B,MAAK,QAAhC,EAAyC,SAAS,KAAKG,mBAAvD;AACE,sEAAC,4DAAD,IAAkB,IAAG,6BAArB;AADF,SADF;AAIE;AAAA;AAAA,YAAQ,WAAU,MAAlB,EAAyB,MAAK,QAA9B,EAAuC,SAAS,KAAKC,iBAArD;AACE,sEAAC,4DAAD,IAAkB,IAAIW,YAAY,0BAAZ,GAAyC,2BAA/D;AADF;AAJF;AA5BF,KADF;AAuCD;AAxIkD;AAAA;AAAA;;AA2IrDhB,YAAY5c,YAAZ,GAA2B;AACzB6d,WAAS,IADgB;AAEzB9hB,SAAO,CAAC;AAFiB,CAA3B,C;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AAMA;AACA;AACA;;AAEO,MAAM+hB,WAAN,SAA0B,6CAAA1e,CAAMC,aAAhC,CAA8C;AACnD1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKye,WAAL,GAAmB,KAAKA,WAAL,CAAiBre,IAAjB,CAAsB,IAAtB,CAAnB;AACD;;AAED;;;;AAIAse,aAAWnO,CAAX,EAAc;AACZ,WAAOA,EAAEoO,YAAF,CAAeC,KAAf,CAAqBviB,QAArB,CAA8B,oBAA9B,CAAP;AACD;;AAEDoiB,cAAYzc,KAAZ,EAAmB;AACjB,YAAQA,MAAMhM,IAAd;AACE,WAAK,OAAL;AACE;AACA,YAAI,KAAK6oB,OAAT,EAAkB;AAChB7c,gBAAMyY,cAAN;AACD;AACD;AACF,WAAK,WAAL;AACE,aAAKoE,OAAL,GAAe,IAAf;AACA7c,cAAM2c,YAAN,CAAmBG,aAAnB,GAAmC,MAAnC;AACA9c,cAAM2c,YAAN,CAAmBI,OAAnB,CAA2B,oBAA3B,EAAiD,KAAK/e,KAAL,CAAWvD,KAA5D;AACAuF,cAAM5K,MAAN,CAAa4nB,IAAb;AACA,aAAKhf,KAAL,CAAWye,WAAX,CAAuBzc,KAAvB,EAA8B,KAAKhC,KAAL,CAAWvD,KAAzC,EAAgD,KAAKuD,KAAL,CAAW9D,IAA3D,EAAiE,KAAK8D,KAAL,CAAWvB,KAA5E;AACA;AACF,WAAK,SAAL;AACE,aAAKuB,KAAL,CAAWye,WAAX,CAAuBzc,KAAvB;AACA;AACF,WAAK,WAAL;AACA,WAAK,UAAL;AACA,WAAK,MAAL;AACE,YAAI,KAAK0c,UAAL,CAAgB1c,KAAhB,CAAJ,EAA4B;AAC1BA,gBAAMyY,cAAN;AACA,eAAKza,KAAL,CAAWye,WAAX,CAAuBzc,KAAvB,EAA8B,KAAKhC,KAAL,CAAWvD,KAAzC;AACD;AACD;AACF,WAAK,WAAL;AACE;AACA,aAAKoiB,OAAL,GAAe,KAAf;AACA;AA5BJ;AA8BD;;AAEDte,WAAS;AACP,UAAM,EAACW,QAAD,EAAWT,SAAX,EAAsBwe,WAAtB,EAAmC/iB,IAAnC,EAAyCiE,OAAzC,EAAkD1B,KAAlD,KAA2D,KAAKuB,KAAtE;AACA,UAAMkf,wBAAyB,iBAAgBze,YAAa,IAAGA,SAAU,EAA1B,GAA8B,EAAG,GAAEvE,KAAKijB,SAAL,GAAiB,UAAjB,GAA8B,EAAG,EAAnH;AACA,UAAM,EAACjD,YAAD,EAAeG,WAAf,KAA8BngB,IAApC;AACA,UAAM,CAACkjB,cAAD,IAAmB3gB,KAAzB;AACA,QAAI4gB,cAAJ;AACA,QAAIlE,UAAJ;AACA,QAAImE,mBAAmB,KAAvB;AACA,QAAIC,iBAAJ;AACA,QAAIC,oBAAJ;AACA,QAAItD,gBAAgBG,eAAe,iFAAnC,EAA0D;AACxD;AACAgD,uBAAiB,yBAAjB;AACAlE,mBAAa;AACXsE,yBAAiBvjB,KAAKujB,eADX;AAEX/W,yBAAkB,OAAMwT,gBAAgBhgB,KAAKwjB,OAAQ;AAF1C,OAAb;AAID,KAPD,MAOO;AACL;AACAL,uBAAkB,aAAYnjB,KAAKiB,UAAL,GAAkB,SAAlB,GAA8B,EAAG,EAA/D;AACAge,mBAAa,EAACzS,iBAAiBxM,KAAKiB,UAAL,GAAmB,OAAMjB,KAAKiB,UAAW,GAAzC,GAA8C,MAAhE,EAAb;;AAEA;AACA,UAAIkf,eAAe,mFAAnB,EAA4C;AAC1CiD,2BAAmB,IAAnB;AACAC,4BAAoB,EAAC7W,iBAAmB,OAAMxM,KAAKwjB,OAAQ,GAAvC,EAApB;AACD,OAHD,MAGO,IAAIxjB,KAAKiB,UAAT,EAAqB;AAC1B;AACA;AACAmiB,2BAAmB,IAAnB;AACAE,+BAAuB,IAAvB;AACD;AACF;AACD,QAAIG,iBAAiB,EAArB;AACA,QAAIV,WAAJ,EAAiB;AACfU,uBAAiB;AACfxf,iBAAS,KAAKse,WADC;AAEfmB,mBAAW,KAAKnB,WAFD;AAGfoB,qBAAa,KAAKpB,WAHH;AAIfqB,qBAAa,KAAKrB;AAJH,OAAjB;AAMD;AACD,WAAQ;AAAA;AAAA,iBAAI,WAAWS,qBAAf,EAAsC,QAAQ,KAAKT,WAAnD,EAAgE,YAAY,KAAKA,WAAjF,EAA8F,aAAa,KAAKA,WAAhH,EAA6H,aAAa,KAAKA,WAA/I,IAAgKkB,cAAhK;AACN;AAAA;AAAA,UAAK,WAAU,gBAAf;AACG;AAAA;AAAA,YAAG,MAAMzjB,KAAKrB,GAAd,EAAmB,SAASsF,OAA5B;AACG;AAAA;AAAA,cAAK,WAAU,MAAf,EAAsB,eAAa,IAAnC,EAAyC,iBAAeif,cAAxD;AACE,iFAAK,WAAWC,cAAhB,EAAgC,OAAOlE,UAAvC,GADF;AAEGmE,gCAAoB;AACnB,yBAAU,4BADS;AAEnB,+BAAeE,wBAAwBJ,cAFpB;AAGnB,qBAAOG,iBAHY;AAFvB,WADH;AAQE;AAAA;AAAA,cAAK,WAAY,SAAQrjB,KAAKI,QAAL,GAAgB,QAAhB,GAA2B,EAAG,EAAvD;AACGJ,iBAAKI,QAAL,IAAiB,qEAAK,WAAU,qBAAf,GADpB;AAEG;AAAA;AAAA,gBAAM,KAAI,MAAV;AAAkBmC;AAAlB;AAFH;AARF,SADH;AAcIyC;AAdJ;AADM,KAAR;AAkBD;AA3GkD;AAAA;AAAA;AA6GrDsd,YAAY9d,YAAZ,GAA2B;AACzBjC,SAAO,EADkB;AAEzBvC,QAAM,EAFmB;AAGzB+iB,eAAa;AAHY,CAA3B;;AAMO,MAAMV,OAAN,SAAsB,6CAAAze,CAAMC,aAA5B,CAA0C;AAC/C1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKY,KAAL,GAAa,EAACiZ,iBAAiB,KAAlB,EAAb;AACA,SAAKG,WAAL,GAAmB,KAAKA,WAAL,CAAiB5Z,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAK0Z,iBAAL,GAAyB,KAAKA,iBAAL,CAAuB1Z,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAK2Z,YAAL,GAAoB,KAAKA,YAAL,CAAkB3Z,IAAlB,CAAuB,IAAvB,CAApB;AACD;;AAEDuC,YAAUX,KAAV,EAAiB;AACf,SAAKhC,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa;AAC/BsK,WAD+B;AAE/BvJ,cAAQ,4EAFuB;AAG/BqL,uBAAiB,KAAK9D,KAAL,CAAWvD;AAHG,KAAb,CAApB;AAKD;;AAEDud,cAAY8D,EAAZ,EAAgB;AACd,SAAKnb,SAAL,CAAe,OAAf;AACD;;AAEDmX,oBAAkB9X,KAAlB,EAAyB;AACvBA,UAAMyY,cAAN;AACA,SAAKza,KAAL,CAAW+f,UAAX,CAAsB,KAAK/f,KAAL,CAAWvD,KAAjC;AACA,SAAKwE,QAAL,CAAc,EAAC4Y,iBAAiB,IAAlB,EAAd;AACD;;AAEDE,eAAaF,eAAb,EAA8B;AAC5B,SAAK5Y,QAAL,CAAc,EAAC4Y,eAAD,EAAd;AACD;;AAEDtZ,WAAS;AACP,UAAM,EAACP,KAAD,KAAU,IAAhB;AACA,UAAM,EAAC9D,IAAD,KAAS8D,KAAf;AACA,UAAMib,oBAAoB,KAAKra,KAAL,CAAWiZ,eAAX,IAA8B7Z,MAAMggB,WAAN,KAAsBhgB,MAAMvD,KAApF;AACA,UAAMgC,QAAQvC,KAAKmG,KAAL,IAAcnG,KAAKmf,QAAjC;AACA,WAAQ;AAAC,iBAAD;AAAA,mBAAiBrb,KAAjB,IAAwB,SAAS,KAAKga,WAAtC,EAAmD,aAAa,KAAKha,KAAL,CAAWye,WAA3E,EAAwF,WAAY,GAAEze,MAAMS,SAAN,IAAmB,EAAG,GAAEwa,oBAAoB,SAApB,GAAgC,EAAG,EAAjK,EAAoK,OAAOxc,KAA3K;AACJ;AAAA;AAAA;AACE;AAAA;AAAA,YAAQ,WAAU,0BAAlB,EAA6C,SAAS,KAAKqb,iBAA3D;AACE;AAAA;AAAA,cAAM,WAAU,SAAhB;AACE,wEAAC,4DAAD,IAAkB,IAAG,wBAArB,EAA8C,QAAQ,EAACrb,KAAD,EAAtD;AADF;AADF,SADF;AAME,oEAAC,0FAAD;AACE,oBAAUuB,MAAMqF,QADlB;AAEE,iBAAOrF,MAAMvD,KAFf;AAGE,oBAAU,KAAKsd,YAHjB;AAIE,mBAAS,0FAJX;AAKE,gBAAM7d,IALR;AAME,kBAAQ,4EANV;AAOE,mBAAS+e,iBAPX;AANF;AADI,KAAR;AAiBD;AArD8C;AAAA;AAAA;AAuDjDsD,QAAQ7d,YAAR,GAAuB;AACrBxE,QAAM,EADe;AAErB6jB,eAAa,CAAE;AAFM,CAAvB;;AAKO,MAAME,kBAAN,SAAiC,6CAAAngB,CAAMC,aAAvC,CAAqD;AAC1D1G,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKkgB,iBAAL,GAAyB,KAAKA,iBAAL,CAAuB9f,IAAvB,CAA4B,IAA5B,CAAzB;AACD;;AAED8f,sBAAoB;AAClB,SAAKlgB,KAAL,CAAWqF,QAAX,CACE,EAACrP,MAAM,uEAAA4F,CAAGmB,cAAV,EAA0BpF,MAAM,EAAC8E,OAAO,KAAKuD,KAAL,CAAWvD,KAAnB,EAAhC,EADF;AAED;;AAED8D,WAAS;AACP,WAAQ;AAAC,iBAAD;AAAA,mBAAiB,KAAKP,KAAtB,IAA6B,WAAY,eAAc,KAAKA,KAAL,CAAWS,SAAX,IAAwB,EAAG,EAAlF,EAAqF,aAAa,KAAlG;AACN,8EAAQ,WAAU,sCAAlB;AACC,eAAO,KAAKT,KAAL,CAAWmF,IAAX,CAAgBC,aAAhB,CAA8B,EAAChH,IAAI,2BAAL,EAA9B,CADR;AAEC,iBAAS,KAAK8hB,iBAFf;AADM,KAAR;AAKD;AAjByD;AAAA;AAAA;;AAoBrD,MAAMC,YAAN,SAA2B,6CAAArgB,CAAMC,aAAjC,CAA+C;AACpD,aAAWqgB,aAAX,GAA2B;AACzB,WAAO;AACLJ,mBAAa,IADR;AAELK,oBAAc,IAFT;AAGLC,mBAAa,IAHR;AAILC,oBAAc,IAJT;AAKLC,uBAAiB;AALZ,KAAP;AAOD;;AAEDnnB,cAAY2G,KAAZ,EAAmB;AACjB,UAAMA,KAAN;AACA,SAAKY,KAAL,GAAauf,aAAaC,aAA1B;AACA,SAAK3B,WAAL,GAAmB,KAAKA,WAAL,CAAiBre,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAK2f,UAAL,GAAkB,KAAKA,UAAL,CAAgB3f,IAAhB,CAAqB,IAArB,CAAlB;AACD;;AAED4a,4BAA0B9S,SAA1B,EAAqC;AACnC,QAAI,KAAKtH,KAAL,CAAW0f,WAAf,EAA4B;AAC1B,YAAMG,eAAe,KAAKzgB,KAAL,CAAW7E,QAAX,IAAuB,KAAK6E,KAAL,CAAW7E,QAAX,CAAoBC,IAAhE;AACA,YAAMslB,cAAcxY,UAAU/M,QAAV,IAAsB+M,UAAU/M,QAAV,CAAmBC,IAA7D;AACA,UAAIqlB,gBAAgBA,aAAa,KAAK7f,KAAL,CAAWyf,YAAxB,CAAhB,IACFI,aAAa,KAAK7f,KAAL,CAAWyf,YAAxB,EAAsCxlB,GAAtC,KAA8C,KAAK+F,KAAL,CAAW0f,WAAX,CAAuBzlB,GADnE,KAED,CAAC6lB,YAAY,KAAK9f,KAAL,CAAWyf,YAAvB,CAAD,IAAyCK,YAAY,KAAK9f,KAAL,CAAWyf,YAAvB,EAAqCxlB,GAArC,KAA6C,KAAK+F,KAAL,CAAW0f,WAAX,CAAuBzlB,GAF5G,CAAJ,EAEsH;AACpH;AACA,aAAKoG,QAAL,CAAckf,aAAaC,aAA3B;AACD;AACF;AACF;;AAEDzd,YAAUX,KAAV,EAAiBvF,KAAjB,EAAwB;AACtB,SAAKuD,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG/K,SAAH,CAAa;AAC/BsK,WAD+B;AAE/BvJ,cAAQ,4EAFuB;AAG/BqL,uBAAiBrH;AAHc,KAAb,CAApB;AAKD;;AAEDgiB,cAAYzc,KAAZ,EAAmBvF,KAAnB,EAA0BP,IAA1B,EAAgCuC,KAAhC,EAAuC;AACrC,YAAQuD,MAAMhM,IAAd;AACE,WAAK,WAAL;AACE,aAAK2qB,OAAL,GAAe,KAAf;AACA,aAAK1f,QAAL,CAAc;AACZof,wBAAc5jB,KADF;AAEZ6jB,uBAAapkB,IAFD;AAGZqkB,wBAAc9hB,KAHF;AAIZuhB,uBAAa;AAJD,SAAd;AAMA,aAAKrd,SAAL,CAAe,MAAf,EAAuBlG,KAAvB;AACA;AACF,WAAK,SAAL;AACE,YAAI,CAAC,KAAKkkB,OAAV,EAAmB;AACjB;AACA,eAAK1f,QAAL,CAAckf,aAAaC,aAA3B;AACD;AACD;AACF,WAAK,WAAL;AACE,YAAI3jB,UAAU,KAAKmE,KAAL,CAAWyf,YAAzB,EAAuC;AACrC,eAAKpf,QAAL,CAAc,EAACuf,iBAAiB,IAAlB,EAAd;AACD,SAFD,MAEO;AACL,eAAKvf,QAAL,CAAc,EAACuf,iBAAiB,KAAKI,oBAAL,CAA0BnkB,KAA1B,CAAlB,EAAd;AACD;AACD;AACF,WAAK,MAAL;AACE,YAAIA,UAAU,KAAKmE,KAAL,CAAWyf,YAAzB,EAAuC;AACrC,eAAKM,OAAL,GAAe,IAAf;AACA,eAAK3gB,KAAL,CAAWqF,QAAX,CAAoB,0EAAA5C,CAAG7L,UAAH,CAAc;AAChCZ,kBAAM,uEAAA4F,CAAGilB,gBADuB;AAEhClpB,kBAAM,EAACiD,MAAM,EAACC,KAAK,KAAK+F,KAAL,CAAW0f,WAAX,CAAuBzlB,GAA7B,EAAkCwH,OAAO,KAAKzB,KAAL,CAAW2f,YAApD,EAAP,EAA0E9jB,KAA1E,EAAiFqkB,kBAAkB,KAAKlgB,KAAL,CAAWyf,YAA9G;AAF0B,WAAd,CAApB;AAIA,eAAK1d,SAAL,CAAe,MAAf,EAAuBlG,KAAvB;AACD;AACD;AAjCJ;AAmCD;;AAEDskB,iBAAe;AACb;AACA,QAAIhF,WAAW,KAAK/b,KAAL,CAAW7E,QAAX,CAAoBC,IAApB,CAAyB0c,KAAzB,EAAf;AACAiE,aAASrf,MAAT,GAAkB,KAAKsD,KAAL,CAAWqd,YAAX,GAA0B,wFAA5C;AACA,WAAOtB,QAAP;AACD;;AAED;;;;AAIA6E,uBAAqBnkB,KAArB,EAA4B;AAC1B,UAAMsf,WAAW,KAAKgF,YAAL,EAAjB;AACAhF,aAAS,KAAKnb,KAAL,CAAWyf,YAApB,IAAoC,IAApC;AACA,UAAMW,aAAajF,SAASzhB,GAAT,CAAaM,QAAUA,QAAQA,KAAK0B,QAAd,GAA0B1B,IAA1B,GAAiC,IAAvD,CAAnB;AACA,UAAMqmB,WAAWlF,SAAS3f,MAAT,CAAgBxB,QAAQA,QAAQ,CAACA,KAAK0B,QAAtC,CAAjB;AACA,UAAM4kB,eAAe7qB,OAAOC,MAAP,CAAc,EAAd,EAAkB,KAAKsK,KAAL,CAAW0f,WAA7B,EAA0C,EAAChkB,UAAU,IAAX,EAAiB6iB,WAAW,IAA5B,EAA1C,CAArB;AACA,QAAI,CAAC6B,WAAWvkB,KAAX,CAAL,EAAwB;AACtBukB,iBAAWvkB,KAAX,IAAoBykB,YAApB;AACD,KAFD,MAEO;AACL;AACA;AACA,UAAIC,YAAY1kB,KAAhB;AACA,YAAM2kB,YAAY3kB,QAAQ,KAAKmE,KAAL,CAAWyf,YAAnB,GAAkC,CAAC,CAAnC,GAAuC,CAAzD;AACA,aAAOW,WAAWG,SAAX,CAAP,EAA8B;AAC5BA,qBAAaC,SAAb;AACD;;AAED;AACA,YAAMC,eAAe5kB,QAAQ,KAAKmE,KAAL,CAAWyf,YAAnB,GAAkC,CAAlC,GAAsC,CAAC,CAA5D;AACA,aAAOc,cAAc1kB,KAArB,EAA4B;AAC1B,cAAM6kB,YAAYH,YAAYE,YAA9B;AACAL,mBAAWG,SAAX,IAAwBH,WAAWM,SAAX,CAAxB;AACAH,oBAAYG,SAAZ;AACD;AACDN,iBAAWvkB,KAAX,IAAoBykB,YAApB;AACD;;AAED;AACA,UAAMK,UAAUP,UAAhB;AACA,SAAK,IAAIlf,IAAI,CAAb,EAAgBA,IAAIyf,QAAQ7kB,MAA5B,EAAoCoF,GAApC,EAAyC;AACvC,UAAI,CAACyf,QAAQzf,CAAR,CAAL,EAAiB;AACfyf,gBAAQzf,CAAR,IAAamf,SAASO,KAAT,MAAoB,IAAjC;AACD;AACF;;AAED,WAAOD,OAAP;AACD;;AAEDxB,aAAWtjB,KAAX,EAAkB;AAChB,SAAKwE,QAAL,CAAc,EAAC+e,aAAavjB,KAAd,EAAd;AACD;;AAED8D,WAAS;AACP,UAAM,EAACP,KAAD,KAAU,IAAhB;AACA,UAAM+b,WAAW,KAAKnb,KAAL,CAAW4f,eAAX,IAA8B,KAAKO,YAAL,EAA/C;AACA,UAAMU,aAAa,EAAnB;AACA,UAAMC,cAAc;AAClBjD,mBAAa,KAAKA,WADA;AAElBpZ,gBAAUrF,MAAMqF,QAFE;AAGlBF,YAAMnF,MAAMmF;AAHM,KAApB;AAKA;AACA;AACA;AACA;AACA,QAAIgc,YAAY,CAAhB;;AAEA;AACA;AACA,UAAMQ,wBAAwB3hB,MAAMqd,YAAN,GAAqB,CAAnD;;AAEA,SAAK,IAAIvb,IAAI,CAAR,EAAW8f,IAAI7F,SAASrf,MAA7B,EAAqCoF,IAAI8f,CAAzC,EAA4C9f,GAA5C,EAAiD;AAC/C,YAAM5F,OAAO6f,SAASja,CAAT,CAAb;AACA,YAAM+f,YAAY;AAChB5nB,aAAKiC,OAAOA,KAAKrB,GAAZ,GAAkBsmB,WADP;AAEhB1kB,eAAOqF;AAFS,OAAlB;AAIA,UAAIA,KAAK6f,qBAAT,EAAgC;AAC9BE,kBAAUphB,SAAV,GAAsB,iBAAtB;AACD;AACDghB,iBAAWrnB,IAAX,CAAgB,CAAC8B,IAAD,GACd,4DAAC,kBAAD,eACM2lB,SADN,EAEMH,WAFN,EADc,GAKd,4DAAC,OAAD;AACE,cAAMxlB,IADR;AAEE,qBAAa,KAAK0E,KAAL,CAAWof,WAF1B;AAGE,oBAAY,KAAKD;AAHnB,SAIM8B,SAJN,EAKMH,WALN,EALF;AAYD;AACD,WAAQ;AAAA;AAAA,QAAI,WAAY,iBAAgB,KAAK9gB,KAAL,CAAW0f,WAAX,GAAyB,aAAzB,GAAyC,EAAG,EAA5E;AACLmB;AADK,KAAR;AAGD;AA9KmD;AAAA;AAAA;;AAiL/C,MAAMK,cAAc,8DAAAtc,CAAW2a,YAAX,CAApB,C;;;;;;;;;;;AChYP;AACA;;AAEA,MAAM1a,UAAU,SAAhB;AACA,MAAMC,0BAA0B,kBAAhC;;AAEO,MAAMqc,sBAAN,CAA6B;AAClC1oB,cAAYqS,KAAZ,EAAmBvV,UAAU,EAA7B,EAAiC;AAC/B,SAAK6rB,MAAL,GAActW,KAAd;AACA;AACA,SAAK1D,QAAL,GAAgB7R,QAAQ6R,QAAR,IAAoBc,OAAOd,QAA3C;AACA,SAAKia,YAAL,GAAoB9rB,QAAQ+rB,WAAR,IAAuB,2EAA3C;AACA,SAAKhK,mBAAL,GAA2B,KAAKA,mBAAL,CAAyB9X,IAAzB,CAA8B,IAA9B,CAA3B;AACD;;AAED;;;;;;AAMAyL,2BAAyB;AACvB,QAAI,KAAK7D,QAAL,CAAcK,eAAd,KAAkC5C,OAAtC,EAA+C;AAC7C;AACA;AACA,WAAK0c,UAAL;AACD,KAJD,MAIO;AACL;AACA,WAAKna,QAAL,CAActG,gBAAd,CAA+BgE,uBAA/B,EAAwD,KAAKwS,mBAA7D;AACD;AACF;;AAED;;;;;AAKAiK,eAAa;AACX,SAAKF,YAAL,CAAkBjY,IAAlB,CAAuB,0BAAvB;;AAEA,QAAI;AACF,UAAIoY,2BAA2B,KAAKH,YAAL,CAC5B7X,+BAD4B,CACI,0BADJ,CAA/B;;AAGA,WAAK4X,MAAL,CAAY3c,QAAZ,CAAqB,0EAAA5C,CAAG7L,UAAH,CAAc;AACjCZ,cAAM,uEAAA4F,CAAGyO,sBADwB;AAEjC1S,cAAM,EAACyqB,wBAAD;AAF2B,OAAd,CAArB;AAID,KARD,CAQE,OAAO9X,EAAP,EAAW;AACX;AACA;AACD;AACF;;AAED;;;;AAIA4N,wBAAsB;AACpB,QAAI,KAAKlQ,QAAL,CAAcK,eAAd,KAAkC5C,OAAtC,EAA+C;AAC7C,WAAK0c,UAAL;AACA,WAAKna,QAAL,CAAcrG,mBAAd,CAAkC+D,uBAAlC,EAA2D,KAAKwS,mBAAhE;AACD;AACF;AAzDiC,C;;;;;;;;;;;;ACNpC;AAAA;AAAA;;AAEA;AACA;;AAEO,MAAMmK,qBAAqB,uBAA3B;AAAA;AAAA;AACA,MAAMC,wBAAwB,8BAA9B;AAAA;AAAA;AACA,MAAMC,wBAAwB,8BAA9B;AAAA;AAAA;AACA,MAAMC,uBAAuB,CAAC,uEAAA5mB,CAAGyO,sBAAJ,EAA4B,uEAAAzO,CAAGib,gBAA/B,CAA7B;AAAA;AAAA;;AAEP;;;;;;;;;;;;;;;;AAgBA,SAAS4L,iBAAT,CAA2BC,WAA3B,EAAwC;AACtC,SAAO,CAAC/mB,SAAD,EAAYzF,MAAZ,KAAuB;AAC5B,QAAIA,OAAOF,IAAP,KAAgBqsB,kBAApB,EAAwC;AACtC,aAAOhsB,OAAOC,MAAP,CAAc,EAAd,EAAkBqF,SAAlB,EAA6BzF,OAAOyB,IAApC,CAAP;AACD;;AAED,WAAO+qB,YAAY/mB,SAAZ,EAAuBzF,MAAvB,CAAP;AACD,GAND;AAOD;;AAED;;;AAGA,MAAMysB,oBAAoBjX,SAAS2J,QAAQnf,UAAU;AACnD,QAAMY,YAAYZ,OAAOE,IAAP,IAAeF,OAAOE,IAAP,CAAYU,SAA7C;AACA,MAAI,uEAAA8rB,CAAGlqB,YAAH,CAAgBxC,MAAhB,CAAJ,EAA6B;AAC3B2sB,qBAAiBP,qBAAjB,EAAwCpsB,MAAxC;AACD;AACD,MAAI,CAACY,SAAL,EAAgB;AACdue,SAAKnf,MAAL;AACD;AACF,CARD;;AAUO,MAAM4sB,wBAAwBpX,SAAS2J,QAAQnf,UAAU;AAC9D,MAAIwV,MAAMqX,aAAV,EAAyB;AACvB,WAAO1N,KAAKnf,MAAL,CAAP;AACD;;AAED,QAAM8sB,qBAAqB9sB,OAAOF,IAAP,KAAgBqsB,kBAA3C;AACA,QAAMY,uBAAuB/sB,OAAOF,IAAP,KAAgB,uEAAA4F,CAAGkQ,qBAAhD;;AAEA,MAAImX,oBAAJ,EAA0B;AACxBvX,UAAMwX,uBAAN,GAAgC,IAAhC;AACA,WAAO7N,KAAKnf,MAAL,CAAP;AACD;;AAED,MAAI8sB,kBAAJ,EAAwB;AACtBtX,UAAMqX,aAAN,GAAsB,IAAtB;AACA,WAAO1N,KAAKnf,MAAL,CAAP;AACD;;AAED;AACA,MAAIwV,MAAMwX,uBAAN,IAAiChtB,OAAOF,IAAP,KAAgB,uEAAA4F,CAAGC,IAAxD,EAA8D;AAC5D,WAAOwZ,KAAK,0EAAA5S,CAAG7L,UAAH,CAAc,EAACZ,MAAM,uEAAA4F,CAAGkQ,qBAAV,EAAd,CAAL,CAAP;AACD;;AAED,MAAI,uEAAA8W,CAAGjqB,oBAAH,CAAwBzC,MAAxB,KAAmC,uEAAA0sB,CAAGhqB,kBAAH,CAAsB1C,MAAtB,CAAnC,IAAoE,uEAAA0sB,CAAG/pB,iBAAH,CAAqB3C,MAArB,CAAxE,EAAsG;AACpG;AACA;AACA;AACA,WAAO,IAAP;AACD;;AAED,SAAOmf,KAAKnf,MAAL,CAAP;AACD,CA/BM;AAAA;AAAA;;AAiCP;;;;;;;AAOO,MAAMitB,8BAA8BzX,SAAS2J,QAAQnf,UAAU;AACpE,MAAIwV,MAAM0X,iBAAV,EAA6B;AAC3B/N,SAAKnf,MAAL;AACD,GAFD,MAEO,IAAI,uEAAA0sB,CAAG9pB,UAAH,CAAc5C,MAAd,CAAJ,EAA2B;AAChCmf,SAAKnf,MAAL;AACAwV,UAAM0X,iBAAN,GAA0B,IAA1B;AACA;AACA,QAAI1X,MAAM2X,iBAAV,EAA6B;AAC3B3X,YAAM2X,iBAAN,CAAwB3sB,OAAxB,CAAgC2e,IAAhC;AACA3J,YAAM2X,iBAAN,GAA0B,EAA1B;AACD;AACF,GARM,MAQA,IAAIb,qBAAqBnmB,QAArB,CAA8BnG,OAAOF,IAArC,CAAJ,EAAgD;AACrD0V,UAAM2X,iBAAN,GAA0B3X,MAAM2X,iBAAN,IAA2B,EAArD;AACA3X,UAAM2X,iBAAN,CAAwBjpB,IAAxB,CAA6BlE,MAA7B;AACD,GAHM,MAGA;AACL;AACAmf,SAAKnf,MAAL;AACD;AACF,CAlBM;AAAA;AAAA;;AAoBP;;;;;;;AAOO,SAASyV,SAAT,CAAmB2X,QAAnB,EAA6BC,YAA7B,EAA2C;AAChD,QAAM7X,QAAQ,0DAAA8X,CACZf,kBAAkB,8DAAAgB,CAAgBH,QAAhB,CAAlB,CADY,EAEZC,YAFY,EAGZza,OAAO6I,kBAAP,IAA6B,8DAAA+R,CAAgBZ,qBAAhB,EAAuCK,2BAAvC,EAAoER,iBAApE,CAHjB,CAAd;;AAMAjX,QAAMqX,aAAN,GAAsB,KAAtB;AACArX,QAAMwX,uBAAN,GAAgC,KAAhC;;AAEA,MAAIpa,OAAO6I,kBAAX,EAA+B;AAC7B7I,WAAO6I,kBAAP,CAA0B4Q,qBAA1B,EAAiD/Q,OAAO;AACtD,UAAI;AACF9F,cAAMrG,QAAN,CAAemM,IAAI7Z,IAAnB;AACD,OAFD,CAEE,OAAO2S,EAAP,EAAW;AACX0E,gBAAQjO,KAAR,CAAc,cAAd,EAA8ByQ,GAA9B,EAAmC,kBAAnC,EAAuDlH,EAAvD,EADW,CACiD;AAC5DqZ,aAAM,gBAAeC,KAAKC,SAAL,CAAerS,GAAf,CAAoB,qBAAoBlH,EAAG,KAAIA,GAAGwZ,KAAM,EAA7E;AACD;AACF,KAPD;AAQD;;AAED,SAAOpY,KAAP;AACD,C;;;;;;;AC1ID,uB;;;;;;ACAA,0B","file":"activity-stream.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c8b6b3c95425ced9cdc8","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nthis.MAIN_MESSAGE_TYPE = \"ActivityStream:Main\";\nthis.CONTENT_MESSAGE_TYPE = \"ActivityStream:Content\";\nthis.PRELOAD_MESSAGE_TYPE = \"ActivityStream:PreloadedBrowser\";\nthis.UI_CODE = 1;\nthis.BACKGROUND_PROCESS = 2;\n\n/**\n * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?\n * Use this in action creators if you need different logic\n * for ui/background processes.\n */\nconst globalImportContext = typeof Window === \"undefined\" ? BACKGROUND_PROCESS : UI_CODE;\n// Export for tests\nthis.globalImportContext = globalImportContext;\n\n// Create an object that avoids accidental differing key/value pairs:\n// {\n// INIT: \"INIT\",\n// UNINIT: \"UNINIT\"\n// }\nconst actionTypes = {};\nfor (const type of [\n \"BLOCK_URL\",\n \"BOOKMARK_URL\",\n \"DELETE_BOOKMARK_BY_ID\",\n \"DELETE_HISTORY_URL\",\n \"DELETE_HISTORY_URL_CONFIRM\",\n \"DIALOG_CANCEL\",\n \"DIALOG_OPEN\",\n \"DISABLE_ONBOARDING\",\n \"INIT\",\n \"MIGRATION_CANCEL\",\n \"MIGRATION_COMPLETED\",\n \"MIGRATION_START\",\n \"NEW_TAB_INIT\",\n \"NEW_TAB_INITIAL_STATE\",\n \"NEW_TAB_LOAD\",\n \"NEW_TAB_REHYDRATED\",\n \"NEW_TAB_STATE_REQUEST\",\n \"NEW_TAB_UNLOAD\",\n \"OPEN_LINK\",\n \"OPEN_NEW_WINDOW\",\n \"OPEN_PRIVATE_WINDOW\",\n \"PAGE_PRERENDERED\",\n \"PLACES_BOOKMARK_ADDED\",\n \"PLACES_BOOKMARK_CHANGED\",\n \"PLACES_BOOKMARK_REMOVED\",\n \"PLACES_HISTORY_CLEARED\",\n \"PLACES_LINKS_DELETED\",\n \"PLACES_LINK_BLOCKED\",\n \"PREFS_INITIAL_VALUES\",\n \"PREF_CHANGED\",\n \"RICH_ICON_MISSING\",\n \"SAVE_SESSION_PERF_DATA\",\n \"SAVE_TO_POCKET\",\n \"SCREENSHOT_UPDATED\",\n \"SECTION_DEREGISTER\",\n \"SECTION_DISABLE\",\n \"SECTION_ENABLE\",\n \"SECTION_OPTIONS_CHANGED\",\n \"SECTION_REGISTER\",\n \"SECTION_UPDATE\",\n \"SECTION_UPDATE_CARD\",\n \"SETTINGS_CLOSE\",\n \"SETTINGS_OPEN\",\n \"SET_PREF\",\n \"SHOW_FIREFOX_ACCOUNTS\",\n \"SNIPPETS_BLOCKLIST_UPDATED\",\n \"SNIPPETS_DATA\",\n \"SNIPPETS_RESET\",\n \"SNIPPET_BLOCKED\",\n \"SYSTEM_TICK\",\n \"TELEMETRY_IMPRESSION_STATS\",\n \"TELEMETRY_PERFORMANCE_EVENT\",\n \"TELEMETRY_UNDESIRED_EVENT\",\n \"TELEMETRY_USER_EVENT\",\n \"TOP_SITES_CANCEL_EDIT\",\n \"TOP_SITES_EDIT\",\n \"TOP_SITES_INSERT\",\n \"TOP_SITES_PIN\",\n \"TOP_SITES_UNPIN\",\n \"TOP_SITES_UPDATED\",\n \"UNINIT\",\n \"WEBEXT_CLICK\",\n \"WEBEXT_DISMISS\"\n]) {\n actionTypes[type] = type;\n}\n\n// Helper function for creating routed actions between content and main\n// Not intended to be used by consumers\nfunction _RouteMessage(action, options) {\n const meta = action.meta ? Object.assign({}, action.meta) : {};\n if (!options || !options.from || !options.to) {\n throw new Error(\"Routed Messages must have options as the second parameter, and must at least include a .from and .to property.\");\n }\n // For each of these fields, if they are passed as an option,\n // add them to the action. If they are not defined, remove them.\n [\"from\", \"to\", \"toTarget\", \"fromTarget\", \"skipMain\", \"skipLocal\"].forEach(o => {\n if (typeof options[o] !== \"undefined\") {\n meta[o] = options[o];\n } else if (meta[o]) {\n delete meta[o];\n }\n });\n return Object.assign({}, action, {meta});\n}\n\n/**\n * AlsoToMain - Creates a message that will be dispatched locally and also sent to the Main process.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {bool} skipLocal Used by OnlyToMain to skip the main reducer\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToMain(action, fromTarget, skipLocal) {\n return _RouteMessage(action, {\n from: CONTENT_MESSAGE_TYPE,\n to: MAIN_MESSAGE_TYPE,\n fromTarget,\n skipLocal\n });\n}\n\n/**\n * OnlyToMain - Creates a message that will be sent to the Main process and skip the local reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {object} options\n * @param {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToMain(action, fromTarget) {\n return AlsoToMain(action, fromTarget, true);\n}\n\n/**\n * BroadcastToContent - Creates a message that will be dispatched to main and sent to ALL content processes.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction BroadcastToContent(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE\n });\n}\n\n/**\n * AlsoToOneContent - Creates a message that will be will be dispatched to the main store\n * and also sent to a particular Content process.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @param {bool} skipMain Used by OnlyToOneContent to skip the main process\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToOneContent(action, target, skipMain) {\n if (!target) {\n throw new Error(\"You must provide a target ID as the second parameter of AlsoToOneContent. If you want to send to all content processes, use BroadcastToContent\");\n }\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: CONTENT_MESSAGE_TYPE,\n toTarget: target,\n skipMain\n });\n}\n\n/**\n * OnlyToOneContent - Creates a message that will be sent to a particular Content process\n * and skip the main reducer.\n *\n * @param {object} action Any redux action (required)\n * @param {string} target The id of a content port\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToOneContent(action, target) {\n return AlsoToOneContent(action, target, true);\n}\n\n/**\n * AlsoToPreloaded - Creates a message that dispatched to the main reducer and also sent to the preloaded tab.\n *\n * @param {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToPreloaded(action) {\n return _RouteMessage(action, {\n from: MAIN_MESSAGE_TYPE,\n to: PRELOAD_MESSAGE_TYPE\n });\n}\n\n/**\n * UserEvent - A telemetry ping indicating a user action. This should only\n * be sent from the UI during a user session.\n *\n * @param {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction UserEvent(data) {\n return AlsoToMain({\n type: actionTypes.TELEMETRY_USER_EVENT,\n data\n });\n}\n\n/**\n * UndesiredEvent - A telemetry ping indicating an undesired state.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction UndesiredEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_UNDESIRED_EVENT,\n data\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * PerfEvent - A telemetry ping indicating a performance-related event.\n *\n * @param {object} data Fields to include in the ping (value, etc.)\n * @param {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction PerfEvent(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_PERFORMANCE_EVENT,\n data\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * ImpressionStats - A telemetry ping indicating an impression stats.\n *\n * @param {object} data Fields to include in the ping\n * @param {int} importContext (For testing) Override the import context for testing.\n * #return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction ImpressionStats(data, importContext = globalImportContext) {\n const action = {\n type: actionTypes.TELEMETRY_IMPRESSION_STATS,\n data\n };\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction SetPref(name, value, importContext = globalImportContext) {\n const action = {type: actionTypes.SET_PREF, data: {name, value}};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction WebExtEvent(type, data, importContext = globalImportContext) {\n if (!data || !data.source) {\n throw new Error(\"WebExtEvent actions should include a property \\\"source\\\", the id of the webextension that should receive the event.\");\n }\n const action = {type, data};\n return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nthis.actionTypes = actionTypes;\n\nthis.actionCreators = {\n BroadcastToContent,\n UserEvent,\n UndesiredEvent,\n PerfEvent,\n ImpressionStats,\n AlsoToOneContent,\n OnlyToOneContent,\n AlsoToMain,\n OnlyToMain,\n AlsoToPreloaded,\n SetPref,\n WebExtEvent\n};\n\n// These are helpers to test for certain kinds of actions\nthis.actionUtils = {\n isSendToMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;\n },\n isBroadcastToContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && !action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToOneContent(action) {\n if (!action.meta) {\n return false;\n }\n if (action.meta.to === CONTENT_MESSAGE_TYPE && action.meta.toTarget) {\n return true;\n }\n return false;\n },\n isSendToPreloaded(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.to === PRELOAD_MESSAGE_TYPE &&\n action.meta.from === MAIN_MESSAGE_TYPE;\n },\n isFromMain(action) {\n if (!action.meta) {\n return false;\n }\n return action.meta.from === MAIN_MESSAGE_TYPE &&\n action.meta.to === CONTENT_MESSAGE_TYPE;\n },\n getPortIdOfSender(action) {\n return (action.meta && action.meta.fromTarget) || null;\n },\n _RouteMessage\n};\n\nthis.EXPORTED_SYMBOLS = [\n \"actionTypes\",\n \"actionCreators\",\n \"actionUtils\",\n \"globalImportContext\",\n \"UI_CODE\",\n \"BACKGROUND_PROCESS\",\n \"MAIN_MESSAGE_TYPE\",\n \"CONTENT_MESSAGE_TYPE\",\n \"PRELOAD_MESSAGE_TYPE\"\n];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/Actions.jsm","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 1\n// module chunks = 0","module.exports = ReactIntl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"ReactIntl\"\n// module id = 2\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0","module.exports = ReactRedux;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"ReactRedux\"\n// module id = 4\n// module chunks = 0","export const TOP_SITES_SOURCE = \"TOP_SITES\";\nexport const TOP_SITES_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\",\n \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\", \"DeleteUrl\"];\n// minimum size necessary to show a rich icon instead of a screenshot\nexport const MIN_RICH_FAVICON_SIZE = 96;\n// minimum size necessary to show any icon in the top left corner with a screenshot\nexport const MIN_CORNER_FAVICON_SIZE = 16;\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSitesConstants.js","this.Dedupe = class Dedupe {\n constructor(createKey) {\n this.createKey = createKey || this.defaultCreateKey;\n }\n\n defaultCreateKey(item) {\n return item;\n }\n\n /**\n * Dedupe any number of grouped elements favoring those from earlier groups.\n *\n * @param {Array} groups Contains an arbitrary number of arrays of elements.\n * @returns {Array} A matching array of each provided group deduped.\n */\n group(...groups) {\n const globalKeys = new Set();\n const result = [];\n for (const values of groups) {\n const valueMap = new Map();\n for (const value of values) {\n const key = this.createKey(value);\n if (!globalKeys.has(key) && !valueMap.has(key)) {\n valueMap.set(key, value);\n }\n }\n result.push(valueMap);\n valueMap.forEach((value, key) => globalKeys.add(key));\n }\n return result.map(m => Array.from(m.values()));\n }\n};\n\nthis.EXPORTED_SYMBOLS = [\"Dedupe\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/Dedupe.jsm","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nconst {actionTypes: at} = ChromeUtils.import(\"resource://activity-stream/common/Actions.jsm\", {});\nconst {Dedupe} = ChromeUtils.import(\"resource://activity-stream/common/Dedupe.jsm\", {});\n\nconst TOP_SITES_DEFAULT_ROWS = 1;\nconst TOP_SITES_MAX_SITES_PER_ROW = 8;\n\nconst dedupe = new Dedupe(site => site && site.url);\n\nconst INITIAL_STATE = {\n App: {\n // Have we received real data from the app yet?\n initialized: false,\n // The version of the system-addon\n version: null\n },\n Snippets: {initialized: false},\n TopSites: {\n // Have we received real data from history yet?\n initialized: false,\n // The history (and possibly default) links\n rows: [],\n // Used in content only to dispatch action to TopSiteForm.\n editForm: null\n },\n Prefs: {\n initialized: false,\n values: {}\n },\n Dialog: {\n visible: false,\n data: {}\n },\n Sections: [],\n PreferencesPane: {visible: false}\n};\n\nfunction App(prevState = INITIAL_STATE.App, action) {\n switch (action.type) {\n case at.INIT:\n return Object.assign({}, prevState, action.data || {}, {initialized: true});\n default:\n return prevState;\n }\n}\n\n/**\n * insertPinned - Inserts pinned links in their specified slots\n *\n * @param {array} a list of links\n * @param {array} a list of pinned links\n * @return {array} resulting list of links with pinned links inserted\n */\nfunction insertPinned(links, pinned) {\n // Remove any pinned links\n const pinnedUrls = pinned.map(link => link && link.url);\n let newLinks = links.filter(link => (link ? !pinnedUrls.includes(link.url) : false));\n newLinks = newLinks.map(link => {\n if (link && link.isPinned) {\n delete link.isPinned;\n delete link.pinIndex;\n }\n return link;\n });\n\n // Then insert them in their specified location\n pinned.forEach((val, index) => {\n if (!val) { return; }\n let link = Object.assign({}, val, {isPinned: true, pinIndex: index});\n if (index > newLinks.length) {\n newLinks[index] = link;\n } else {\n newLinks.splice(index, 0, link);\n }\n });\n\n return newLinks;\n}\n\nfunction TopSites(prevState = INITIAL_STATE.TopSites, action) {\n let hasMatch;\n let newRows;\n switch (action.type) {\n case at.TOP_SITES_UPDATED:\n if (!action.data) {\n return prevState;\n }\n return Object.assign({}, prevState, {initialized: true, rows: action.data});\n case at.TOP_SITES_EDIT:\n return Object.assign({}, prevState, {editForm: {index: action.data.index}});\n case at.TOP_SITES_CANCEL_EDIT:\n return Object.assign({}, prevState, {editForm: null});\n case at.SCREENSHOT_UPDATED:\n newRows = prevState.rows.map(row => {\n if (row && row.url === action.data.url) {\n hasMatch = true;\n return Object.assign({}, row, {screenshot: action.data.screenshot});\n }\n return row;\n });\n return hasMatch ? Object.assign({}, prevState, {rows: newRows}) : prevState;\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, site, {bookmarkGuid, bookmarkTitle, bookmarkDateCreated: dateAdded});\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n newRows = prevState.rows.map(site => {\n if (site && site.url === action.data.url) {\n const newSite = Object.assign({}, site);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n return newSite;\n }\n return site;\n });\n return Object.assign({}, prevState, {rows: newRows});\n default:\n return prevState;\n }\n}\n\nfunction Dialog(prevState = INITIAL_STATE.Dialog, action) {\n switch (action.type) {\n case at.DIALOG_OPEN:\n return Object.assign({}, prevState, {visible: true, data: action.data});\n case at.DIALOG_CANCEL:\n return Object.assign({}, prevState, {visible: false});\n case at.DELETE_HISTORY_URL:\n return Object.assign({}, INITIAL_STATE.Dialog);\n default:\n return prevState;\n }\n}\n\nfunction Prefs(prevState = INITIAL_STATE.Prefs, action) {\n let newValues;\n switch (action.type) {\n case at.PREFS_INITIAL_VALUES:\n return Object.assign({}, prevState, {initialized: true, values: action.data});\n case at.PREF_CHANGED:\n newValues = Object.assign({}, prevState.values);\n newValues[action.data.name] = action.data.value;\n return Object.assign({}, prevState, {values: newValues});\n default:\n return prevState;\n }\n}\n\nfunction Sections(prevState = INITIAL_STATE.Sections, action) {\n let hasMatch;\n let newState;\n switch (action.type) {\n case at.SECTION_DEREGISTER:\n return prevState.filter(section => section.id !== action.data);\n case at.SECTION_REGISTER:\n // If section exists in prevState, update it\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n hasMatch = true;\n return Object.assign({}, section, action.data);\n }\n return section;\n });\n\n // Invariant: Sections array sorted in increasing order of property `order`.\n // If section doesn't exist in prevState, create a new section object. If\n // the section has an order, insert it at the correct place in the array.\n // Otherwise, prepend it and set the order to be minimal.\n if (!hasMatch) {\n const initialized = !!(action.data.rows && action.data.rows.length > 0);\n let order;\n let index;\n if (prevState.length > 0) {\n order = action.data.order !== undefined ? action.data.order : prevState[0].order - 1;\n index = newState.findIndex(section => section.order >= order);\n if (index === -1) {\n index = newState.length;\n }\n } else {\n order = action.data.order !== undefined ? action.data.order : 0;\n index = 0;\n }\n\n const section = Object.assign({title: \"\", rows: [], order, enabled: false}, action.data, {initialized});\n newState.splice(index, 0, section);\n }\n return newState;\n case at.SECTION_UPDATE:\n newState = prevState.map(section => {\n if (section && section.id === action.data.id) {\n // If the action is updating rows, we should consider initialized to be true.\n // This can be overridden if initialized is defined in the action.data\n const initialized = action.data.rows ? {initialized: true} : {};\n return Object.assign({}, section, initialized, action.data);\n }\n return section;\n });\n\n if (!action.data.dedupeConfigurations) {\n return newState;\n }\n\n action.data.dedupeConfigurations.forEach(dedupeConf => {\n newState = newState.map(section => {\n if (section.id === dedupeConf.id) {\n const dedupedRows = dedupeConf.dedupeFrom.reduce((rows, dedupeSectionId) => {\n const dedupeSection = newState.find(s => s.id === dedupeSectionId);\n const [, newRows] = dedupe.group(dedupeSection.rows, rows);\n return newRows;\n }, section.rows);\n\n return Object.assign({}, section, {rows: dedupedRows});\n }\n\n return section;\n });\n });\n\n return newState;\n case at.SECTION_UPDATE_CARD:\n return prevState.map(section => {\n if (section && section.id === action.data.id && section.rows) {\n const newRows = section.rows.map(card => {\n if (card.url === action.data.url) {\n return Object.assign({}, card, action.data.options);\n }\n return card;\n });\n return Object.assign({}, section, {rows: newRows});\n }\n return section;\n });\n case at.PLACES_BOOKMARK_ADDED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the item within the rows that is attempted to be bookmarked\n if (item.url === action.data.url) {\n const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n return Object.assign({}, item, {\n bookmarkGuid,\n bookmarkTitle,\n bookmarkDateCreated: dateAdded,\n type: \"bookmark\"\n });\n }\n return item;\n })\n }));\n case at.PLACES_BOOKMARK_REMOVED:\n if (!action.data) {\n return prevState;\n }\n return prevState.map(section => Object.assign({}, section, {\n rows: section.rows.map(item => {\n // find the bookmark within the rows that is attempted to be removed\n if (item.url === action.data.url) {\n const newSite = Object.assign({}, item);\n delete newSite.bookmarkGuid;\n delete newSite.bookmarkTitle;\n delete newSite.bookmarkDateCreated;\n if (!newSite.type || newSite.type === \"bookmark\") {\n newSite.type = \"history\";\n }\n return newSite;\n }\n return item;\n })\n }));\n case at.PLACES_LINKS_DELETED:\n return prevState.map(section => Object.assign({}, section,\n {rows: section.rows.filter(site => !action.data.includes(site.url))}));\n case at.PLACES_LINK_BLOCKED:\n return prevState.map(section =>\n Object.assign({}, section, {rows: section.rows.filter(site => site.url !== action.data.url)}));\n default:\n return prevState;\n }\n}\n\nfunction Snippets(prevState = INITIAL_STATE.Snippets, action) {\n switch (action.type) {\n case at.SNIPPETS_DATA:\n return Object.assign({}, prevState, {initialized: true}, action.data);\n case at.SNIPPETS_RESET:\n return INITIAL_STATE.Snippets;\n default:\n return prevState;\n }\n}\n\nfunction PreferencesPane(prevState = INITIAL_STATE.PreferencesPane, action) {\n switch (action.type) {\n case at.SETTINGS_OPEN:\n return Object.assign({}, prevState, {visible: true});\n case at.SETTINGS_CLOSE:\n return Object.assign({}, prevState, {visible: false});\n default:\n return prevState;\n }\n}\n\nthis.INITIAL_STATE = INITIAL_STATE;\nthis.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;\nthis.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;\n\nthis.reducers = {TopSites, App, Snippets, Prefs, Dialog, Sections, PreferencesPane};\nthis.insertPinned = insertPinned;\n\nthis.EXPORTED_SYMBOLS = [\"reducers\", \"INITIAL_STATE\", \"insertPinned\", \"TOP_SITES_DEFAULT_ROWS\", \"TOP_SITES_MAX_SITES_PER_ROW\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/Reducers.jsm","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class ErrorBoundaryFallback extends React.PureComponent {\n constructor(props) {\n super(props);\n this.windowObj = this.props.windowObj || window;\n this.onClick = this.onClick.bind(this);\n }\n\n /**\n * Since we only get here if part of the page has crashed, do a\n * forced reload to give us the best chance at recovering.\n */\n onClick() {\n this.windowObj.location.reload(true);\n }\n\n render() {\n const defaultClass = \"as-error-fallback\";\n let className;\n if (\"className\" in this.props) {\n className = `${this.props.className} ${defaultClass}`;\n } else {\n className = defaultClass;\n }\n\n // href=\"#\" to force normal link styling stuff (eg cursor on hover)\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\nErrorBoundaryFallback.defaultProps = {className: \"as-error-fallback\"};\n\nexport class ErrorBoundary extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {hasError: false};\n }\n\n componentDidCatch(error, info) {\n this.setState({hasError: true});\n }\n\n render() {\n if (!this.state.hasError) {\n return (this.props.children);\n }\n\n return ;\n }\n}\n\nErrorBoundary.defaultProps = {FallbackComponent: ErrorBoundaryFallback};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ErrorBoundary/ErrorBoundary.jsx","import React from \"react\";\n\nexport class ContextMenu extends React.PureComponent {\n constructor(props) {\n super(props);\n this.hideContext = this.hideContext.bind(this);\n }\n\n hideContext() {\n this.props.onUpdate(false);\n }\n\n componentWillMount() {\n this.hideContext();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.visible && !prevProps.visible) {\n setTimeout(() => {\n window.addEventListener(\"click\", this.hideContext);\n }, 0);\n }\n if (!this.props.visible && prevProps.visible) {\n window.removeEventListener(\"click\", this.hideContext);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.hideContext);\n }\n\n render() {\n return ();\n }\n}\n\nexport class ContextMenuItem extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n }\n\n onClick() {\n this.props.hideContext();\n this.props.option.onClick();\n }\n\n onKeyDown(event) {\n const {option} = this.props;\n switch (event.key) {\n case \"Tab\":\n // tab goes down in context menu, shift + tab goes up in context menu\n // if we're on the last item, one more tab will close the context menu\n // similarly, if we're on the first item, one more shift + tab will close it\n if ((event.shiftKey && option.first) || (!event.shiftKey && option.last)) {\n this.props.hideContext();\n }\n break;\n case \"Enter\":\n this.props.hideContext();\n option.onClick();\n break;\n }\n }\n\n render() {\n const {option} = this.props;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                  • \n \n {option.icon && }\n {option.label}\n \n
                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ContextMenu/ContextMenu.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * List of functions that return items that can be included as menu options in a\n * LinkMenu. All functions take the site as the first parameter, and optionally\n * the index of the site.\n */\nexport const LinkMenuOptions = {\n Separator: () => ({type: \"separator\"}),\n RemoveBookmark: site => ({\n id: \"menu_action_remove_bookmark\",\n icon: \"bookmark-added\",\n action: ac.AlsoToMain({\n type: at.DELETE_BOOKMARK_BY_ID,\n data: site.bookmarkGuid\n }),\n userEvent: \"BOOKMARK_DELETE\"\n }),\n AddBookmark: site => ({\n id: \"menu_action_bookmark\",\n icon: \"bookmark-hollow\",\n action: ac.AlsoToMain({\n type: at.BOOKMARK_URL,\n data: {url: site.url, title: site.title, type: site.type}\n }),\n userEvent: \"BOOKMARK_ADD\"\n }),\n OpenInNewWindow: site => ({\n id: \"menu_action_open_new_window\",\n icon: \"new-window\",\n action: ac.AlsoToMain({\n type: at.OPEN_NEW_WINDOW,\n data: {url: site.url, referrer: site.referrer}\n }),\n userEvent: \"OPEN_NEW_WINDOW\"\n }),\n OpenInPrivateWindow: site => ({\n id: \"menu_action_open_private_window\",\n icon: \"new-window-private\",\n action: ac.AlsoToMain({\n type: at.OPEN_PRIVATE_WINDOW,\n data: {url: site.url, referrer: site.referrer}\n }),\n userEvent: \"OPEN_PRIVATE_WINDOW\"\n }),\n BlockUrl: (site, index, eventSource) => ({\n id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.AlsoToMain({\n type: at.BLOCK_URL,\n data: site.url\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n block: 0,\n tiles: [{id: site.guid, pos: index}]\n }),\n userEvent: \"BLOCK\"\n }),\n\n // This is an option for web extentions which will result in remove items from\n // memory and notify the web extenion, rather than using the built-in block list.\n WebExtDismiss: (site, index, eventSource) => ({\n id: \"menu_action_webext_dismiss\",\n string_id: \"menu_action_dismiss\",\n icon: \"dismiss\",\n action: ac.WebExtEvent(at.WEBEXT_DISMISS, {\n source: eventSource,\n url: site.url,\n action_position: index\n })\n }),\n DeleteUrl: site => ({\n id: \"menu_action_delete\",\n icon: \"delete\",\n action: {\n type: at.DIALOG_OPEN,\n data: {\n onConfirm: [\n ac.AlsoToMain({type: at.DELETE_HISTORY_URL, data: {url: site.url, forceBlock: site.bookmarkGuid}}),\n ac.UserEvent({event: \"DELETE\"})\n ],\n body_string_id: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n confirm_button_string_id: \"menu_action_delete\",\n cancel_button_string_id: \"topsites_form_cancel_button\",\n icon: \"modal-delete\"\n }\n },\n userEvent: \"DIALOG_OPEN\"\n }),\n PinTopSite: (site, index) => ({\n id: \"menu_action_pin\",\n icon: \"pin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site: {url: site.url}, index}\n }),\n userEvent: \"PIN\"\n }),\n UnpinTopSite: site => ({\n id: \"menu_action_unpin\",\n icon: \"unpin\",\n action: ac.AlsoToMain({\n type: at.TOP_SITES_UNPIN,\n data: {site: {url: site.url}}\n }),\n userEvent: \"UNPIN\"\n }),\n SaveToPocket: (site, index, eventSource) => ({\n id: \"menu_action_save_to_pocket\",\n icon: \"pocket\",\n action: ac.AlsoToMain({\n type: at.SAVE_TO_POCKET,\n data: {site: {url: site.url, title: site.title}}\n }),\n impression: ac.ImpressionStats({\n source: eventSource,\n pocket: 0,\n tiles: [{id: site.guid, pos: index}]\n }),\n userEvent: \"SAVE_TO_POCKET\"\n }),\n EditTopSite: (site, index) => ({\n id: \"edit_topsites_button_text\",\n icon: \"edit\",\n action: {\n type: at.TOP_SITES_EDIT,\n data: {index}\n }\n }),\n CheckBookmark: site => (site.bookmarkGuid ? LinkMenuOptions.RemoveBookmark(site) : LinkMenuOptions.AddBookmark(site)),\n CheckPinTopSite: (site, index) => (site.isPinned ? LinkMenuOptions.UnpinTopSite(site) : LinkMenuOptions.PinTopSite(site, index))\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/link-menu-options.js","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport {LinkMenuOptions} from \"content-src/lib/link-menu-options\";\nimport React from \"react\";\n\nconst DEFAULT_SITE_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\", \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\"];\n\nexport class _LinkMenu extends React.PureComponent {\n getOptions() {\n const {props} = this;\n const {site, index, source} = props;\n\n // Handle special case of default site\n const propOptions = !site.isDefault ? props.options : DEFAULT_SITE_MENU_OPTIONS;\n\n const options = propOptions.map(o => LinkMenuOptions[o](site, index, source)).map(option => {\n const {action, impression, id, string_id, type, userEvent} = option;\n if (!type && id) {\n option.label = props.intl.formatMessage({id: string_id || id});\n option.onClick = () => {\n props.dispatch(action);\n if (userEvent) {\n props.dispatch(ac.UserEvent({\n event: userEvent,\n source,\n action_position: index\n }));\n }\n if (impression && props.shouldSendImpressionStats) {\n props.dispatch(impression);\n }\n };\n }\n return option;\n });\n\n // This is for accessibility to support making each item tabbable.\n // We want to know which item is the first and which item\n // is the last, so we can close the context menu accordingly.\n options[0].first = true;\n options[options.length - 1].last = true;\n return options;\n }\n\n render() {\n return ();\n }\n}\n\nexport const LinkMenu = injectIntl(_LinkMenu);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/LinkMenu/LinkMenu.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport React from \"react\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\nfunction getCollapsed(props) {\n return (props.prefName in props.Prefs.values) ? props.Prefs.values[props.prefName] : false;\n}\n\nexport class Info extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onInfoEnter = this.onInfoEnter.bind(this);\n this.onInfoLeave = this.onInfoLeave.bind(this);\n this.onManageClick = this.onManageClick.bind(this);\n this.state = {infoActive: false};\n }\n\n /**\n * Take a truthy value to conditionally change the infoActive state.\n */\n _setInfoState(nextActive) {\n const infoActive = !!nextActive;\n if (infoActive !== this.state.infoActive) {\n this.setState({infoActive});\n }\n }\n\n onInfoEnter() {\n // We're getting focus or hover, so info state should be true if not yet.\n this._setInfoState(true);\n }\n\n onInfoLeave(event) {\n // We currently have an active (true) info state, so keep it true only if we\n // have a related event target that is contained \"within\" the current target\n // (section-info-option) as itself or a descendant. Set to false otherwise.\n this._setInfoState(event && event.relatedTarget && (\n event.relatedTarget === event.currentTarget ||\n (event.relatedTarget.compareDocumentPosition(event.currentTarget) &\n Node.DOCUMENT_POSITION_CONTAINS)));\n }\n\n onManageClick() {\n this.props.dispatch({type: at.SETTINGS_OPEN});\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n\n render() {\n const {infoOption, intl} = this.props;\n const infoOptionIconA11yAttrs = {\n \"aria-haspopup\": \"true\",\n \"aria-controls\": \"info-option\",\n \"aria-expanded\": this.state.infoActive ? \"true\" : \"false\",\n \"role\": \"note\",\n \"tabIndex\": 0\n };\n const sectionInfoTitle = intl.formatMessage({id: \"section_info_option\"});\n\n return (\n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {infoOption.header &&\n
                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(infoOption.header)}\n
                                                                                                                                                                                                                                                                                                                                                                                    }\n

                                                                                                                                                                                                                                                                                                                                                                                    \n {infoOption.body && getFormattedMessage(infoOption.body)}\n {infoOption.link &&\n \n {getFormattedMessage(infoOption.link.title || infoOption.link)}\n \n }\n

                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nexport const InfoIntl = injectIntl(Info);\n\nexport class Disclaimer extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onAcknowledge = this.onAcknowledge.bind(this);\n }\n\n onAcknowledge() {\n this.props.dispatch(ac.SetPref(this.props.disclaimerPref, false));\n this.props.dispatch(ac.UserEvent({event: \"SECTION_DISCLAIMER_ACKNOWLEDGED\", source: this.props.eventSource}));\n }\n\n render() {\n const {disclaimer} = this.props;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(disclaimer.text)}\n {disclaimer.link &&\n \n {getFormattedMessage(disclaimer.link.title || disclaimer.link)}\n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n\n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nexport const DisclaimerIntl = injectIntl(Disclaimer);\n\nexport class _CollapsibleSection extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBodyMount = this.onBodyMount.bind(this);\n this.onInfoEnter = this.onInfoEnter.bind(this);\n this.onInfoLeave = this.onInfoLeave.bind(this);\n this.onHeaderClick = this.onHeaderClick.bind(this);\n this.onTransitionEnd = this.onTransitionEnd.bind(this);\n this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n this.state = {enableAnimation: true, isAnimating: false, infoActive: false};\n }\n\n componentWillMount() {\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n componentWillUpdate(nextProps) {\n // Check if we're about to go from expanded to collapsed\n if (!getCollapsed(this.props) && getCollapsed(nextProps)) {\n // This next line forces a layout flush of the section body, which has a\n // max-height style set, so that the upcoming collapse animation can\n // animate from that height to the collapsed height. Without this, the\n // update is coalesced and there's no animation from no-max-height to 0.\n this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n }\n }\n\n componentWillUnmount() {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n enableOrDisableAnimation() {\n // Only animate the collapse/expand for visible tabs.\n const visible = this.props.document.visibilityState === VISIBLE;\n if (this.state.enableAnimation !== visible) {\n this.setState({enableAnimation: visible});\n }\n }\n\n _setInfoState(nextActive) {\n // Take a truthy value to conditionally change the infoActive state.\n const infoActive = !!nextActive;\n if (infoActive !== this.state.infoActive) {\n this.setState({infoActive});\n }\n }\n\n onBodyMount(node) {\n this.sectionBody = node;\n }\n\n onInfoEnter() {\n // We're getting focus or hover, so info state should be true if not yet.\n this._setInfoState(true);\n }\n\n onInfoLeave(event) {\n // We currently have an active (true) info state, so keep it true only if we\n // have a related event target that is contained \"within\" the current target\n // (section-info-option) as itself or a descendant. Set to false otherwise.\n this._setInfoState(event && event.relatedTarget && (\n event.relatedTarget === event.currentTarget ||\n (event.relatedTarget.compareDocumentPosition(event.currentTarget) &\n Node.DOCUMENT_POSITION_CONTAINS)));\n }\n\n onHeaderClick() {\n // If this.sectionBody is unset, it means that we're in some sort of error\n // state, probably displaying the error fallback, so we won't be able to\n // compute the height, and we don't want to persist the preference.\n if (!this.sectionBody) {\n return;\n }\n\n // Get the current height of the body so max-height transitions can work\n this.setState({\n isAnimating: true,\n maxHeight: `${this.sectionBody.scrollHeight}px`\n });\n this.props.dispatch(ac.SetPref(this.props.prefName, !getCollapsed(this.props)));\n }\n\n onTransitionEnd(event) {\n // Only update the animating state for our own transition (not a child's)\n if (event.target === event.currentTarget) {\n this.setState({isAnimating: false});\n }\n }\n\n renderIcon() {\n const {icon} = this.props;\n if (icon && icon.startsWith(\"moz-extension://\")) {\n return ;\n }\n return ;\n }\n\n render() {\n const isCollapsible = this.props.prefName in this.props.Prefs.values;\n const isCollapsed = getCollapsed(this.props);\n const {enableAnimation, isAnimating, maxHeight} = this.state;\n const {id, infoOption, eventSource, disclaimer} = this.props;\n const disclaimerPref = `section.${id}.showDisclaimer`;\n const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref];\n\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                    \n \n {this.renderIcon()}\n {this.props.title}\n {isCollapsible && }\n \n

                                                                                                                                                                                                                                                                                                                                                                                    \n {infoOption && }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n {needsDisclaimer && }\n {this.props.children}\n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\n_CollapsibleSection.defaultProps = {\n document: global.document || {\n addEventListener: () => {},\n removeEventListener: () => {},\n visibilityState: \"hidden\"\n },\n Prefs: {values: {}}\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n constructor(props) {\n super(props);\n // Just for test dependency injection:\n this.perfSvc = this.props.perfSvc || perfSvc;\n\n this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n this._reportMissingData = false;\n this._timestampHandled = false;\n this._recordedFirstRender = false;\n }\n\n componentDidMount() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n componentDidUpdate() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n /**\n * Call the given callback after the upcoming frame paints.\n *\n * @note Both setTimeout and requestAnimationFrame are throttled when the page\n * is hidden, so this callback may get called up to a second or so after the\n * requestAnimationFrame \"paint\" for hidden tabs.\n *\n * Newtabs hidden while loading will presumably be fairly rare (other than\n * preloaded tabs, which we will be filtering out on the server side), so such\n * cases should get lost in the noise.\n *\n * If we decide that it's important to find out when something that's hidden\n * has \"painted\", however, another option is to post a message to this window.\n * That should happen even faster than setTimeout, and, at least as of this\n * writing, it's not throttled in hidden windows in Firefox.\n *\n * @param {Function} callback\n *\n * @returns void\n */\n _afterFramePaint(callback) {\n requestAnimationFrame(() => setTimeout(callback, 0));\n }\n\n _maybeSendBadStateEvent() {\n // Follow up bugs:\n // https://github.com/mozilla/activity-stream/issues/3691\n if (!this.props.initialized) {\n // Remember to report back when data is available.\n this._reportMissingData = true;\n } else if (this._reportMissingData) {\n this._reportMissingData = false;\n // Report how long it took for component to become initialized.\n this._sendBadStateEvent();\n }\n }\n\n _maybeSendPaintedEvent() {\n // If we've already handled a timestamp, don't do it again.\n if (this._timestampHandled || !this.props.initialized) {\n return;\n }\n\n // And if we haven't, we're doing so now, so remember that. Even if\n // something goes wrong in the callback, we can't try again, as we'd be\n // sending back the wrong data, and we have to do it here, so that other\n // calls to this method while waiting for the next frame won't also try to\n // handle it.\n this._timestampHandled = true;\n this._afterFramePaint(this._sendPaintedEvent);\n }\n\n /**\n * Triggered by call to render. Only first call goes through due to\n * `_recordedFirstRender`.\n */\n _ensureFirstRenderTsRecorded() {\n // Used as t0 for recording how long component took to initialize.\n if (!this._recordedFirstRender) {\n this._recordedFirstRender = true;\n // topsites_first_render_ts, highlights_first_render_ts.\n const key = `${this.props.id}_first_render_ts`;\n this.perfSvc.mark(key);\n }\n }\n\n /**\n * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n * of how much longer the data took to be ready for display than it would\n * have been the ideal case.\n * https://github.com/mozilla/ping-centre/issues/98\n */\n _sendBadStateEvent() {\n // highlights_data_ready_ts, topsites_data_ready_ts.\n const dataReadyKey = `${this.props.id}_data_ready_ts`;\n this.perfSvc.mark(dataReadyKey);\n\n try {\n const firstRenderKey = `${this.props.id}_first_render_ts`;\n // value has to be Int32.\n const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n // highlights_data_late_by_ms, topsites_data_late_by_ms.\n data: {[`${this.props.id}_data_late_by_ms`]: value}\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true.\n }\n }\n\n _sendPaintedEvent() {\n // Record first_painted event but only send if topsites.\n if (this.props.id !== \"topsites\") {\n return;\n }\n\n // topsites_first_painted_ts.\n const key = `${this.props.id}_first_painted_ts`;\n this.perfSvc.mark(key);\n\n try {\n const data = {};\n data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up, and should continue\n // to set this._timestampHandled to avoid going through this again.\n }\n }\n\n render() {\n if (RECORDED_SECTIONS.includes(this.props.id)) {\n this._ensureFirstRenderTsRecorded();\n this._maybeSendBadStateEvent();\n }\n return this.props.children;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n // Borrow the high-resolution timer from the hidden window....\n usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n // we must be running in content space\n // eslint-disable-next-line no-undef\n usablePerfObj = performance;\n} else {\n // This is a dummy object so this file doesn't crash in the node prerendering\n // task.\n usablePerfObj = {\n now() {},\n mark() {}\n };\n}\n\nthis._PerfService = function _PerfService(options) {\n // For testing, so that we can use a fake Window.performance object with\n // known state.\n if (options && options.performanceObj) {\n this._perf = options.performanceObj;\n } else {\n this._perf = usablePerfObj;\n }\n};\n\n_PerfService.prototype = {\n /**\n * Calls the underlying mark() method on the appropriate Window.performance\n * object to add a mark with the given name to the appropriate performance\n * timeline.\n *\n * @param {String} name the name to give the current mark\n * @return {void}\n */\n mark: function mark(str) {\n this._perf.mark(str);\n },\n\n /**\n * Calls the underlying getEntriesByName on the appropriate Window.performance\n * object.\n *\n * @param {String} name\n * @param {String} type eg \"mark\"\n * @return {Array} Performance* objects\n */\n getEntriesByName: function getEntriesByName(name, type) {\n return this._perf.getEntriesByName(name, type);\n },\n\n /**\n * The timeOrigin property from the appropriate performance object.\n * Used to ensure that timestamps from the add-on code and the content code\n * are comparable.\n *\n * @note If this is called from a context without a window\n * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n * window, which appears to be the first created window (and thus\n * timeOrigin) in the browser. Note also, however, there is also a private\n * hidden window, presumably for private browsing, which appears to be\n * created dynamically later. Exactly how/when that shows up needs to be\n * investigated.\n *\n * @return {Number} A double of milliseconds with a precision of 0.5us.\n */\n get timeOrigin() {\n return this._perf.timeOrigin;\n },\n\n /**\n * Returns the \"absolute\" version of performance.now(), i.e. one that\n * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n * be comparable across both chrome and content.\n *\n * @return {Number}\n */\n absNow: function absNow() {\n return this.timeOrigin + this._perf.now();\n },\n\n /**\n * This returns the absolute startTime from the most recent performance.mark()\n * with the given name.\n *\n * @param {String} name the name to lookup the start time for\n *\n * @return {Number} the returned start time, as a DOMHighResTimeStamp\n *\n * @throws {Error} \"No Marks with the name ...\" if none are available\n *\n * @note Always surround calls to this by try/catch. Otherwise your code\n * may fail when the `privacy.resistFingerprinting` pref is true. When\n * this pref is set, all attempts to get marks will likely fail, which will\n * cause this method to throw.\n *\n * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n * for more info.\n */\n getMostRecentAbsMarkStartByName(name) {\n let entries = this.getEntriesByName(name, \"mark\");\n\n if (!entries.length) {\n throw new Error(`No marks with the name ${name}`);\n }\n\n let mostRecentEntry = entries[entries.length - 1];\n return this._perf.timeOrigin + mostRecentEntry.startTime;\n }\n};\n\nthis.perfService = new _PerfService();\nthis.EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/PerfService.jsm","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(\n \n, document.getElementById(\"root\"));\n\naddSnippetsSubscriber(store);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/activity-stream.jsx","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n * the same interface as a Map, but is optionally backed by\n * indexedDB for persistent storage.\n * Call .connect() to open a database connection and restore any\n * previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n constructor(dispatch) {\n super();\n this._db = null;\n this._dispatch = dispatch;\n }\n\n set(key, value) {\n super.set(key, value);\n return this._dbTransaction(db => db.put(value, key));\n }\n\n delete(key) {\n super.delete(key);\n return this._dbTransaction(db => db.delete(key));\n }\n\n clear() {\n super.clear();\n return this._dbTransaction(db => db.clear());\n }\n\n get blockList() {\n return this.get(\"blockList\") || [];\n }\n\n /**\n * blockSnippetById - Blocks a snippet given an id\n *\n * @param {str|int} id The id of the snippet\n * @return {Promise} Resolves when the id has been written to indexedDB,\n * or immediately if the snippetMap is not connected\n */\n async blockSnippetById(id) {\n if (!id) {\n return;\n }\n const {blockList} = this;\n if (!blockList.includes(id)) {\n blockList.push(id);\n this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: blockList}));\n await this.set(\"blockList\", blockList);\n }\n }\n\n disableOnboarding() {\n this._dispatch(ac.AlsoToMain({type: at.DISABLE_ONBOARDING}));\n }\n\n showFirefoxAccounts() {\n this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n }\n\n /**\n * connect - Attaches an indexedDB back-end to the Map so that any set values\n * are also cached in a store. It also restores any existing values\n * that are already stored in the indexedDB store.\n *\n * @return {type} description\n */\n async connect() {\n // Open the connection\n const db = await this._openDB();\n\n // Restore any existing values\n await this._restoreFromDb(db);\n\n // Attach a reference to the db\n this._db = db;\n }\n\n /**\n * _dbTransaction - Returns a db transaction wrapped with the given modifier\n * function as a Promise. If the db has not been connected,\n * it resolves immediately.\n *\n * @param {func} modifier A function to call with the transaction\n * @return {obj} A Promise that resolves when the transaction has\n * completed or errored\n */\n _dbTransaction(modifier) {\n if (!this._db) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const transaction = modifier(\n this._db\n .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n );\n transaction.onsuccess = event => resolve();\n\n /* istanbul ignore next */\n transaction.onerror = event => reject(transaction.error);\n });\n }\n\n _openDB() {\n return new Promise((resolve, reject) => {\n const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n /* istanbul ignore next */\n openRequest.onerror = event => {\n // Try to delete the old database so that we can start this process over\n // next time.\n indexedDB.deleteDatabase(DATABASE_NAME);\n reject(event);\n };\n\n openRequest.onupgradeneeded = event => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n }\n };\n\n openRequest.onsuccess = event => {\n let db = event.target.result;\n\n /* istanbul ignore next */\n db.onerror = err => console.error(err); // eslint-disable-line no-console\n /* istanbul ignore next */\n db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n resolve(db);\n };\n });\n }\n\n _restoreFromDb(db) {\n return new Promise((resolve, reject) => {\n let cursorRequest;\n try {\n cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n } catch (err) {\n // istanbul ignore next\n reject(err);\n // istanbul ignore next\n return;\n }\n\n /* istanbul ignore next */\n cursorRequest.onerror = event => reject(event);\n\n cursorRequest.onsuccess = event => {\n let cursor = event.target.result;\n // Populate the cache from the persistent storage.\n if (cursor) {\n this.set(cursor.key, cursor.value);\n cursor.continue();\n } else {\n // We are done.\n resolve();\n }\n };\n });\n }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n * remote location, or else default snippets if the remote\n * snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n constructor(dispatch) {\n // Initialize the Snippets Map and attaches it to a global so that\n // the snippet payload can interact with it.\n global.gSnippetsMap = new SnippetsMap(dispatch);\n this._onAction = this._onAction.bind(this);\n }\n\n get snippetsMap() {\n return global.gSnippetsMap;\n }\n\n async _refreshSnippets() {\n // Check if the cached version of of the snippets in snippetsMap. If it's too\n // old, blow away the entire snippetsMap.\n const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n if (cachedVersion !== this.appData.version) {\n this.snippetsMap.clear();\n }\n\n // Has enough time passed for us to require an update?\n const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n if (needsUpdate && this.appData.snippetsURL) {\n this.snippetsMap.set(\"snippets-last-update\", Date.now());\n try {\n const response = await fetch(this.appData.snippetsURL);\n if (response.status === 200) {\n const payload = await response.text();\n\n this.snippetsMap.set(\"snippets\", payload);\n this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n _noSnippetFallback() {\n // TODO\n }\n\n _forceOnboardingVisibility(shouldBeVisible) {\n const onboardingEl = document.getElementById(\"onboarding-notification-bar\");\n\n if (onboardingEl) {\n onboardingEl.style.display = shouldBeVisible ? \"\" : \"none\";\n }\n }\n\n _showRemoteSnippets() {\n const snippetsEl = document.getElementById(this.elementId);\n const payload = this.snippetsMap.get(\"snippets\");\n\n if (!snippetsEl) {\n throw new Error(`No element was found with id '${this.elementId}'.`);\n }\n\n // This could happen if fetching failed\n if (!payload) {\n throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n }\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Snippet payload was incorrectly formatted\");\n }\n\n // Note that injecting snippets can throw if they're invalid XML.\n // eslint-disable-next-line no-unsanitized/property\n snippetsEl.innerHTML = payload;\n\n // Scripts injected by innerHTML are inactive, so we have to relocate them\n // through DOM manipulation to activate their contents.\n for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n const relocatedScript = document.createElement(\"script\");\n relocatedScript.text = scriptEl.text;\n scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n }\n }\n\n _onAction(msg) {\n if (msg.data.type === at.SNIPPET_BLOCKED) {\n this.snippetsMap.set(\"blockList\", msg.data.data);\n document.getElementById(\"snippets-container\").style.display = \"none\";\n }\n }\n\n /**\n * init - Fetch the snippet payload and show snippets\n *\n * @param {obj} options\n * @param {str} options.appData.snippetsURL The URL from which we fetch snippets\n * @param {int} options.appData.version The current snippets version\n * @param {str} options.elementId The id of the element in which to inject snippets\n * @param {bool} options.connect Should gSnippetsMap connect to indexedDB?\n */\n async init(options) {\n Object.assign(this, {\n appData: {},\n elementId: \"snippets\",\n connect: true\n }, options);\n\n // Add listener so we know when snippets are blocked on other pages\n if (global.addMessageListener) {\n global.addMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n\n // TODO: Requires enabling indexedDB on newtab\n // Restore the snippets map from indexedDB\n if (this.connect) {\n try {\n await this.snippetsMap.connect();\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n\n // Cache app data values so they can be accessible from gSnippetsMap\n for (const key of Object.keys(this.appData)) {\n this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n }\n\n // Refresh snippets, if enough time has passed.\n await this._refreshSnippets();\n\n // Try showing remote snippets, falling back to defaults if necessary.\n try {\n this._showRemoteSnippets();\n } catch (e) {\n this._noSnippetFallback(e);\n }\n\n window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n this._forceOnboardingVisibility(true);\n this.initialized = true;\n }\n\n uninit() {\n window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n this._forceOnboardingVisibility(false);\n if (global.removeMessageListener) {\n global.removeMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n this.initialized = false;\n }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n * when the store has received the appropriate\n * Snippet data.\n *\n * @param {obj} store The redux store\n * @return {obj} Returns the snippets instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n const snippets = new SnippetsProvider(store.dispatch);\n\n let initializing = false;\n\n store.subscribe(async () => {\n const state = store.getState();\n // state.Prefs.values[\"feeds.snippets\"]: Should snippets be shown?\n // state.Snippets.initialized Is the snippets data initialized?\n // snippets.initialized: Is SnippetsProvider currently initialised?\n if (state.Prefs.values[\"feeds.snippets\"] &&\n !state.Prefs.values.disableSnippets &&\n state.Snippets.initialized &&\n !snippets.initialized &&\n // Don't call init multiple times\n !initializing\n ) {\n initializing = true;\n await snippets.init({appData: state.Snippets});\n initializing = false;\n } else if (\n (state.Prefs.values[\"feeds.snippets\"] === false ||\n state.Prefs.values.disableSnippets === true) &&\n snippets.initialized\n ) {\n snippets.uninit();\n }\n });\n\n // These values are returned for testing purposes\n return snippets;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/snippets.js","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n * // Any sort of data needed to be passed around by actions.\n * payload: site.url,\n * // Primary button AlsoToMain action.\n * action: \"DELETE_HISTORY_URL\",\n * // Primary button USerEvent action.\n * userEvent: \"DELETE\",\n * // Array of locale ids to display.\n * message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n * // Text for primary button.\n * confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n constructor(props) {\n super(props);\n this._handleCancelBtn = this._handleCancelBtn.bind(this);\n this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n }\n\n _handleCancelBtn() {\n this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL}));\n }\n\n _handleConfirmBtn() {\n this.props.data.onConfirm.forEach(this.props.dispatch);\n }\n\n _renderModalMessage() {\n const message_body = this.props.data.body_string_id;\n\n if (!message_body) {\n return null;\n }\n\n return (\n {message_body.map(msg =>

                                                                                                                                                                                                                                                                                                                                                                                    )}\n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n\n render() {\n if (!this.props.visible) {\n return null;\n }\n\n return (
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {this.props.data.icon && }\n {this._renderModalMessage()}\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ConfirmDialog/ConfirmDialog.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1. User clicks \"No Thanks\"\n * 2. User completed the data import\n * 3. After 3 active days\n * 4. User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onLaunchTour = this.onLaunchTour.bind(this);\n this.onCancelTour = this.onCancelTour.bind(this);\n }\n\n onLaunchTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n }\n\n onCancelTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n }\n\n render() {\n return (
                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n

                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ManualMigration/ManualMigration.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nconst getFormattedMessage = message =>\n (typeof message === \"string\" ? {message} : );\n\nexport const PreferencesInput = props => (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n {props.descString &&

                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(props.descString)}\n

                                                                                                                                                                                                                                                                                                                                                                                    }\n {React.Children.map(props.children,\n child =>
                                                                                                                                                                                                                                                                                                                                                                                    {child}
                                                                                                                                                                                                                                                                                                                                                                                    )}\n
                                                                                                                                                                                                                                                                                                                                                                                    \n);\n\nexport class _PreferencesPane extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handlePrefChange = this.handlePrefChange.bind(this);\n this.handleSectionChange = this.handleSectionChange.bind(this);\n this.togglePane = this.togglePane.bind(this);\n this.onWrapperMount = this.onWrapperMount.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.PreferencesPane.visible !== this.props.PreferencesPane.visible) {\n // While the sidebar is open, listen for all document clicks.\n if (this.isSidebarOpen()) {\n document.addEventListener(\"click\", this.handleClickOutside);\n } else {\n document.removeEventListener(\"click\", this.handleClickOutside);\n }\n }\n }\n\n isSidebarOpen() {\n return this.props.PreferencesPane.visible;\n }\n\n handleClickOutside(event) {\n // if we are showing the sidebar and there is a click outside, close it.\n if (this.isSidebarOpen() && !this.wrapper.contains(event.target)) {\n this.togglePane();\n }\n }\n\n handlePrefChange({target: {name, checked}}) {\n let value = checked;\n if (name === \"topSitesRows\") {\n value = checked ? 2 : 1;\n }\n this.props.dispatch(ac.SetPref(name, value));\n }\n\n handleSectionChange({target}) {\n const id = target.name;\n const type = target.checked ? at.SECTION_ENABLE : at.SECTION_DISABLE;\n this.props.dispatch(ac.AlsoToMain({type, data: id}));\n }\n\n togglePane() {\n if (this.isSidebarOpen()) {\n this.props.dispatch({type: at.SETTINGS_CLOSE});\n this.props.dispatch(ac.UserEvent({event: \"CLOSE_NEWTAB_PREFS\"}));\n } else {\n this.props.dispatch({type: at.SETTINGS_OPEN});\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n }\n\n onWrapperMount(wrapper) {\n this.wrapper = wrapper;\n }\n\n render() {\n const {props} = this;\n const prefs = props.Prefs.values;\n const sections = props.Sections;\n const isVisible = this.isSidebarOpen();\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                    \n\n \n\n
                                                                                                                                                                                                                                                                                                                                                                                    \n\n \n\n \n \n\n {sections\n .filter(section => !section.shouldHidePref)\n .map(({id, title, enabled, pref}) =>\n (\n\n {pref && pref.nestedPrefs && pref.nestedPrefs.map(nestedPref =>\n ()\n )}\n )\n )}\n {!prefs.disableSnippets &&
                                                                                                                                                                                                                                                                                                                                                                                    }\n\n {!prefs.disableSnippets && }\n\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const PreferencesPane = connect(state => ({\n Prefs: state.Prefs,\n PreferencesPane: state.PreferencesPane,\n Sections: state.Sections\n}))(injectIntl(_PreferencesPane));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/PreferencesPane/PreferencesPane.jsx","class _PrerenderData {\n constructor(options) {\n this.initialPrefs = options.initialPrefs;\n this.initialSections = options.initialSections;\n this._setValidation(options.validation);\n }\n\n get validation() {\n return this._validation;\n }\n\n set validation(value) {\n this._setValidation(value);\n }\n\n get invalidatingPrefs() {\n return this._invalidatingPrefs;\n }\n\n // This is needed so we can use it in the constructor\n _setValidation(value = []) {\n this._validation = value;\n this._invalidatingPrefs = value.reduce((result, next) => {\n if (typeof next === \"string\") {\n result.push(next);\n return result;\n } else if (next && next.oneOf) {\n return result.concat(next.oneOf);\n }\n throw new Error(\"Your validation configuration is not properly configured\");\n }, []);\n }\n\n arePrefsValid(getPref) {\n for (const prefs of this.validation) {\n // {oneOf: [\"foo\", \"bar\"]}\n if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n return false;\n\n // \"foo\"\n } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n return false;\n }\n }\n return true;\n }\n}\n\nthis.PrerenderData = new _PrerenderData({\n initialPrefs: {\n \"migrationExpired\": true,\n \"showTopSites\": true,\n \"showSearch\": true,\n \"topSitesRows\": 2,\n \"collapseTopSites\": false,\n \"section.highlights.collapsed\": false,\n \"section.topstories.collapsed\": false,\n \"feeds.section.topstories\": true,\n \"feeds.section.highlights\": true\n },\n // Prefs listed as invalidating will prevent the prerendered version\n // of AS from being used if their value is something other than what is listed\n // here. This is required because some preferences cause the page layout to be\n // too different for the prerendered version to be used. Unfortunately, this\n // will result in users who have modified some of their preferences not being\n // able to get the benefits of prerendering.\n validation: [\n \"showTopSites\",\n \"showSearch\",\n \"topSitesRows\",\n \"collapseTopSites\",\n \"section.highlights.collapsed\",\n \"section.topstories.collapsed\",\n // This means if either of these are set to their default values,\n // prerendering can be used.\n {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]}\n ],\n initialSections: [\n {\n enabled: true,\n icon: \"pocket\",\n id: \"topstories\",\n order: 1,\n title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}}\n },\n {\n enabled: true,\n id: \"highlights\",\n icon: \"highlights\",\n order: 2,\n title: {id: \"header_highlights\"}\n }\n ]\n});\n\nthis._PrerenderData = _PrerenderData;\nthis.EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/PrerenderData.jsm","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onInputMount = this.onInputMount.bind(this);\n }\n\n handleEvent(event) {\n // Also track search events with our own telemetry\n if (event.detail.type === \"Search\") {\n this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n }\n }\n\n onClick(event) {\n window.gContentSearchController.search(event);\n }\n\n componentWillUnmount() {\n delete window.gContentSearchController;\n }\n\n onInputMount(input) {\n if (input) {\n // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n // can add the appropriate telemetry probes for search. Without the correct\n // name, certain tests like browser_UsageTelemetry_content.js will fail\n // (See github ticket #2348 for more details)\n const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n // the search data and acts as context for the search request (See\n // nsISearchEngine.getSubmission). It is necessary so that search engine\n // plugins can correctly atribute referrals. (See github ticket #3321 for\n // more details)\n const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n // gContentSearchController needs to exist as a global so that tests for\n // the existing about:home can find it; and so it allows these tests to pass.\n // In the future, when activity stream is default about:home, this can be renamed\n window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n healthReportKey, searchSource);\n addEventListener(\"ContentSearchClient\", this);\n } else {\n window.gContentSearchController = null;\n removeEventListener(\"ContentSearchClient\", this);\n }\n }\n\n /*\n * Do not change the ID on the input field, as legacy newtab code\n * specifically looks for the id 'newtab-search-text' on input fields\n * in order to execute searches in various tests\n */\n render() {\n return (
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Search/Search.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, IntlProvider} from \"react-intl\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PreferencesPane} from \"content-src/components/PreferencesPane/PreferencesPane\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\nexport class _Base extends React.PureComponent {\n componentWillMount() {\n const {App, locale} = this.props;\n this.sendNewTabRehydrated(App);\n addLocaleDataForReactIntl(locale);\n }\n\n componentDidMount() {\n // Request state AFTER the first render to ensure we don't cause the\n // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n // dispatched right after the store is ready.\n if (this.props.isPrerendered) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n }\n }\n\n componentWillUpdate({App}) {\n this.sendNewTabRehydrated(App);\n }\n\n // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n // data has been consumed e.g. for counting the number of tabs that\n // have rendered that data.\n sendNewTabRehydrated(App) {\n if (App && App.initialized && !this.renderNotified) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n this.renderNotified = true;\n }\n }\n\n render() {\n const {props} = this;\n const {App, locale, strings} = props;\n const {initialized} = App;\n\n if (!props.isPrerendered && !initialized) {\n return null;\n }\n\n return (\n \n \n \n );\n }\n}\n\nexport class BaseContent extends React.PureComponent {\n render() {\n const {props} = this;\n const {App} = props;\n const {initialized} = App;\n const prefs = props.Prefs.values;\n\n const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n\n const outerClassName = `outer-wrapper${shouldBeFixedToTop ? \" fixed-to-top\" : \"\"} ${prefs.enableWideLayout ? \"wide-layout-enabled\" : \"wide-layout-disabled\"}`;\n\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {prefs.showSearch &&\n \n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n {!prefs.migrationExpired && }\n {prefs.showTopSites && }\n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {initialized &&\n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n }\n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs}))(_Base);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Base/Base.jsx","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/constants.js","import {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW = 3;\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class Section extends React.PureComponent {\n _dispatchImpressionStats() {\n const {props} = this;\n const maxCards = 3 * props.maxRows;\n const cards = props.rows.slice(0, maxCards);\n\n if (this.needsImpressionStats(cards)) {\n props.dispatch(ac.ImpressionStats({\n source: props.eventSource,\n tiles: cards.map(link => ({id: link.guid}))\n }));\n this.impressionCardGuids = cards.map(link => link.guid);\n }\n }\n\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionStatsOrAddListener() {\n const {props} = this;\n\n if (!props.shouldSendImpressionStats || !props.dispatch) {\n return;\n }\n\n if (props.document.visibilityState === VISIBLE) {\n this._dispatchImpressionStats();\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becoems visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (props.document.visibilityState === VISIBLE) {\n const {id, Prefs} = this.props;\n const isCollapsed = Prefs.values[`section.${id}.collapsed`];\n if (!isCollapsed) {\n this._dispatchImpressionStats();\n }\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentDidMount() {\n const {id, rows, Prefs} = this.props;\n const isCollapsed = Prefs.values[`section.${id}.collapsed`];\n if (rows.length && !isCollapsed) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {props} = this;\n const {id, Prefs} = props;\n const isCollapsedPref = `section.${id}.collapsed`;\n const isCollapsed = Prefs.values[isCollapsedPref];\n const wasCollapsed = prevProps.Prefs.values[isCollapsedPref];\n if (\n // Don't send impression stats for the empty state\n props.rows.length &&\n (\n // We only want to send impression stats if the content of the cards has changed\n // and the section is not collapsed...\n (props.rows !== prevProps.rows && !isCollapsed) ||\n // or if we are expanding a section that was collapsed.\n (wasCollapsed && !isCollapsed)\n )\n ) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n needsImpressionStats(cards) {\n if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n return true;\n }\n\n for (let i = 0; i < cards.length; i++) {\n if (cards[i].guid !== this.impressionCardGuids[i]) {\n return true;\n }\n }\n\n return false;\n }\n\n numberOfPlaceholders(items) {\n if (items === 0) {\n return CARDS_PER_ROW;\n }\n const remainder = items % CARDS_PER_ROW;\n if (remainder === 0) {\n return 0;\n }\n return CARDS_PER_ROW - remainder;\n }\n\n render() {\n const {\n id, eventSource, title, icon, rows,\n infoOption, emptyState, dispatch, maxRows,\n contextMenuOptions, initialized, disclaimer\n } = this.props;\n const maxCards = CARDS_PER_ROW * maxRows;\n\n // Show topics only for top stories and if it's not initialized yet (so\n // content doesn't shift when it is loaded) or has loaded with topics\n const shouldShowTopics = (id === \"topstories\" &&\n (!this.props.topics || this.props.topics.length > 0));\n\n const realRows = rows.slice(0, maxCards);\n const placeholders = this.numberOfPlaceholders(realRows.length);\n\n // The empty state should only be shown after we have initialized and there is no content.\n // Otherwise, we should show placeholders.\n const shouldShowEmptyState = initialized && !rows.length;\n\n //
                                                                                                                                                                                                                                                                                                                                                                                    <-- React component\n //
                                                                                                                                                                                                                                                                                                                                                                                    <-- HTML5 element\n return (\n \n\n {!shouldShowEmptyState && (
                                                                                                                                                                                                                                                                                                                                                                                      \n {realRows.map((link, index) => link &&\n )}\n {placeholders > 0 && [...new Array(placeholders)].map((_, i) => )}\n
                                                                                                                                                                                                                                                                                                                                                                                    )}\n {shouldShowEmptyState &&\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n :\n }\n

                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(emptyState.message)}\n

                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    }\n {shouldShowTopics && }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nSection.defaultProps = {\n document: global.document,\n rows: [],\n emptyState: {},\n title: \"\"\n};\n\nexport const SectionIntl = injectIntl(Section);\n\nexport class _Sections extends React.PureComponent {\n render() {\n const sections = this.props.Sections;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n {sections\n .filter(section => section.enabled)\n .map(section => )}\n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Sections/Sections.jsx","export const cardContextTypes = {\n history: {\n intlID: \"type_label_visited\",\n icon: \"historyItem\"\n },\n bookmark: {\n intlID: \"type_label_bookmarked\",\n icon: \"bookmark-added\"\n },\n trending: {\n intlID: \"type_label_recommended\",\n icon: \"trending\"\n },\n now: {\n intlID: \"type_label_now\",\n icon: \"now\"\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Card/types.js","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {cardContextTypes} from \"./types\";\nimport {FormattedMessage} from \"react-intl\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class Card extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n activeCard: null,\n imageLoaded: false,\n showContextMenu: false\n };\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.onLinkClick = this.onLinkClick.bind(this);\n }\n\n /**\n * Helper to conditionally load an image and update state when it loads.\n */\n async maybeLoadImage() {\n // No need to load if it's already loaded or no image\n const {image} = this.props.link;\n if (!this.state.imageLoaded && image) {\n // Initialize a promise to share a load across multiple card updates\n if (!gImageLoading.has(image)) {\n const loaderPromise = new Promise((resolve, reject) => {\n const loader = new Image();\n loader.addEventListener(\"load\", resolve);\n loader.addEventListener(\"error\", reject);\n loader.src = image;\n });\n\n // Save and remove the promise only while it's pending\n gImageLoading.set(image, loaderPromise);\n loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(image)).catch();\n }\n\n // Wait for the image whether just started loading or reused promise\n await gImageLoading.get(image);\n\n // Only update state if we're still waiting to load the original image\n if (this.props.link.image === image && !this.state.imageLoaded) {\n this.setState({imageLoaded: true});\n }\n }\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({\n activeCard: this.props.index,\n showContextMenu: true\n });\n }\n\n onLinkClick(event) {\n event.preventDefault();\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n this.props.dispatch(ac.AlsoToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n }));\n\n if (this.props.isWebExtension) {\n this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n source: this.props.eventSource,\n url: this.props.link.url,\n action_position: this.props.index\n }));\n } else {\n this.props.dispatch(ac.UserEvent({\n event: \"CLICK\",\n source: this.props.eventSource,\n action_position: this.props.index\n }));\n\n if (this.props.shouldSendImpressionStats) {\n this.props.dispatch(ac.ImpressionStats({\n source: this.props.eventSource,\n click: 0,\n tiles: [{id: this.props.link.guid, pos: this.props.index}]\n }));\n }\n }\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n componentDidMount() {\n this.maybeLoadImage();\n }\n\n componentDidUpdate() {\n this.maybeLoadImage();\n }\n\n componentWillReceiveProps(nextProps) {\n // Clear the image state if changing images\n if (nextProps.link.image !== this.props.link.image) {\n this.setState({imageLoaded: false});\n }\n }\n\n render() {\n const {index, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n const {props} = this;\n const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n // Display \"now\" as \"trending\" until we have new strings #3402\n const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n const hasImage = link.image || link.hasImage;\n const imageStyle = {backgroundImage: link.image ? `url(${link.image})` : \"none\"};\n\n return (
                                                                                                                                                                                                                                                                                                                                                                                  • \n \n
                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\nCard.defaultProps = {link: {}};\n\nexport const PlaceholderCard = () => ;\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Card/Card.jsx","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n render() {\n const {url, name} = this.props;\n return (
                                                                                                                                                                                                                                                                                                                                                                                  • {name}
                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\n\nexport class Topics extends React.PureComponent {\n render() {\n const {topics, read_more_endpoint} = this.props;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                      {topics && topics.map(t => )}
                                                                                                                                                                                                                                                                                                                                                                                    \n\n {read_more_endpoint && \n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Topics/Topics.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n const countTopSitesTypes = (acc, link) => {\n if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n acc.tippytop++;\n } else if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n acc.rich_icon++;\n } else if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n acc.screenshot_with_icon++;\n } else if (link.screenshot) {\n acc.screenshot++;\n } else {\n acc.no_image++;\n }\n\n return acc;\n };\n\n return topSites.reduce(countTopSitesTypes, {\n \"screenshot_with_icon\": 0,\n \"screenshot\": 0,\n \"tippytop\": 0,\n \"rich_icon\": 0,\n \"no_image\": 0\n });\n}\n\nexport class _TopSites extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onAddButtonClick = this.onAddButtonClick.bind(this);\n this.onFormClose = this.onFormClose.bind(this);\n }\n\n /**\n * Dispatch session statistics about the quality of TopSites icons and pinned count.\n */\n _dispatchTopSitesStats() {\n const topSites = this._getVisibleTopSites();\n const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n // Dispatch telemetry event with the count of TopSites images types.\n this.props.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned}\n }));\n }\n\n /**\n * Return the TopSites that are visible based on prefs and window width.\n */\n _getVisibleTopSites() {\n // We hide 2 sites per row when not in the wide layout.\n let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n // $break-point-widest = 1072px (from _variables.scss)\n if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n sitesPerRow -= 2;\n }\n return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n }\n\n componentDidUpdate() {\n this._dispatchTopSitesStats();\n }\n\n componentDidMount() {\n this._dispatchTopSitesStats();\n }\n\n onAddButtonClick() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_ADD_FORM_OPEN\"\n }));\n // Negative index will prepend the TopSite at the beginning of the list\n this.props.dispatch({type: at.TOP_SITES_EDIT, data: {index: -1}});\n }\n\n onFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT_CLOSE\"\n }));\n this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n }\n\n render() {\n const {props} = this;\n const infoOption = {\n header: {id: \"settings_pane_topsites_header\"},\n body: {id: \"settings_pane_topsites_body\"}\n };\n const {editForm} = props.TopSites;\n\n return (\n } infoOption={infoOption} prefName=\"collapseTopSites\" Prefs={props.Prefs} dispatch={props.dispatch}>\n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n {editForm &&\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n );\n }\n}\n\nexport const TopSites = connect(state => ({\n TopSites: state.TopSites,\n Prefs: state.Prefs,\n TopSitesRows: state.Prefs.values.topSitesRows\n}))(injectIntl(_TopSites));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSites.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\n\nexport class TopSiteForm extends React.PureComponent {\n constructor(props) {\n super(props);\n const {site} = props;\n this.state = {\n label: site ? (site.label || site.hostname) : \"\",\n url: site ? site.url : \"\",\n validationError: false\n };\n this.onLabelChange = this.onLabelChange.bind(this);\n this.onUrlChange = this.onUrlChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n this.onUrlInputMount = this.onUrlInputMount.bind(this);\n }\n\n onLabelChange(event) {\n this.resetValidation();\n this.setState({\"label\": event.target.value});\n }\n\n onUrlChange(event) {\n this.resetValidation();\n this.setState({\"url\": event.target.value});\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onDoneButtonClick(ev) {\n ev.preventDefault();\n\n if (this.validateForm()) {\n const site = {url: this.cleanUrl()};\n const {index} = this.props;\n if (this.state.label !== \"\") {\n site.label = this.state.label;\n }\n\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site, index}\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT\",\n action_position: index\n }));\n\n this.props.onClose();\n }\n }\n\n cleanUrl() {\n let {url} = this.state;\n // If we are missing a protocol, prepend http://\n if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n url = `http://${url}`;\n }\n return url;\n }\n\n resetValidation() {\n if (this.state.validationError) {\n this.setState({validationError: false});\n }\n }\n\n validateUrl() {\n try {\n return !!new URL(this.cleanUrl());\n } catch (e) {\n return false;\n }\n }\n\n validateForm() {\n this.resetValidation();\n // Only the URL is required and must be valid.\n if (!this.state.url || !this.validateUrl()) {\n this.setState({validationError: true});\n this.inputUrl.focus();\n return false;\n }\n return true;\n }\n\n onUrlInputMount(input) {\n this.inputUrl = input;\n }\n\n render() {\n // For UI purposes, editing without an existing link is \"add\"\n const showAsAdd = !this.props.site;\n\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                    \n \n

                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n {this.state.validationError &&\n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nTopSiteForm.defaultProps = {\n TopSite: null,\n index: -1\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSiteForm.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n MIN_CORNER_FAVICON_SIZE,\n MIN_RICH_FAVICON_SIZE,\n TOP_SITES_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SOURCE\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onDragEvent = this.onDragEvent.bind(this);\n }\n\n /*\n * Helper to determine whether the drop zone should allow a drop. We only allow\n * dropping top sites for now.\n */\n _allowDrop(e) {\n return e.dataTransfer.types.includes(\"text/topsite-index\");\n }\n\n onDragEvent(event) {\n switch (event.type) {\n case \"click\":\n // Stop any link clicks if we started any dragging\n if (this.dragged) {\n event.preventDefault();\n }\n break;\n case \"dragstart\":\n this.dragged = true;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n event.target.blur();\n this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n break;\n case \"dragend\":\n this.props.onDragEvent(event);\n break;\n case \"dragenter\":\n case \"dragover\":\n case \"drop\":\n if (this._allowDrop(event)) {\n event.preventDefault();\n this.props.onDragEvent(event, this.props.index);\n }\n break;\n case \"mousedown\":\n // Reset at the first mouse event of a potential drag\n this.dragged = false;\n break;\n }\n }\n\n render() {\n const {children, className, isDraggable, link, onClick, title} = this.props;\n const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}`;\n const {tippyTopIcon, faviconSize} = link;\n const [letterFallback] = title;\n let imageClassName;\n let imageStyle;\n let showSmallFavicon = false;\n let smallFaviconStyle;\n let smallFaviconFallback;\n if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n // styles and class names for top sites with rich icons\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon || link.favicon})`\n };\n } else {\n // styles and class names for top sites with screenshot + small icon in top left corner\n imageClassName = `screenshot${link.screenshot ? \" active\" : \"\"}`;\n imageStyle = {backgroundImage: link.screenshot ? `url(${link.screenshot})` : \"none\"};\n\n // only show a favicon in top left if it's greater than 16x16\n if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n showSmallFavicon = true;\n smallFaviconStyle = {backgroundImage: `url(${link.favicon})`};\n } else if (link.screenshot) {\n // Don't show a small favicon if there is no screenshot, because that\n // would result in two fallback icons\n showSmallFavicon = true;\n smallFaviconFallback = true;\n }\n }\n let draggableProps = {};\n if (isDraggable) {\n draggableProps = {\n onClick: this.onDragEvent,\n onDragEnd: this.onDragEvent,\n onDragStart: this.onDragEvent,\n onMouseDown: this.onDragEvent\n };\n }\n return (
                                                                                                                                                                                                                                                                                                                                                                                  • \n
                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\nTopSiteLink.defaultProps = {\n title: \"\",\n link: {},\n isDraggable: true\n};\n\nexport class TopSite extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {showContextMenu: false};\n this.onLinkClick = this.onLinkClick.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n }\n\n userEvent(event) {\n this.props.dispatch(ac.UserEvent({\n event,\n source: TOP_SITES_SOURCE,\n action_position: this.props.index\n }));\n }\n\n onLinkClick(ev) {\n this.userEvent(\"CLICK\");\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.props.onActivate(this.props.index);\n this.setState({showContextMenu: true});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const {props} = this;\n const {link} = props;\n const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n const title = link.label || link.hostname;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\nTopSite.defaultProps = {\n link: {},\n onActivate() {}\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditButtonClick = this.onEditButtonClick.bind(this);\n }\n\n onEditButtonClick() {\n this.props.dispatch(\n {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n }\n\n render() {\n return (\n

                                                                                                                                                                                                                                                                                                                                                                                    Kakube maloyo

                                                                                                                                                                                                                                                                                                                                                                                    Lami tam obedo Pocket

                                                                                                                                                                                                                                                                                                                                                                                    Lok macuk gi lamal:

                                                                                                                                                                                                                                                                                                                                                                                      Wiye madito

                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                      Kakube maloyo

                                                                                                                                                                                                                                                                                                                                                                                      Lami tam obedo Pocket

                                                                                                                                                                                                                                                                                                                                                                                      Lok macuk gi lamal:

                                                                                                                                                                                                                                                                                                                                                                                        Wiye madito

                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js index 167f26b5a1dc..a5a2157e8053 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ityeko weng. Rot doki lacen pi lok madito mapol ki bot {provider}. Pe itwero kuro? Yer lok macuke lamal me nongo lok mabeco mapol ki i but kakube.", "manual_migration_explanation2": "Tem Firefox ki alamabuk, gin mukato ki mung me donyo ki ii layeny mukene.", "manual_migration_cancel_button": "Pe Apwoyo", - "manual_migration_import_button": "Kel kombedi", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Kel kombedi" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html index 45b56ea38578..5c5f4a6645f9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                        المواقع الأكثر زيارة

                                                                                                                                                                                                                                                                                                                                                                                        ينصح به Pocket

                                                                                                                                                                                                                                                                                                                                                                                        المواضيع الشائعة:

                                                                                                                                                                                                                                                                                                                                                                                          أهم الأحداث

                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                          المواقع الأكثر زيارة

                                                                                                                                                                                                                                                                                                                                                                                          ينصح به Pocket

                                                                                                                                                                                                                                                                                                                                                                                          المواضيع الشائعة:

                                                                                                                                                                                                                                                                                                                                                                                            أهم الأحداث

                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js index 473e5b5fbd84..f29ba945cc40 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js @@ -10,7 +10,7 @@ window.gActivityStreamStrings = { "header_recommended_by": "ينصح به {provider}", "header_bookmarks_placeholder": "لا علامات لديك بعد.", "header_stories_from": "من", - "context_menu_button_sr": "افتح قائمة {title} السياقية", + "context_menu_button_sr": "Open context menu for {title}", "type_label_visited": "مُزارة", "type_label_bookmarked": "معلّمة", "type_label_synced": "مُزامنة من جهاز آخر", @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "حرّر هذا الموقع", "edit_topsites_dismiss_button": "احذف هذا الموقع", "edit_topsites_add_button": "أضِفْ", - "edit_topsites_add_button_tooltip": "أضف موقعًا شائعًا", + "edit_topsites_add_button_tooltip": "Add Top Site", "topsites_form_add_header": "موقع شائع جديد", "topsites_form_edit_header": "حرّر الموقع الشائع", "topsites_form_title_placeholder": "أدخل عنوانًا", @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "لا جديد. تحقق لاحقًا للحصول على مزيد من أهم الأخبار من {provider}. لا يمكنك الانتظار؟ اختر موضوعًا شائعًا للعثور على المزيد من القصص الرائعة من جميع أنحاء الوِب.", "manual_migration_explanation2": "جرب فَيَرفُكس مع العلامات، و التأريخ، و كلمات السر من متصفح آخر.", "manual_migration_cancel_button": "لا شكرًا", - "manual_migration_import_button": "استورد الآن", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "استورد الآن" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html index f1de95c07453..adf154b53ce4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                            Más visitaos

                                                                                                                                                                                                                                                                                                                                                                                            Recomendáu por Pocket

                                                                                                                                                                                                                                                                                                                                                                                            Temes populares:

                                                                                                                                                                                                                                                                                                                                                                                              Destacaos

                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                              Más visitaos

                                                                                                                                                                                                                                                                                                                                                                                              Recomendáu por Pocket

                                                                                                                                                                                                                                                                                                                                                                                              Temes populares:

                                                                                                                                                                                                                                                                                                                                                                                                Destacaos

                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js index 1e09d8dcbeb9..96dacf771d79 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Prueba Firefox colos marcadores, hestorial y contraseñes d'otru restolador.", "manual_migration_cancel_button": "Non, gracies", - "manual_migration_import_button": "Importar agora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar agora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html index d718c27a66e6..71a76c266f5e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                Qabaqcıl Saytlar

                                                                                                                                                                                                                                                                                                                                                                                                Pocket məsləhət görür

                                                                                                                                                                                                                                                                                                                                                                                                Məşhur Mövzular:

                                                                                                                                                                                                                                                                                                                                                                                                  Seçilmişlər

                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                  Qabaqcıl Saytlar

                                                                                                                                                                                                                                                                                                                                                                                                  Pocket məsləhət görür

                                                                                                                                                                                                                                                                                                                                                                                                  Məşhur Mövzular:

                                                                                                                                                                                                                                                                                                                                                                                                    Seçilmişlər

                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js index 42a0b5436091..ed3d804b8e57 100644 --- a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Hamısını oxudunuz. Yeni {provider} məqalələri üçün daha sonra təkrar yoxlayın. Gözləyə bilmirsiz? Məşhur mövzu seçərək internetdən daha çox gözəl məqalələr tapın.", "manual_migration_explanation2": "Firefox səyyahını digər səyyahlardan olan əlfəcin, tarixçə və parollar ilə yoxlayın.", "manual_migration_cancel_button": "Xeyr, Təşəkkürlər", - "manual_migration_import_button": "İndi idxal et", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "İndi idxal et" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html index 8c55f735e8f6..ab581f40cdfa 100644 --- a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                    Папулярныя сайты

                                                                                                                                                                                                                                                                                                                                                                                                    Рэкамендавана Pocket

                                                                                                                                                                                                                                                                                                                                                                                                    Папулярныя тэмы:

                                                                                                                                                                                                                                                                                                                                                                                                      Выбранае

                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                      Папулярныя сайты

                                                                                                                                                                                                                                                                                                                                                                                                      Рэкамендавана Pocket

                                                                                                                                                                                                                                                                                                                                                                                                      Папулярныя тэмы:

                                                                                                                                                                                                                                                                                                                                                                                                        Выбранае

                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js index 84c976f21a83..de6c0a2154c9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Гатова. Праверце пазней, каб убачыць больш матэрыялаў ад {provider}. Не жадаеце чакаць? Выберыце папулярную тэму, каб знайсці больш цікавых матэрыялаў з усяго Інтэрнэту.", "manual_migration_explanation2": "Паспрабуйце Firefox з закладкамі, гісторыяй і паролямі з іншага браўзера.", "manual_migration_cancel_button": "Не, дзякуй", - "manual_migration_import_button": "Імпартаваць зараз", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Імпартаваць зараз" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html index 1334f0149666..06616bca876c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                        Често посещавани

                                                                                                                                                                                                                                                                                                                                                                                                        Препоръчано от Pocket

                                                                                                                                                                                                                                                                                                                                                                                                        Популярни теми:

                                                                                                                                                                                                                                                                                                                                                                                                          Акценти

                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                          Често посещавани

                                                                                                                                                                                                                                                                                                                                                                                                          Препоръчано от Pocket

                                                                                                                                                                                                                                                                                                                                                                                                          Популярни теми:

                                                                                                                                                                                                                                                                                                                                                                                                            Акценти

                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js index b03014f9e145..f2da3753bf7d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Разгледахте всичко. Проверете по-късно за повече истории от {provider}. Нямате търпение? Изберете популярна тема, за да откриете повече истории из цялата Мрежа.", "manual_migration_explanation2": "Опитайте Firefox с отметките, историята и паролите от друг четец.", "manual_migration_cancel_button": "Не, благодаря", - "manual_migration_import_button": "Внасяне", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Внасяне" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html index e78e1f3699a1..4ca874307090 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                            শীর্ঘ সাইট

                                                                                                                                                                                                                                                                                                                                                                                                            Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                            জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                              হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                              শীর্ঘ সাইট

                                                                                                                                                                                                                                                                                                                                                                                                              Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                              জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js index 33e36bd87be1..f997503331b5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "এখনই ইম্পোর্ট করুন" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html index 1212089ea788..dbe87d8bbed4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                শীর্ষ সাইটগুলি

                                                                                                                                                                                                                                                                                                                                                                                                                Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                                জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                  হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                  শীর্ষ সাইটগুলি

                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                                  জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                    হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js index ecd084886f35..4827249b28b5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "এখনই ইম্পোর্ট করুন" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html index e7e9874954f4..2a9a48cf149f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                    Lec'hiennoù pennañ

                                                                                                                                                                                                                                                                                                                                                                                                                    Erbedet gant Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                    Danvezioù brudet:

                                                                                                                                                                                                                                                                                                                                                                                                                      Mareoù pouezus

                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                      Lec'hiennoù pennañ

                                                                                                                                                                                                                                                                                                                                                                                                                      Erbedet gant Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                      Danvezioù brudet:

                                                                                                                                                                                                                                                                                                                                                                                                                        Mareoù pouezus

                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js index 4d034aa5b49b..87f6303c631f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Aet oc'h betek penn. Distroit diwezhatoc'h evit muioc’h a istorioù digant {provider}. N’oc'h ket evit gortoz? Dibabit un danvez brudet evit klask muioc’h a bennadoù dedennus eus pep lec’h er web.", "manual_migration_explanation2": "Amprouit Firefox gant sinedoù, roll istor ha gerioù-tremen ur merdeer all.", "manual_migration_cancel_button": "N'am bo ket", - "manual_migration_import_button": "Emporzhiañ bremañ", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Emporzhiañ bremañ" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html index be0b94dd6622..2ec670717798 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                        Najposjećenije stranice

                                                                                                                                                                                                                                                                                                                                                                                                                        Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                        Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                          Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                          Najposjećenije stranice

                                                                                                                                                                                                                                                                                                                                                                                                                          Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                          Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                            Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js index 35c87091ee8e..011b24c66ff1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", "manual_migration_explanation2": "Probajte Firefox s zabilješkama, historijom i lozinkama iz drugog pretraživača.", "manual_migration_cancel_button": "Ne, hvala", - "manual_migration_import_button": "Uvezi sada", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Uvezi sada" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html index 01cbe0ebc77c..594dd3a3fd0f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                            Llocs principals

                                                                                                                                                                                                                                                                                                                                                                                                                            Recomanat per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                            Temes populars:

                                                                                                                                                                                                                                                                                                                                                                                                                              Destacats

                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                              Llocs principals

                                                                                                                                                                                                                                                                                                                                                                                                                              Recomanat per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                              Temes populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                Destacats

                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js index 5767ffa6c7da..2fbcf7c0015c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ja esteu al dia. Torneu més tard per veure més articles populars de {provider}. No podeu esperar? Trieu un tema popular per descobrir els articles més interessants de tot el web.", "manual_migration_explanation2": "Proveu el Firefox amb les adreces d'interès, l'historial i les contrasenyes d'un altre navegador.", "manual_migration_cancel_button": "No, gràcies", - "manual_migration_import_button": "Importa-ho ara", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importa-ho ara" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html index fcbe15acbb52..b666c9f1f8f3 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                Utziläj taq Ruxaq K'amaya'l

                                                                                                                                                                                                                                                                                                                                                                                                                                Chilab'en ruma Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                Nima'q taq Na'oj:

                                                                                                                                                                                                                                                                                                                                                                                                                                  Taq k'ewachinïk

                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                  Utziläj taq Ruxaq K'amaya'l

                                                                                                                                                                                                                                                                                                                                                                                                                                  Chilab'en ruma Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                  Nima'q taq Na'oj:

                                                                                                                                                                                                                                                                                                                                                                                                                                    Taq k'ewachinïk

                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js index 4a46e5f49f71..744997be6ebb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Xaq'i'. Katzolin chik pe richin ye'ak'ül ri utziläj taq rub'anob'al {provider}. ¿La man noyob'en ta? Tacha' jun ütz na'oj richin nawïl ch'aqa' chik taq b'anob'äl e k'o chi rij ri ajk'amaya'l.", "manual_migration_explanation2": "Tatojtob'ej Firefox kik'in ri taq ruyaketal, runatab'äl chuqa' taq ewan rutzij jun chik okik'amaya'l.", "manual_migration_cancel_button": "Mani matyox", - "manual_migration_import_button": "Tijik' pe", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Tijik' pe" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html index 76fa8c14ac7b..daa9c83e579e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                    Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                    Doporučení ze služby Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                    Populární témata:

                                                                                                                                                                                                                                                                                                                                                                                                                                      Vybrané

                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                      Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                      Doporučení ze služby Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                      Populární témata:

                                                                                                                                                                                                                                                                                                                                                                                                                                        Vybrané

                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js index 4a7ba6c888e7..af679f66a7f7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js @@ -32,9 +32,9 @@ window.gActivityStreamStrings = { "confirm_history_delete_notice_p2": "Tuto akci nelze vzít zpět.", "menu_action_save_to_pocket": "Uložit do služby Pocket", "search_for_something_with": "Vyhledat {search_term} s:", - "search_button": "Vyhledat", + "search_button": "Hledat", "search_header": "Vyhledat pomocí {search_engine_name}", - "search_web_placeholder": "Vyhledat na webu", + "search_web_placeholder": "Hledat na webu", "search_settings": "Změnit nastavení vyhledávání", "section_info_option": "Informace", "section_info_send_feedback": "Zpětná vazba", @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Už jste všechno přečetli. Další příběhy ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké příběhy z celého webu.", "manual_migration_explanation2": "Vyzkoušejte Firefox se záložkami, historií a hesly z jiného vašeho prohlížeče.", "manual_migration_cancel_button": "Ne, děkuji", - "manual_migration_import_button": "Importovat nyní", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importovat nyní" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html index b550d753191d..866001a7eb01 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                        Hoff Wefannau

                                                                                                                                                                                                                                                                                                                                                                                                                                        Argymhellwyd gan Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                        Pynciau Poblogaidd:

                                                                                                                                                                                                                                                                                                                                                                                                                                          Goreuon

                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                          Hoff Wefannau

                                                                                                                                                                                                                                                                                                                                                                                                                                          Argymhellwyd gan Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                          Pynciau Poblogaidd:

                                                                                                                                                                                                                                                                                                                                                                                                                                            Goreuon

                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js index 877a6e257df7..5ffbbf400f06 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Rydych wedi dal i fynDewch nôl rhywbryd eto am fwy o'r straeon pwysicaf gan {provider}. Methu aros? Dewiswch bwnc poblogaidd i ganfod straeon da o ar draws y we. ", "manual_migration_explanation2": "Profwch Firefox gyda nodau tudalen, hanes a chyfrineiriau o borwr arall.", "manual_migration_cancel_button": "Dim Diolch", - "manual_migration_import_button": "Mewnforio Nawr", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Mewnforio Nawr" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html index 20a50a04ee9d..2e20542146eb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                            Mest besøgte websider

                                                                                                                                                                                                                                                                                                                                                                                                                                            Anbefalet af Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                            Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                              Fremhævede

                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                              Mest besøgte websider

                                                                                                                                                                                                                                                                                                                                                                                                                                              Anbefalet af Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                              Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                Fremhævede

                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js index a3e9e6c48cc9..9504be838021 100644 --- a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Der er ikke flere nye historier. Kom tilbage senere for at se flere tophistorier fra {provider}. Kan du ikke vente? Vælg et populært emne og find flere spændende historier fra hele verden.", "manual_migration_explanation2": "Prøv Firefox med bogmærkerne, historikken og adgangskoderne fra en anden browser.", "manual_migration_cancel_button": "Nej tak", - "manual_migration_import_button": "Importer nu", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importer nu" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html index d881892625eb..7ea300ae9cc8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                Wichtige Seiten

                                                                                                                                                                                                                                                                                                                                                                                                                                                Empfohlen von Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                Beliebte Themen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Überblick

                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Wichtige Seiten

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Empfohlen von Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Beliebte Themen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                    Überblick

                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js index 2b0332d048f1..f72bba7876f8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Jetzt kennen Sie die Neuigkeiten. Schauen Sie später wieder vorbei, um neue Informationen von {provider} zu erhalten. Können Sie nicht warten? Wählen Sie ein beliebtes Thema und lesen Sie weitere interessante Geschichten aus dem Internet.", "manual_migration_explanation2": "Probieren Sie Firefox aus und importieren Sie die Lesezeichen, Chronik und Passwörter eines anderen Browsers.", "manual_migration_cancel_button": "Nein, danke", - "manual_migration_import_button": "Jetzt importieren", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Jetzt importieren" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html index eaba676b3247..6d1c00faf2de 100644 --- a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                    Nejcesćej woglědane sedła

                                                                                                                                                                                                                                                                                                                                                                                                                                                    Wót Pocket dopórucony

                                                                                                                                                                                                                                                                                                                                                                                                                                                    Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                      Nejcesćej woglědane sedła

                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wót Pocket dopórucony

                                                                                                                                                                                                                                                                                                                                                                                                                                                      Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js index 69654bb1dee4..13f718652397 100644 --- a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To jo nachylu wšykno. Wrośćo se pózdźej wjelicnych tšojeńkow dla wót {provider}. Njamóžośo cakaś? Wubjeŕśo woblubowanu temu, aby dalšne wjelicne tšojeńka we webje namakał.", "manual_migration_explanation2": "Wopytajśo Firefox z cytanskimi znamjenjami, historiju a gronidłami z drugego wobglědowaka.", "manual_migration_cancel_button": "Ně, źěkujom se", - "manual_migration_import_button": "Něnto importěrowaś", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Něnto importěrowaś" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html index 51cbc14f1f4e..2c14b5c97819 100644 --- a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                        Κορυφαίες ιστοσελίδες

                                                                                                                                                                                                                                                                                                                                                                                                                                                        Προτεινόμενο από τον πάροχο Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                        Δημοφιλή θέματα:

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Κορυφαίες στιγμές

                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Κορυφαίες ιστοσελίδες

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Προτεινόμενο από τον πάροχο Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Δημοφιλή θέματα:

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Κορυφαίες στιγμές

                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js index 681ce4318084..2dfc5bce643b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Δεν υπάρχει κάτι νεότερο. Ελέγξτε αργότερα για περισσότερες ιστορίες από τον πάροχο {provider}. Δεν μπορείτε να περιμένετε; Διαλέξτε κάποιο από τα δημοφιλή θέματα και ανακαλύψτε ενδιαφέρουσες ιστορίες από όλο τον Ιστό.", "manual_migration_explanation2": "Δοκιμάστε το Firefox με τους σελιδοδείκτες, το ιστορικό και τους κωδικούς πρόσβασης από ένα άλλο πρόγραμμα περιήγησης.", "manual_migration_cancel_button": "Όχι ευχαριστώ", - "manual_migration_import_button": "Εισαγωγή τώρα", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Εισαγωγή τώρα" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html index 45ec68125e39..ccb0c8605e94 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js index 613bf9027257..f8fd16c0af44 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Import Now" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html index 0e999c083a28..d663a948d4c0 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js index 6e63faffd579..bd378325eb67 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Import Now" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html index d252cd8bf147..2b56de74518f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Plej vizititaj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Rekomendita de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ĉefaj temoj:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Elstaraĵoj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Plej vizititaj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Rekomendita de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Ĉefaj temoj:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Elstaraĵoj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js index a8f9b7dd909c..e20a9cb7450d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Vi legis ĉion. Kontrolu denove poste ĉu estas pli da novaĵon de {provider}. Ĉu vi ne povas atendi? Elektu popularan temon por trovi pli da interesaj artikoloj en la tuta teksaĵo.", "manual_migration_explanation2": "Provu Firefox kun la legosignoj, historio kaj pasvortoj de alia retumilo.", "manual_migration_cancel_button": "Ne, dankon", - "manual_migration_import_button": "Importi nun", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importi nun" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html index 492ba1fb73ee..6ef7c01c2e0c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Más visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Más visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js index c5ff6797cbc1..7073abdf9f07 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya te pusiste al día. Volvé más tarde para más historias de {provider}. ¿No podés esperar? Seleccioná un tema popular para encontrar más historias de todo el mundo.", "manual_migration_explanation2": "Probá Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No gracias", - "manual_migration_import_button": "Importar ahora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar ahora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html index 418b004bfa16..f9a60e8df6f6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sitios frecuentes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sitios frecuentes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js index 288020c88439..3aeb49d3c8d1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Te has puesto al día. Revisa más tarde para ver más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular para encontrar más historias de todo el mundo.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar ahora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html index d4b83e9d981a..d66e9654f338 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js index f264c75cb067..68a3b3382847 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya estás al día. Vuelve luego y busca más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular y encontrás más historias alucinantes por toda la web.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar ahora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html index 70a6707bfd95..18e48be5a12d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js index 15fde5242030..c2ead8caca99 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya estás al día. Vuelve luego y busca más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular y encontrarás más historias interesantes por toda la web.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar ahora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html index cfe0a958793d..7c2764ea85de 100644 --- a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Top saidid

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pocket soovitab

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populaarsed teemad:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Esiletõstetud

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Top saidid

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pocket soovitab

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populaarsed teemad:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Esiletõstetud

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js index 60e378a09211..916da87348b1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Vaata hiljem uuesti, et näha parimaid postitusi teenusepakkujalt {provider}. Ei suuda oodata? Vali populaarne teema, et leida veel suurepärast sisu internetist.", "manual_migration_explanation2": "Proovi Firefoxi teisest brauserist pärinevate järjehoidjate, ajaloo ja paroolidega.", "manual_migration_cancel_button": "Ei soovi", - "manual_migration_import_button": "Impordi kohe", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Impordi kohe" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html index 04c7c5df8065..db9ab1b44c5b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Gune erabilienak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket hornitzaileak gomendatuta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Gai ezagunak:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Nabarmendutakoak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Gune erabilienak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket hornitzaileak gomendatuta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Gai ezagunak:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Nabarmendutakoak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js index 009013d6c0d3..ce2e727750e2 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Egunean zaude jada. Etorri berriro geroago {provider} hornitzailearen istorio ezagun gehiagorako. Ezin duzu itxaron? Hautatu gai ezagun bat webeko istorio gehiago aurkitzeko.", "manual_migration_explanation2": "Probatu Firefox beste nabigatzaile batetik ekarritako laster-marka, historia eta pasahitzekin.", "manual_migration_cancel_button": "Ez, eskerrik asko", - "manual_migration_import_button": "Inportatu orain", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Inportatu orain" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html index cae68ce22a58..7f9bb93dcb56 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                سایت‌های برتر

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                پیشنهاد شده توسط Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                موضوع‌های محبوب:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  برجسته‌ها

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  سایت‌های برتر

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  پیشنهاد شده توسط Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  موضوع‌های محبوب:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    برجسته‌ها

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js index daa52d7028d8..81b2ed2f56e8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "فعلا تموم شد. بعدا دوباره سر بزن تا مطالب جدید از {provider} ببینی. نمی‌تونی صبر کنی؟ یک موضوع محبوب رو انتخاب کن تا مطالب جالب مرتبط از سراسر دنیا رو پیدا کنی.", "manual_migration_explanation2": "فایرفاکس را با نشانک‌ها،‌ تاریخچه‌ها و کلمات عبور از سایر مرورگر ها تجربه کنید.", "manual_migration_cancel_button": "نه ممنون", - "manual_migration_import_button": "هم‌اکنون وارد شوند", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "هم‌اکنون وارد شوند" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html index 232dca915a31..a9b727edccd7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Lowe dowrowe

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Loowdiiji lolluɗi:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Jalbine

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Lowe dowrowe

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Loowdiiji lolluɗi:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Jalbine

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js index 306fdce579eb..199305252291 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Ƴeewndo Firefox wonndude e maantore ɗee, aslol kam e finndeeji iwde e wanngorde woɗnde.", "manual_migration_cancel_button": "Alaa, moƴƴii", - "manual_migration_import_button": "Jiggo Jooni", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Jiggo Jooni" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html index 3fb29cfc0701..f1700ce65a14 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ykkössivustot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Suositukset lähteestä Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Suositut aiheet:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Nostot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ykkössivustot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Suositukset lähteestä Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Suositut aiheet:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Nostot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js index 205641b8798b..bd9247361e67 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ei enempää suosituksia juuri nyt. Katso myöhemmin uudestaan lisää ykkösjuttuja lähteestä {provider}. Etkö malta odottaa? Valitse suosittu aihe ja löydä lisää hyviä juttuja ympäri verkkoa.", "manual_migration_explanation2": "Kokeile Firefoxia toisesta selaimesta tuotujen kirjanmerkkien, historian ja salasanojen kanssa.", "manual_migration_cancel_button": "Ei kiitos", - "manual_migration_import_button": "Tuo nyt", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Tuo nyt" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html index 436992de05ea..e66f4caec385 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sites les plus visités

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommandations par Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sujets populaires :

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Éléments-clés

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sites les plus visités

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommandations par Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sujets populaires :

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Éléments-clés

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js index a8fd46aebb4a..cd98a6e2ee48 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Il n’y en a pas d’autres. Revenez plus tard pour plus d’articles de {provider}. Vous ne voulez pas attendre ? Choisissez un sujet parmi les plus populaires pour découvrir d’autres articles intéressants sur le Web.", "manual_migration_explanation2": "Essayez Firefox en important les marque-pages, l’historique et les mots de passe depuis un autre navigateur.", "manual_migration_cancel_button": "Non merci", - "manual_migration_import_button": "Importer", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importer" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html index da513838827d..7ee7c81d6a72 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Oanrekommandearre troch Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populêre ûnderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Hichtepunten

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Oanrekommandearre troch Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populêre ûnderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Hichtepunten

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js index 18ab87b213fd..81103d06054b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Jo binne by. Kom letter werom foar mear ferhalen fan {provider}. Kin jo net wachtsje? Selektearje in populêr ûnderwerp om mear ferhalen fan it ynternet te finen.", "manual_migration_explanation2": "Probearje Firefox en ymportearje de blêdwizers, skiednis en wachtwurden fan oare browsers.", "manual_migration_cancel_button": "Nee tankewol", - "manual_migration_import_button": "No ymportearje", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "No ymportearje" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html index db7516737e26..151af55169cd 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Barrshuímh

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Topaicí i mbéal an phobail:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Barrshuímh

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Topaicí i mbéal an phobail:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js index 78578ef40569..e6441650d4be 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js @@ -97,8 +97,6 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "Roghnaigh na rudaí a fheicfidh tú nuair a osclóidh tú cluaisín nua.", "settings_pane_pocketstories_header": "Barrscéalta", "settings_pane_pocketstories_body": "Le Pocket, ball de theaghlach Mozilla, beidh tú ábalta teacht ar ábhar den chéad scoth go héasca.", diff --git a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html index e722efedc042..bd88a8c1c730 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Brod nan làrach

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ’Ga mholadh le Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Cuspairean fèillmhor:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Sàr-roghainn

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Brod nan làrach

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ’Ga mholadh le Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Cuspairean fèillmhor:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sàr-roghainn

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js index 95600fb13f75..6c06ffc87ea5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Sin na naidheachdan uile o {provider} an-dràsta ach bidh barrachd ann a dh’aithghearr. No thoir sùil air cuspair air a bheil fèill mhòr is leugh na tha a’ dol mun cuairt air an lìon an-dràsta.", "manual_migration_explanation2": "Feuch Firefox leis na comharran-lìn, an eachdraidh ’s na faclan-faire o bhrabhsair eile.", "manual_migration_cancel_button": "Chan eil, tapadh leibh", - "manual_migration_import_button": "Ion-phortaich an-dràsta", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Ion-phortaich an-dràsta" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html index 83eb8b31693a..af90cc553025 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js index 1edf45a98eaf..ead635e9a81d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "Non, grazas", - "manual_migration_import_button": "Importar agora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar agora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html index 90bf41807b1a..a76a1e142188 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Tenda Ojehechavéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket he'i ndéve reike hag̃ua

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ñe'ẽmbyrã Ojehayhuvéva:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mba'eporãitéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Tenda Ojehechavéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket he'i ndéve reike hag̃ua

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ñe'ẽmbyrã Ojehayhuvéva:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Mba'eporãitéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js index 10a637d518f4..5a8a87ec6d9e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ko'ág̃a reikuaapáma ipyahúva. Eikejey ag̃ave ápe eikuaávo mombe'upy pyahu {provider} oikuave'ẽva ndéve. Ndaikatuvéima reha'ãrõ? Eiporavo peteĩ ñe'ẽmbyrã ha emoñe'ẽve oĩvéva ñande yvy ape ári.", "manual_migration_explanation2": "Eipuru Firefox reheve techaukaha, tembiasakue ha ñe'ẽñemi ambue kundaharapegua.", "manual_migration_cancel_button": "Ag̃amiénte", - "manual_migration_import_button": "Egueroike Ko'ág̃a", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Egueroike Ko'ág̃a" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html index 650f306da9cf..954013e2606a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ટોપ સાઇટ્સ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    દ્વારા ભલામણ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    લોકપ્રિય વિષયો:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      વીતી ગયેલું

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ટોપ સાઇટ્સ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      દ્વારા ભલામણ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      લોકપ્રિય વિષયો:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        વીતી ગયેલું

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js index 761b6714e2af..66708ef76d51 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "તમે પકડાઈ ગયા છો. {પ્રદાતા} તરફથી વધુ ટોચની વાતો માટે પછીથી પાછા તપાસો. રાહ નથી જોઈ શકતા? સમગ્ર વેબ પરથી વધુ સુંદર વાર્તાઓ શોધવા માટે એક લોકપ્રિય વિષય પસંદ કરો.", "manual_migration_explanation2": "અન્ય બ્રાઉઝરથી બુકમાર્ક્સ, ઇતિહાસ અને પાસવર્ડ્સ સાથે ફાયરફોક્સ અજમાવો.", "manual_migration_cancel_button": "ના અભાર", - "manual_migration_import_button": "હવે આયાત કરો", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "હવે આયાત કરો" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html index 530ccd480809..fd0092a3869b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        אתרים מובילים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        מומלץ על ידי Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        נושאים פופולריים:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          מומלצים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          אתרים מובילים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          מומלץ על ידי Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          נושאים פופולריים:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            מומלצים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js index 2274570ef47e..b361b4a468c4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "התעדכנת בכל הסיפורים. כדאי לנסות שוב מאוחר יותר כדי לקבל עוד סיפורים מובילים מאת {provider}. לא רוצה לחכות? ניתן לבחור נושא נפוץ כדי למצוא עוד סיפורים נפלאים מרחבי הרשת.", "manual_migration_explanation2": "ניתן להתנסות ב־Firefox עם הסימניות, ההיסטוריה והססמאות מדפדפן אחר.", "manual_migration_cancel_button": "לא תודה", - "manual_migration_import_button": "ייבוא כעת", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ייבוא כעת" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html index 3b485fa46f1a..7dcde4841d10 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            सर्वोच्च साइटें

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket द्वारा अनुशंसित

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            लोकप्रिय विषय:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              झलकियाँ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              सर्वोच्च साइटें

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket द्वारा अनुशंसित

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              लोकप्रिय विषय:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                झलकियाँ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js index 4d02d0c36185..04a888cf0980 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "आप अंत तक आ गए हैं. {provider} से और शीर्ष घटनाओं के लिए कुछ समय में पुनः आइए. इंतज़ार नहीं कर सकते? वेब से और प्रमुख घटनाएं ढूंढने के लिए एक लोकप्रिय विषय चुनें.", "manual_migration_explanation2": "Firefox को किसी अन्य ब्राउज़र के पुस्तचिह्नों, इतिहास और पासवर्डों के साथ आज़माएं.", "manual_migration_cancel_button": "नहीं शुक्रिया", - "manual_migration_import_button": "अब आयात करें", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "अब आयात करें" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html index cc4dde7b31b9..a54be4f10c02 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Najbolje stranice

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Najbolje stranice

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js index e34da10de0ba..2d1cdf973acf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", "manual_migration_explanation2": "Probajte Firefox s zabilješkama, povijesti i lozinkama iz drugog pretraživača.", "manual_migration_cancel_button": "Ne hvala", - "manual_migration_import_button": "Uvezi sada", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Uvezi sada" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html index b4bbc353edbd..ee9c871082db 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Najhusćišo wopytane sydła

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Wot Pocket doporučeny

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Najhusćišo wopytane sydła

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wot Pocket doporučeny

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js index 4955b375c739..67885712e17c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To je nachwilu wšitko. Wróćće so pozdźišo dalšich wulkotnych stawiznow dla wot {provider}. Njemóžeće čakać? Wubjerće woblubowanu temu, zo byšće dalše wulkotne stawizny z weba namakał.", "manual_migration_explanation2": "Wupruwujće Firefox ze zapołožkami, historiju a hesłami z druheho wobhladowaka.", "manual_migration_cancel_button": "Ně, dźakuju so", - "manual_migration_import_button": "Nětko importować", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Nětko importować" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html index 781debc7a3cc..0e7e5d0bf7a8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Népszerű oldalak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        A(z) Pocket ajánlásával

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Népszerű témák:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Kiemelések

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Népszerű oldalak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          A(z) Pocket ajánlásával

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Népszerű témák:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Kiemelések

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js index cec877aca1ca..8aaa000e8e9f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Már felzárkózott. Nézzen vissza később a legújabb {provider} hírekért. Nem tud várni? Válasszon egy népszerű témát, hogy még több sztorit találjon a weben.", "manual_migration_explanation2": "Próbálja ki a Firefoxot másik böngészőből származó könyvjelzőkkel, előzményekkel és jelszavakkal.", "manual_migration_cancel_button": "Köszönöm, nem", - "manual_migration_import_button": "Importálás most", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importálás most" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html index 0aca327c2520..9cf920c40e91 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Լավագույն կայքեր

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Գունանշում

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Լավագույն կայքեր

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Գունանշում

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js index d697fb15079b..587d1efd3922 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Import Now" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html index 4652a283a553..3fe0bf061ba7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Sitos popular

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recommendate per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Subjectos popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  In evidentia

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Sitos popular

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recommendate per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Subjectos popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    In evidentia

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js index e9a46d052236..188da3c37914 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Tu ja es in die con toto. Reveni plus tarde pro plus historias popular de {provider}. Non vole attender? Selectiona un subjecto popular pro trovar plus altere historias interessante del web.", "manual_migration_explanation2": "Essaya Firefox con le marcapaginas, le chronologia e le contrasignos de un altere navigator.", "manual_migration_cancel_button": "No, gratias", - "manual_migration_import_button": "Importar ora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar ora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html index d058cfd21746..b8ad0409b734 100644 --- a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Situs Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Disarankan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Topik Populer:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sorotan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Situs Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Disarankan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Topik Populer:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Sorotan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js index 715aa21f91d1..a29af241a619 100644 --- a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Maaf Anda tercegat. Periksa lagi nanti untuk lebih banyak cerita terbaik dari {provider}. Tidak mau menunggu? Pilih topik populer untuk menemukan lebih banyak cerita hebat dari seluruh web.", "manual_migration_explanation2": "Coba Firefox dengan markah, riwayat, dan sandi dari peramban lain.", "manual_migration_cancel_button": "Tidak, Terima kasih", - "manual_migration_import_button": "Impor Sekarang", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Impor Sekarang" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html index 8cb5200f9feb..bc303710c1e5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Siti principali

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Consigliati da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Argomenti popolari:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          In evidenza

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Siti principali

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Consigliati da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Argomenti popolari:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            In evidenza

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js index e2255bd26617..4069c24a8030 100644 --- a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Non c'è altro. Controlla più tardi per altre storie da {provider}. Non vuoi aspettare? Seleziona un argomento tra quelli più popolari per scoprire altre notizie interessanti dal Web.", "manual_migration_explanation2": "Prova Firefox con i segnalibri, la cronologia e le password di un altro browser.", "manual_migration_cancel_button": "No grazie", - "manual_migration_import_button": "Importa adesso", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importa adesso" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html index 47f98d27e7bf..53c599d4500d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            トップサイト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket のおすすめ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            人気のトピック:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ハイライト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              トップサイト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket のおすすめ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              人気のトピック:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ハイライト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js index 4f606248ff67..da73834a77ef 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "すべて既読です。また後で戻って {provider} からのおすすめ記事をチェックしてください。もし待ちきれないなら、人気のトピックを選択すれば、他にもウェブ上の優れた記事を見つけられます。", "manual_migration_explanation2": "他のブラウザーからブックマークや履歴、パスワードを取り込んで Firefox を使ってみましょう。", "manual_migration_cancel_button": "今はしない", - "manual_migration_import_button": "今すぐインポート", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "今すぐインポート" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html index 628ad71a8a90..adbbe8790095 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                რჩეული საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                რეკომენდებულია Pocket-ის მიერ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                პოპულარული თემები:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  მნიშვნელოვანი საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  რჩეული საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  რეკომენდებულია Pocket-ის მიერ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  პოპულარული თემები:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    მნიშვნელოვანი საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js index b97ad254602f..bca1eb51e803 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "უკვე ყველაფერი წაკითხული გაქვთ. {provider}-იდან ახალი რჩეული სტატიების მისაღებად, მოგვიანებით შემოიარეთ. თუ ვერ ითმენთ, აირჩიეთ რომელიმე მოთხოვნადი თემა, ახალი საინტერესო სტატიების მოსაძიებლად.", "manual_migration_explanation2": "გადმოიტანეთ სხვა ბრაუზერებიდან თქვენი სანიშნები, ისტორია და პაროლები Firefox-ში.", "manual_migration_cancel_button": "არა, გმადლობთ", - "manual_migration_import_button": "ახლავე გადმოტანა", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ახლავე გადმოტანა" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html index 2fdf9c755f1e..d74c51076033 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ismal ifazen

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Iwelleh-it-id Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Isental ittwasnen aṭas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Asebrureq

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Ismal ifazen

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Iwelleh-it-id Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Isental ittwasnen aṭas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Asebrureq

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js index dd6f7f769ce4..f4d759f1df41 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ulac wiyaḍ. Uɣal-d ticki s wugar n imagraden seg {provider}. Ur tebɣiḍ ara ad terǧuḍ? Fren asentel seg wid yettwasnen akken ad twaliḍ imagraden yelhan di Web.", "manual_migration_explanation2": "Σreḍ Firefox s ticṛaḍ n isebtar, amazray akked awalen uffiren sγur ilinigen nniḍen.", "manual_migration_cancel_button": "Ala, tanemmirt", - "manual_migration_import_button": "Kter tura", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Kter tura" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html index d3f07e6380e0..4a28dc6769b1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Үздік сайттар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ұсынушы Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Әйгілі тақырыптар:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ерекше жаңалықтар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Үздік сайттар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ұсынушы Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Әйгілі тақырыптар:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Ерекше жаңалықтар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js index 2e5095eedebe..4e5215352f00 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Дайын. {provider} ұсынған көбірек мақалаларды алу үшін кейінірек тексеріңіз. Күте алмайсыз ба? Интернеттен көбірек тамаша мақалаларды алу үшін әйгілі теманы таңдаңыз.", "manual_migration_explanation2": "Firefox қолданбасын басқа браузер бетбелгілері, тарихы және парольдерімен қолданып көріңіз.", "manual_migration_cancel_button": "Жоқ, рахмет", - "manual_migration_import_button": "Қазір импорттау", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Қазір импорттау" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html index 51a112c8bf8e..eaaba600f3b7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            វិបសាយ​លើ​គេ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            បានណែនាំដោយ Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ប្រធានបទកំពុងពេញនិយម៖

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              រឿងសំខាន់ៗ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              វិបសាយ​លើ​គេ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              បានណែនាំដោយ Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ប្រធានបទកំពុងពេញនិយម៖

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                រឿងសំខាន់ៗ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js index f3ff78cd257d..26c2acdad370 100644 --- a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "សាកល្បងប្រើ Firefox ជាមួយចំណាំ ប្រវត្តិ និងពាក្យសម្ងាត់ពីកម្មវិធីរុករកផ្សេងទៀត។", "manual_migration_cancel_button": "ទេ អរគុណ", - "manual_migration_import_button": "នាំចូលឥឡូវនេះ", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "នាំចូលឥឡូវនេះ" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html index ccc9b34e6b0f..10bb46de6e6e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ಪ್ರಮುಖ ತಾಣಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket ರಿಂದ ಶಿಫಾರಸುಮಾಡುಲಾಗಿದೆ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ಜನಪ್ರಿಯವಾದ ವಿಷಯಗಳು:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ಮುಖ್ಯಾಂಶಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ಪ್ರಮುಖ ತಾಣಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket ರಿಂದ ಶಿಫಾರಸುಮಾಡುಲಾಗಿದೆ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ಜನಪ್ರಿಯವಾದ ವಿಷಯಗಳು:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ಮುಖ್ಯಾಂಶಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js index d89f660451f8..bc7a782435de 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ಪರವಾಗಿಲ್ಲ", - "manual_migration_import_button": "ಈಗ ಆಮದು ಮಾಡು", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ಈಗ ಆಮದು ಮಾಡು" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html index 91ffd586a1b6..465320c4a1cf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    상위 사이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket 추천

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    인기 주제:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      하이라이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      상위 사이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket 추천

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      인기 주제:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        하이라이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js index 0106972b3e78..1eed5d748af3 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "다 왔습니다. {provider}에서 제공하는 주요 기사를 다시 확인해 보세요. 기다릴 수가 없나요? 주제를 선택하면 웹에서 볼 수 있는 가장 재미있는 글을 볼 수 있습니다.", "manual_migration_explanation2": "다른 브라우저에 있는 북마크, 기록, 비밀번호를 사용해 Firefox를 이용해 보세요.", "manual_migration_cancel_button": "괜찮습니다", - "manual_migration_import_button": "지금 가져오기", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "지금 가져오기" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html index cd0820b4832b..30dfe466f5d8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        I megio sciti

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          In evidensa

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          I megio sciti

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            In evidensa

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js index 0a274e725087..1e1e626860dc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js @@ -97,8 +97,6 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "Çerni cöse ti veu vedde quande t'arvi 'n neuvo feuggio.", "settings_pane_highlights_body": "Veddi i elementi ciù neuvi inta stöia e i urtimi segnalibbri creæ." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html index 302a08c6bd16..1f34df06c9b7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ເວັບໄຊຕ໌ຍອດນິຍົມ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ຫົວຂໍ້ຍອດນິຍົມ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ລາຍການເດັ່ນ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ເວັບໄຊຕ໌ຍອດນິຍົມ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ຫົວຂໍ້ຍອດນິຍົມ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ລາຍການເດັ່ນ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js index 24485e3fd240..5b8e9a42141b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ບໍ່, ຂອບໃຈ", - "manual_migration_import_button": "ນຳເຂົ້າຕອນນີ້", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ນຳເຂົ້າຕອນນີ້" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html index 209ea2fbf020..709482cc6e3e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Lankomiausios svetainės

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rekomendavo „Pocket“

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populiarios temos:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Akcentai

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Lankomiausios svetainės

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rekomendavo „Pocket“

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populiarios temos:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Akcentai

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js index eba57bb88b7d..812001cc0722 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Viską perskaitėte. Užsukite vėliau, norėdami rasti daugiau gerų straipsnių iš „{provider}“. Nekantraujate? Pasirinkite populiarią temą, norėdami rasti daugiau puikių straipsnių saityne.", "manual_migration_explanation2": "Išbandykite „Firefox“ su adresynu, žurnalu bei slaptažodžiais iš kitos naršyklės.", "manual_migration_cancel_button": "Ačiū, ne", - "manual_migration_import_button": "Importuoti dabar", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importuoti dabar" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html index be6036e0dccf..16f507cfbd7a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularōkōs lopys

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket īsaceitōs

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularas tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Izraudzeitī

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularōkōs lopys

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket īsaceitōs

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularas tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Izraudzeitī

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js index f7f27fae0ce9..39d2dc6da221 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Esi vysu izlasiejs. Īej vāļōk, kab redzēt vaira ziņu nu {provider}. Nagribi gaidēt? Izavielej popularu tēmu, kab atrostu vaira interesantu rokstu nu vysa interneta.", "manual_migration_explanation2": "Paraugi Firefox ar grōmotzeimem, viesturi un parolem nu cyta porlyuka.", "manual_migration_cancel_button": "Nā, paļdis", - "manual_migration_import_button": "Importeit", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importeit" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html index 94455a418109..a481be39955f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populārākās lapas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Iesaka Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populārās tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Aktualitātes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populārākās lapas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Iesaka Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populārās tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Aktualitātes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js index cfa3bebf5a7a..26f300d3b02b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Viss ir apskatīts! Atnāciet atpakaļ nedaudz vēlāk, lai redzētu populāros stāstus no {provider}. Nevarat sagaidīt? Izvēlieties kādu no tēmām jau tagad.", "manual_migration_explanation2": "Izmēģiniet Firefox ar grāmatzīmēm, vēsturi un parolēm no cita pārlūka.", "manual_migration_cancel_button": "Nē, paldies", - "manual_migration_import_button": "Importē tagad", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importē tagad" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html index 405cbbab0333..a5e0b4a093fc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Популарни мрежни места

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Препорачано од Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Популарни теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Интереси

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Популарни мрежни места

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Препорачано од Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Популарни теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Интереси

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js index 5e8ba99a5085..b5bd17daddb1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Имате видено сѐ! Навратете се подоцна за нови содржини од {provider}. Не можете да чекате? Изберете популарна тема и откријте уште одлични содржини ширум Интернет.", "manual_migration_explanation2": "Пробајте го Firefox со обележувачите, историјата и лозинките на друг прелистувач.", "manual_migration_cancel_button": "Не, благодарам", - "manual_migration_import_button": "Увези сега", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Увези сега" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html index 148d90c945fe..ef637d89a8a3 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                മികച്ച സൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket ശുപാർശ ചെയ്തത്

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ജനപ്രിയ വിഷയങ്ങൾ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ഹൈലൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  മികച്ച സൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket ശുപാർശ ചെയ്തത്

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ജനപ്രിയ വിഷയങ്ങൾ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ഹൈലൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js index cfe76b2217d6..04d0b5a7bb43 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "നിങ്ങൾ ഇവിടെ വരെ എത്തി. {Provider}ൽ നിന്നുള്ള കൂടുതൽ പ്രധാന വാർത്തകൾക്കായി പിന്നീട് വീണ്ടും പരിശോധിക്കുക. കാത്തിരിക്കാൻ പറ്റില്ലേ? വെബിൽ നിന്ന് കൂടുതൽ മികച്ച കഥകൾ കണ്ടെത്തുന്നതിന് ഒരു ജനപ്രിയ വിഷയം തിരഞ്ഞെടുക്കുക.", "manual_migration_explanation2": "മറ്റൊരു ബ്രൗസറിൽ നിന്നുള്ള ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ എന്നിവ ഉപയോഗിച്ച് ഫയർഫോക്സ് പരീക്ഷിക്കുക.", "manual_migration_cancel_button": "വേണ്ട, നന്ദി", - "manual_migration_import_button": "ഇപ്പോൾ ഇറക്കുമതി ചെയ്യുക", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ഇപ്പോൾ ഇറക്കുമതി ചെയ്യുക" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html index 4d737e765da1..1daf76efcb7d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    खास साईट्स

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ठळक

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      खास साईट्स

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ठळक

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js index c7125f27a9b1..2fa51c2834a2 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js @@ -97,7 +97,5 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "नवीन टॅब उघडल्यानंतर काय दिसायला हवे ते निवडा." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html index 1766baaf2f53..70c7185c4d8c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Laman Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Disyorkan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Topik Popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Serlahan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Laman Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Disyorkan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Topik Popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Serlahan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js index 373a68e6f781..c833b6c7cac1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Anda sudah di sini. Tapi sila datang lagi untuk mendapatkan lebih banyak berita hangat daripada {provider}. Tidak boleh tunggu? Pilih topik untuk mendapatkannya dari serata dunia.", "manual_migration_explanation2": "Cuba Firefox dengan tandabuku, sejarah dan kata laluan yang disimpan dalam pelayar lain.", "manual_migration_cancel_button": "Tidak, Terima kasih", - "manual_migration_import_button": "Import Sekarang", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Import Sekarang" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html index 191eafb0b454..75bcf4748482 100644 --- a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            အများဆုံးသုံးဆိုက်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket က အကြံပြုထားသည်

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            လူကြိုက်များခေါင်းစဉ်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ဦးစားပေးအကြောင်းအရာများ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              အများဆုံးသုံးဆိုက်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket က အကြံပြုထားသည်

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              လူကြိုက်များခေါင်းစဉ်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ဦးစားပေးအကြောင်းအရာများ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js index 43b9e314f5a6..13f5af336f75 100644 --- a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "အခြားဘရောင်ဇာမှ စာမှတ်များ၊ မှတ်တမ်းများ၊ စကားဝှက်များနှင့်အတူ Firefox တွင် စမ်းသုံးကြည့်ပါ။", "manual_migration_cancel_button": "မလိုတော့ပါ၊ ကျေးဇူးတင်ပါသည်။", - "manual_migration_import_button": "ထည့်သွင်းရန်", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ထည့်သွင်းရန်" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html index 21c24e8f9599..ddad57f27bd2 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Anbefalt av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Høydepunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Anbefalt av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Høydepunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js index 5d319d47cb91..39fbbf6291a0 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Du har tatt igjen. Kom tilbake senere for flere topphistorier fra {provider}. Kan du ikke vente? Velg et populært emne for å finne flere gode artikler fra hele Internett.", "manual_migration_explanation2": "Prøv Firefox med bokmerkene, historikk og passord fra en annen nettleser.", "manual_migration_cancel_button": "Nei takk", - "manual_migration_import_button": "Importer nå", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importer nå" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html index 05dab86d2f05..7ec3e2282ac6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    शीर्ष साइटहरु

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket द्वारा सिफारिस गरिएको

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    लोकप्रिय शीर्षकहरू:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      विशेषताहरू

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      शीर्ष साइटहरु

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket द्वारा सिफारिस गरिएको

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      लोकप्रिय शीर्षकहरू:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        विशेषताहरू

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js index 56bfd2578183..e7c9db8eb8b2 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "पर्दैन, धन्यबाद", - "manual_migration_import_button": "अहिले आयात गर्नुहोस्", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "अहिले आयात गर्नुहोस्" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html index 9a1acc4e68fe..6ffa9ce69075 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Aanbevolen door Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populaire onderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Aanbevolen door Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populaire onderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js index c15a02245d8d..137efd9a9aa1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "U bent weer bij. Kijk later nog eens voor meer topverhalen van {provider}. Kunt u niet wachten? Selecteer een populair onderwerp voor meer geweldige verhalen van het hele web.", "manual_migration_explanation2": "Probeer Firefox met de bladwijzers, geschiedenis en wachtwoorden van een andere browser.", "manual_migration_cancel_button": "Nee bedankt", - "manual_migration_import_button": "Nu importeren", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Nu importeren" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html index 178d48509767..e5e587c937d2 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Tilrådd av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Populære emne:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Høgdepunkt

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Tilrådd av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Populære emne:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Høgdepunkt

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js index cbf083531fd8..b1adaa98be41 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Det finst ikkje fleire. Kom tilbake seinare for fleire topphistoriar frå {provider}. Kan du ikkje vente? Vel eit populært emne for å finne fleire gode artiklar frå heile nettet.", "manual_migration_explanation2": "Prøv Firefox med bokmerka, historikk og passord frå ein annan nettlesar.", "manual_migration_cancel_button": "Nei takk", - "manual_migration_import_button": "Importer no", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importer no" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html index d6284170e1e7..911a2d887494 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ਸੁਰਖੀਆਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ਸੁਰਖੀਆਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js index 2baef6950049..1003d242e4ce 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ਨਹੀਂ, ਧੰਨਵਾਦ", - "manual_migration_import_button": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html index 8a52082a08cc..30519b7fd13a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularne

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Poleca: Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularne tematy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wyróżnione

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularne

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Poleca: Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularne tematy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wyróżnione

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js index 409cd84bc71b..04dac3f4d334 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To na razie wszystko. {provider} później będzie mieć więcej popularnych artykułów. Nie możesz się doczekać? Wybierz popularny temat, aby znaleźć więcej artykułów z całego Internetu.", "manual_migration_explanation2": "Używaj Firefoksa z zakładkami, historią i hasłami z innej przeglądarki.", "manual_migration_cancel_button": "Nie, dziękuję", - "manual_migration_import_button": "Importuj teraz", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importuj teraz" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html index 1458c44bc385..e7f91dd194fa 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Sites preferidos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Sites preferidos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js index ed9bc8e0ce70..315db11d66ef 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Você já viu tudo. Volte mais tarde para mais histórias do {provider}. Não consegue esperar? Escolha um assunto popular para encontrar mais grandes histórias através da web.", "manual_migration_explanation2": "Experimente o Firefox com os favoritos, histórico e senhas salvas em outro navegador.", "manual_migration_cancel_button": "Não, obrigado", - "manual_migration_import_button": "Importar agora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar agora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html index 9f10a7760ef5..ce83f92725ff 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sites mais visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sites mais visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js index 853005b90d27..f489c56f84bf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Já apanhou tudo. Verifique mais tarde para mais histórias principais de {provider}. Não pode esperar? Selecione um tópico popular para encontrar mais boas histórias de toda a web.", "manual_migration_explanation2": "Experimente o Firefox com marcadores, histórico e palavras-passe de outro navegador.", "manual_migration_cancel_button": "Não, obrigado", - "manual_migration_import_button": "Importar agora", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar agora" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html index 2b80269d0ae9..1a10d0a29196 100644 --- a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Paginas preferidas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recumandà da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Temas populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Accents

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Paginas preferidas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recumandà da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Temas populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Accents

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js index 7e23403ee60c..0774ea3e3bae 100644 --- a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ussa has ti legì tut las novitads. Turna pli tard per ulteriuras novitads da {provider}. Na pos betg spetgar? Tscherna in tema popular per chattar ulteriuras istorgias ord il web.", "manual_migration_explanation2": "Emprova Firefox cun ils segnapaginas, la cronologia ed ils pleds-clav importads d'in auter navigatur.", "manual_migration_cancel_button": "Na, grazia", - "manual_migration_import_button": "Importar ussa", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importar ussa" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html index 2174d5b892ce..5f16a4c37299 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Site-uri de top

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recomandat de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Subiecte populare:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Evidențieri

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Site-uri de top

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recomandat de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Subiecte populare:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Evidențieri

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js index 47ba2bb02399..121bfeb2cb0b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ai ajuns la capăt. Revino mai târziu pentru alte articole de la {provider}. Nu mai vrei să aștepți? Alege un subiect popular și găsește alte articole interesante de pe web.", "manual_migration_explanation2": "Încearcă Firefox cu marcajele, istoricul și parolele din alt navigator.", "manual_migration_cancel_button": "Nu, mulțumesc", - "manual_migration_import_button": "Importă acum", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importă acum" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html index 89771940a0f4..9f4d6587f0ca 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Топ сайтов

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярные темы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Избранное

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Топ сайтов

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярные темы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Избранное

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js index 7c2719cd963d..af28459ea278 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Вы всё прочитали. Зайдите попозже, чтобы увидеть больше лучших статей от {provider}. Не можете ждать? Выберите популярную тему, чтобы найти больше интересных статей со всего Интернета.", "manual_migration_explanation2": "Попробуйте Firefox с закладками, историей и паролями из другого браузера.", "manual_migration_cancel_button": "Нет, спасибо", - "manual_migration_import_button": "Импортировать сейчас", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Импортировать сейчас" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html index c5387ba6dc27..a5fdbf4ece7f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ප්‍රමුඛ අඩවි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket විසින් නිර්දේශිතයි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ජනප්‍රිය මාතෘකා:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ඉස්මතු කිරීම්

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ප්‍රමුඛ අඩවි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket විසින් නිර්දේශිතයි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ජනප්‍රිය මාතෘකා:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ඉස්මතු කිරීම්

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js index cfc3c8b85465..4f045b3470b0 100644 --- a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Firefox වෙනත් ගවේශයකය පිටය සලකුණු, අතීතය සහ මුරපද සමග උත්සාහ කර බලන්න.", "manual_migration_cancel_button": "එපා, ස්තුතියි", - "manual_migration_import_button": "දැන් ආයාත කරන්න", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "දැන් ආයාත කරන්න" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html index 44d4b27071bb..9cabb71df99c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Odporúča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populárne témy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Vybrané stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Odporúča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populárne témy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Vybrané stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js index 5be01623d39e..bdc9e7f89993 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Už ste prečítali všetko. Ďalšie príbehy zo služby {provider} tu nájdete opäť neskôr. Nemôžete sa dočkať? Vyberte si populárnu tému a pozrite sa na ďalšie skvelé príbehy z celého webu.", "manual_migration_explanation2": "Vyskúšajte Firefox so záložkami, históriou prehliadania a heslami s iných prehliadačov.", "manual_migration_cancel_button": "Nie, ďakujem", - "manual_migration_import_button": "Importovať teraz", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importovať teraz" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html index 996b3c87e6fa..22a86f693ccf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Glavne strani

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Priporoča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Priljubljene teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Poudarki

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Glavne strani

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Priporoča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Priljubljene teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Poudarki

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js index 609095ff1c85..8c04e84fa51e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Zdaj ste seznanjeni z novicami. Vrnite se pozneje in si oglejte nove prispevke iz {provider}. Komaj čakate? Izberite priljubljeno temo in odkrijte več velikih zgodb na spletu.", "manual_migration_explanation2": "Preskusite Firefox z zaznamki, zgodovino in gesli iz drugega brskalnika.", "manual_migration_cancel_button": "Ne, hvala", - "manual_migration_import_button": "Uvozi zdaj", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Uvozi zdaj" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html index 2ddd500629ed..13f17adeb58c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Sajte Kryesues

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Rekomanduar nga Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Tema Popullore:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Sajte Kryesues

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Rekomanduar nga Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Tema Popullore:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js index 726c37dd1e45..670e13ee9246 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js @@ -10,7 +10,7 @@ window.gActivityStreamStrings = { "header_recommended_by": "Rekomanduar nga {provider}", "header_bookmarks_placeholder": "Ende s’keni faqerojtës.", "header_stories_from": "nga", - "context_menu_button_sr": "Hapni menu konteksti për {title}", + "context_menu_button_sr": "Open context menu for {title}", "type_label_visited": "Të vizituara", "type_label_bookmarked": "Të faqeruajtura", "type_label_synced": "Njëkohësuar prej pajisjeje tjetër", @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "Përpunoni këtë sajt", "edit_topsites_dismiss_button": "Hidhe tej këtë sajt", "edit_topsites_add_button": "Shtoni", - "edit_topsites_add_button_tooltip": "Shtoni Sajt Kryesues", + "edit_topsites_add_button_tooltip": "Add Top Site", "topsites_form_add_header": "Sajt i Ri Kryesues", "topsites_form_edit_header": "Përpunoni Sajtin Kryesues", "topsites_form_title_placeholder": "Jepni një titull", @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Gjithë ç’kish, e dini. Rikontrolloni më vonë për më tepër histori nga {provider}. S’pritni dot? Përzgjidhni një temë popullore që të gjenden në internet më tepër histori të goditura.", "manual_migration_explanation2": "Provojeni Firefox-in me faqerojtës, historik dhe fjalëkalime nga një tjetër shfletues.", "manual_migration_cancel_button": "Jo, Faleminderit", - "manual_migration_import_button": "Importoje Tani", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importoje Tani" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html index 46e04572ff03..bd6f5b7e4856 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Омиљени сајтови

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Предложио Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Популарне теме:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Истакнуто

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Омиљени сајтови

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Предложио Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Популарне теме:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Истакнуто

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js index 9195367420a8..1740ae28ab6a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Вратите се касније за нове вести {provider}. Не можете дочекати? Изаберите популарну тему да пронађете још занимљивих вести из света.", "manual_migration_explanation2": "Пробајте FIrefox са коришћењем забелешки, историјата и лозинки из другог прегледача.", "manual_migration_cancel_button": "Не, хвала", - "manual_migration_import_button": "Увези сада", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Увези сада" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html index 60b47b9cc517..3ae0ab799a0a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Mest besökta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rekommenderas av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populära ämnen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Höjdpunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mest besökta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rekommenderas av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populära ämnen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Höjdpunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js index 36cb83669a24..2bcfee5fe91f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Det finns inte fler. Kom tillbaka senare för fler huvudnyheter från {provider}. Kan du inte vänta? Välj ett populärt ämne för att hitta fler bra nyheter från hela världen.", "manual_migration_explanation2": "Testa Firefox med bokmärken, historik och lösenord från en annan webbläsare.", "manual_migration_cancel_button": "Nej tack", - "manual_migration_import_button": "Importera nu", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Importera nu" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html index 18339b1d0cb4..a4def70a5ac7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    சிறந்த தளங்கள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket என்பவரால் பரிந்துரைக்கப்பட்டது

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    பிரபலமான தலைப்புகள்:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      மிளிர்ப்புகள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      சிறந்த தளங்கள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket என்பவரால் பரிந்துரைக்கப்பட்டது

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      பிரபலமான தலைப்புகள்:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        மிளிர்ப்புகள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js index fc6155ba2747..44d2fb486594 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "பரவாயில்லை", - "manual_migration_import_button": "இப்போது இறக்கு", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "இப்போது இறக்கு" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html index 6b55dbdb0b1c..649f728f8c63 100644 --- a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        మేటి సైట్లు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pocketచే సిఫార్సు చేయబడినది

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ప్రముఖ అంశాలు:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          విశేషాలు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          మేటి సైట్లు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pocketచే సిఫార్సు చేయబడినది

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ప్రముఖ అంశాలు:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            విశేషాలు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js index 309e440524fa..5b70d287646a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "మీరు పట్టుబడ్డారు. {provider} నుండి మరింత అగ్ర కథనాల కోసం తరువాత తనిఖీ చేయండి. వేచి ఉండలేరా? జాలములోని అంతటి నుండి మరింత గొప్ప కథనాలను కనుగొనడానికి ప్రసిద్ధ అంశం ఎంచుకోండి.", "manual_migration_explanation2": "మరొక విహారిణి లోని ఇష్టాంశాలు, చరిత్ర, సంకేతపదాలతో Firefoxను ప్రయత్నించండి.", "manual_migration_cancel_button": "అడిగినందుకు ధన్యవాదాలు, వద్దు", - "manual_migration_import_button": "ఇప్పుడే దిగుమతి చేయండి", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ఇప్పుడే దిగుమతి చేయండి" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html index e98a6d521fad..315421c30a02 100644 --- a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ไซต์เด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            แนะนำโดย Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            หัวข้อยอดนิยม:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              รายการเด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ไซต์เด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              แนะนำโดย Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              หัวข้อยอดนิยม:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                รายการเด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js index 5fc132dba9ca..abd5696009ee 100644 --- a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "แก้ไขไซต์นี้", "edit_topsites_dismiss_button": "ไม่สนใจไซต์นี้", "edit_topsites_add_button": "เพิ่ม", - "edit_topsites_add_button_tooltip": "เพิ่มไซต์เด่น", + "edit_topsites_add_button_tooltip": "Add Top Site", "topsites_form_add_header": "ไซต์เด่นใหม่", "topsites_form_edit_header": "แก้ไขไซต์เด่น", "topsites_form_title_placeholder": "ป้อนชื่อเรื่อง", @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "คุณได้อ่านเรื่องราวครบทั้งหมดแล้ว คุณสามารถกลับมาตรวจดูเรื่องราวเด่นจาก {provider} ได้ภายหลัง อดใจรอไม่ได้งั้นหรือ? เลือกหัวข้อยอดนิยมเพื่อค้นหาเรื่องราวที่ยอดเยี่ยมจากเว็บต่าง ๆ", "manual_migration_explanation2": "ลอง Firefox ด้วยที่คั่นหน้า, ประวัติ และรหัสผ่านจากเบราว์เซอร์อื่น", "manual_migration_cancel_button": "ไม่ ขอบคุณ", - "manual_migration_import_button": "นำเข้าตอนนี้", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "นำเข้าตอนนี้" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html index baffebc18703..4aed35a4d776 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Tuktok na mga Site

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Inirekomenda ni Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Tanyag na mga paksa:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Naka-highlight

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Tuktok na mga Site

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Inirekomenda ni Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Tanyag na mga paksa:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Naka-highlight

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js index 3dfb49051ab9..25d578fdf2b2 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Nakahabol ka na. Bumalik sa ibang pagkakataon para sa higit pang mga nangungunang kuwento mula sa {provider}. Hindi makapaghintay? Pumili ng isang tanyag na paksa upang makahanap ng higit pang mahusay na mga kuwento mula sa buong web.", "manual_migration_explanation2": "Subukan ang Firefox gamit ang mga bookmark, kasaysayan at mga password mula sa isa pang browser.", "manual_migration_cancel_button": "Salamat na lang", - "manual_migration_import_button": "Angkatin Ngayon", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Angkatin Ngayon" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html index 48d70c22e864..2616509e9fce 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Sık Kullanılan Siteler

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket öneriyor

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popüler konular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Öne Çıkanlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sık Kullanılan Siteler

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket öneriyor

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popüler konular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Öne Çıkanlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js index fd5687cc96f6..9ee44ff2d3e7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Hepsini bitirdiniz. Yeni {provider} haberleri için daha fazla yine gelin. Beklemek istemiyor musunuz? İlginç yazılara ulaşmak için popüler konulardan birini seçebilirsiniz.", "manual_migration_explanation2": "Öteki tarayıcılarınızdaki yer imlerinizi, geçmişinizi ve parolalarınızı Firefox’a aktarabilirsiniz.", "manual_migration_cancel_button": "Gerek yok", - "manual_migration_import_button": "Olur, aktaralım", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Olur, aktaralım" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html index 678fc35bc68d..eebf154fba91 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярні сайти

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярні теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Обране

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярні сайти

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярні теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Обране

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js index fa8f1435be5b..ce5fea6781d5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Готово. Перевірте згодом, щоб побачити більше матеріалів від {provider}. Не хочете чекати? Оберіть популярну тему, щоб знайти більше цікавих матеріалів з усього Інтернету.", "manual_migration_explanation2": "Спробуйте Firefox із закладками, історією та паролями з іншого браузера.", "manual_migration_cancel_button": "Ні, дякую", - "manual_migration_import_button": "Імпортувати зараз", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Імпортувати зараз" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html index 67730533c8ce..bf7f33fb6826 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            بہترین سائٹیں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket کی جانب سے تجویز کردہ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            مشہور مضامین:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              شہ سرخياں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              بہترین سائٹیں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket کی جانب سے تجویز کردہ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              مشہور مضامین:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                شہ سرخياں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js index d23eed48ca53..511ebfa071fc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "نہیں شکریہ", - "manual_migration_import_button": "ابھی درآمد کری", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "ابھی درآمد کری" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html index c3e33e340450..33074817b78d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ommabop saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket tomonidan tavsiya qilingan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Mashhur mavzular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ajratilgan saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ommabop saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket tomonidan tavsiya qilingan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mashhur mavzular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ajratilgan saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js index 7f85d50f61c7..a0edbe3954b8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "Yoʻq, kerak emas", - "manual_migration_import_button": "Hozir import qilish", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Hozir import qilish" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html index e5e1a79cb1a4..26292ed74daf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Trang web hàng đầu

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Được đề nghị bởi Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Các chủ đề phổ biến:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Nổi bật

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Trang web hàng đầu

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Được đề nghị bởi Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Các chủ đề phổ biến:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Nổi bật

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js index 35464dab4702..92361d5b7ff9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Thử Firefox với trang đánh dấu, lịch sử và mật khẩu từ trình duyệt khác.", "manual_migration_cancel_button": "Không, cảm ơn", - "manual_migration_import_button": "Nhập ngay bây giờ", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "Nhập ngay bây giờ" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html index 708afb4d6047..9f556f76de5e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        常用网站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pocket 推荐

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        热门主题:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          集锦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          常用网站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pocket 推荐

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          热门主题:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            集锦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js index 157e7d788f50..9d7edb1457ba 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "所有文章都读完啦!晚点再来,{provider} 将推荐更多热门文章。等不及了?选择一个热门话题,找到更多网上的好文章。", "manual_migration_explanation2": "把在其他浏览器中保存的书签、历史记录和密码带到 Firefox 吧。", "manual_migration_cancel_button": "不用了", - "manual_migration_import_button": "立即导入", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "立即导入" }; diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html index 9a86c74c707e..724ab6ba9a2b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            熱門網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket 推薦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            熱門主題:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              精選網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              熱門網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket 推薦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              熱門主題:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                精選網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js index aa961feff52c..675c3901b889 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js @@ -96,7 +96,5 @@ window.gActivityStreamStrings = { "topstories_empty_state": "所有文章都讀完啦!晚點再來,{provider} 將提供更多推薦故事。等不及了?選擇熱門主題,看看 Web 上各式精采資訊。", "manual_migration_explanation2": "試試將其他瀏覽器的書籤、瀏覽記錄與密碼匯入 Firefox。", "manual_migration_cancel_button": "不必了", - "manual_migration_import_button": "立即匯入", - "error_fallback_default_info": "Oops, something went wrong loading this content.", - "error_fallback_default_refresh_suggestion": "Refresh page to try again." + "manual_migration_import_button": "立即匯入" }; diff --git a/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html b/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html index 3bec46f23f74..5b9455cf448f 100644 --- a/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html +++ b/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/test/schemas/pings.js b/browser/extensions/activity-stream/test/schemas/pings.js index e064a1dd0106..7eca2638a6ab 100644 --- a/browser/extensions/activity-stream/test/schemas/pings.js +++ b/browser/extensions/activity-stream/test/schemas/pings.js @@ -13,14 +13,6 @@ export const baseKeys = { export const BasePing = Joi.object().keys(baseKeys).options({allowUnknown: true}); -export const eventsTelemetryExtraKeys = Joi.object().keys({ - session_id: baseKeys.session_id.required(), - page: baseKeys.page.required(), - addon_version: baseKeys.addon_version.required(), - user_prefs: baseKeys.user_prefs.required(), - action_position: Joi.string().optional() -}).options({allowUnknown: false}); - export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { session_id: baseKeys.session_id.required(), page: baseKeys.page.required(), @@ -32,31 +24,6 @@ export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { recommender_type: Joi.string() })); -export const UTUserEventPing = Joi.array().items( - Joi.string().required().valid("activity_stream"), - Joi.string().required().valid("event"), - Joi.string().required().valid([ - "CLICK", - "SEARCH", - "BLOCK", - "DELETE", - "DELETE_CONFIRM", - "DIALOG_CANCEL", - "DIALOG_OPEN", - "OPEN_NEW_WINDOW", - "OPEN_PRIVATE_WINDOW", - "OPEN_NEWTAB_PREFS", - "CLOSE_NEWTAB_PREFS", - "BOOKMARK_DELETE", - "BOOKMARK_ADD", - "PIN", - "UNPIN", - "SAVE_TO_POCKET" - ]), - Joi.string().required(), - eventsTelemetryExtraKeys -); - // Use this to validate actions generated from Redux export const UserEventAction = Joi.object().keys({ type: Joi.string().required(), @@ -183,14 +150,6 @@ export const SessionPing = Joi.object().keys(Object.assign({}, baseKeys, { }).required() })); -export const UTSessionPing = Joi.array().items( - Joi.string().required().valid("activity_stream"), - Joi.string().required().valid("end"), - Joi.string().required().valid("session"), - Joi.string().required(), - eventsTelemetryExtraKeys -); - export function chaiAssertions(_chai, utils) { const {Assertion} = _chai; diff --git a/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx b/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx index 566c0caea60b..b4055f0d01bf 100644 --- a/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx +++ b/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx @@ -35,16 +35,4 @@ describe("prerender", () => { const state = store.getState(); assert.equal(state.App.initialized, false); }); - - it("should throw if zero-length HTML content is returned", () => { - const boundPrerender = prerender.bind(null, "en-US", messages, () => ""); - - assert.throws(boundPrerender, Error, /no HTML returned/); - }); - - it("should throw if falsy HTML content is returned", () => { - const boundPrerender = prerender.bind(null, "en-US", messages, () => null); - - assert.throws(boundPrerender, Error, /no HTML returned/); - }); }); diff --git a/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js b/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js index 512bad57fcf3..921c5edb3683 100644 --- a/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js @@ -230,16 +230,16 @@ describe("ActivityStreamMessageChannel", () => { let sandbox; beforeEach(() => { sandbox = sinon.sandbox.create(); - sandbox.spy(global.Cu, "reportError"); + sandbox.spy(global.Components.utils, "reportError"); }); afterEach(() => sandbox.restore()); it("should report an error if the msg.data is missing", () => { mm.onMessage({target: {portID: "foo"}}); - assert.calledOnce(global.Cu.reportError); + assert.calledOnce(global.Components.utils.reportError); }); it("should report an error if the msg.data.type is missing", () => { mm.onMessage({target: {portID: "foo"}, data: "foo"}); - assert.calledOnce(global.Cu.reportError); + assert.calledOnce(global.Components.utils.reportError); }); it("should call onActionFromContent", () => { sinon.stub(mm, "onActionFromContent"); diff --git a/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js index 2c9afa54311e..23ed69af5253 100644 --- a/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js @@ -10,7 +10,7 @@ describe("filterAdult", () => { init: sinon.stub(), update: sinon.stub() }; - global.Cc["@mozilla.org/security/hash;1"] = { + global.Components.classes["@mozilla.org/security/hash;1"] = { createInstance() { return hashStub; } diff --git a/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js index f0374ccea1c2..b3bd5381da97 100644 --- a/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js @@ -42,19 +42,19 @@ describe("PlacesFeed", () => { } }); globals.set("Pocket", {savePage: sandbox.spy()}); - global.Cc["@mozilla.org/browser/nav-history-service;1"] = { + global.Components.classes["@mozilla.org/browser/nav-history-service;1"] = { getService() { return global.PlacesUtils.history; } }; - global.Cc["@mozilla.org/browser/nav-bookmarks-service;1"] = { + global.Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"] = { getService() { return global.PlacesUtils.bookmarks; } }; sandbox.spy(global.Services.obs, "addObserver"); sandbox.spy(global.Services.obs, "removeObserver"); - sandbox.spy(global.Cu, "reportError"); + sandbox.spy(global.Components.utils, "reportError"); feed = new PlacesFeed(); feed.store = {dispatch: sinon.spy()}; @@ -336,7 +336,7 @@ describe("PlacesFeed", () => { const args = [null, "title", null, null, null, TYPE_BOOKMARK, null, FAKE_BOOKMARK.guid]; await observer.onItemChanged(...args); - assert.calledWith(global.Cu.reportError, e); + assert.calledWith(global.Components.utils.reportError, e); }); it.skip("should ignore events that are not of TYPE_BOOKMARK", async () => { await observer.onItemChanged(null, "title", null, null, null, "nottypebookmark"); diff --git a/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js b/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js index 46ad45cfe851..49218b226c93 100644 --- a/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js @@ -65,14 +65,14 @@ describe("SectionsManager", () => { }); describe("#addBuiltInSection", () => { it("should not report an error if options is undefined", () => { - globals.sandbox.spy(global.Cu, "reportError"); + globals.sandbox.spy(global.Components.utils, "reportError"); SectionsManager.addBuiltInSection("feeds.section.topstories", undefined); - assert.notCalled(Cu.reportError); + assert.notCalled(Components.utils.reportError); }); it("should report an error if options is malformed", () => { - globals.sandbox.spy(global.Cu, "reportError"); + globals.sandbox.spy(global.Components.utils, "reportError"); SectionsManager.addBuiltInSection("feeds.section.topstories", "invalid"); - assert.calledOnce(Cu.reportError); + assert.calledOnce(Components.utils.reportError); }); }); describe("#addSection", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js index 5e98f20782be..b4427707f718 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js @@ -25,7 +25,6 @@ describe("TelemetryFeed", () => { let instance; let clock; class PingCentre {sendPing() {} uninit() {}} - class UTEventReporting {sendUserEvent() {} sendSessionEndEvent() {} uninit() {}} class PerfService { getMostRecentAbsMarkStartByName() { return 1234; } mark() {} @@ -38,19 +37,15 @@ describe("TelemetryFeed", () => { USER_PREFS_ENCODING, PREF_IMPRESSION_ID, TELEMETRY_PREF - } = injector({ - "common/PerfService.jsm": {perfService}, - "lib/UTEventReporting.jsm": {UTEventReporting} - }); + } = injector({"common/PerfService.jsm": {perfService}}); beforeEach(() => { globals = new GlobalOverrider(); sandbox = globals.sandbox; clock = sinon.useFakeTimers(); - sandbox.spy(global.Cu, "reportError"); + sandbox.spy(global.Components.utils, "reportError"); globals.set("gUUIDGenerator", {generateUUID: () => FAKE_UUID}); globals.set("PingCentre", PingCentre); - globals.set("UTEventReporting", UTEventReporting); instance = new TelemetryFeed(); instance.store = store; }); @@ -63,9 +58,6 @@ describe("TelemetryFeed", () => { it("should add .pingCentre, a PingCentre instance", () => { assert.instanceOf(instance.pingCentre, PingCentre); }); - it("should add .utEvents, a UTEventReporting instance", () => { - assert.instanceOf(instance.utEvents, UTEventReporting); - }); it("should make this.browserOpenNewtabStart() observe browser-open-newtab-start", () => { sandbox.spy(Services.obs, "addObserver"); @@ -241,17 +233,13 @@ describe("TelemetryFeed", () => { it("should call createSessionSendEvent and sendEvent with the sesssion", () => { sandbox.stub(instance, "sendEvent"); sandbox.stub(instance, "createSessionEndEvent"); - sandbox.stub(instance.utEvents, "sendSessionEndEvent"); const session = instance.addSession("foo"); instance.endSession("foo"); // Did we call sendEvent with the result of createSessionEndEvent? assert.calledWith(instance.createSessionEndEvent, session); - - let sessionEndEvent = instance.createSessionEndEvent.firstCall.returnValue; - assert.calledWith(instance.sendEvent, sessionEndEvent); - assert.calledWith(instance.utEvents.sendSessionEndEvent, sessionEndEvent); + assert.calledWith(instance.sendEvent, instance.createSessionEndEvent.firstCall.returnValue); }); }); describe("ping creators", () => { @@ -536,13 +524,6 @@ describe("TelemetryFeed", () => { assert.calledOnce(stub); }); - it("should call .utEvents.uninit", () => { - const stub = sandbox.stub(instance.utEvents, "uninit"); - - instance.uninit(); - - assert.calledOnce(stub); - }); it("should remove the a-s telemetry pref listener", () => { FakePrefs.prototype.prefs[TELEMETRY_PREF] = true; instance = new TelemetryFeed(); @@ -559,7 +540,7 @@ describe("TelemetryFeed", () => { instance.uninit(); - assert.called(global.Cu.reportError); + assert.called(global.Components.utils.reportError); }); it("should make this.browserOpenNewtabStart() stop observing browser-open-newtab-start", async () => { await instance.init(); @@ -642,14 +623,12 @@ describe("TelemetryFeed", () => { it("should send an event on a TELEMETRY_USER_EVENT action", () => { const sendEvent = sandbox.stub(instance, "sendEvent"); const eventCreator = sandbox.stub(instance, "createUserEvent"); - const sendUserEvent = sandbox.stub(instance.utEvents, "sendUserEvent"); const action = {type: at.TELEMETRY_USER_EVENT}; instance.onAction(action); assert.calledWith(eventCreator, action); assert.calledWith(sendEvent, eventCreator.returnValue); - assert.calledWith(sendUserEvent, eventCreator.returnValue); }); it("should send an event on a TELEMETRY_PERFORMANCE_EVENT action", () => { const sendEvent = sandbox.stub(instance, "sendEvent"); diff --git a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js index 59aeef19fa1e..f645370838b3 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js @@ -9,7 +9,7 @@ import {Screenshots} from "lib/Screenshots.jsm"; const FAKE_FAVICON = "data987"; const FAKE_FAVICON_SIZE = 128; const FAKE_FRECENCY = 200; -const FAKE_LINKS = new Array(2 * TOP_SITES_MAX_SITES_PER_ROW).fill(null).map((v, i) => ({ +const FAKE_LINKS = new Array(TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW).fill(null).map((v, i) => ({ frecency: FAKE_FRECENCY, url: `http://www.site${i}.com` })); @@ -344,7 +344,7 @@ describe("Top Sites Feed", () => { const sites = await feed.getLinksWithDefaults(); - assert.lengthOf(sites, 2 * TOP_SITES_MAX_SITES_PER_ROW); + assert.lengthOf(sites, TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW); assert.equal(sites[0].url, fakeNewTabUtils.pinnedLinks.links[0].url); assert.equal(sites[1].url, fakeNewTabUtils.pinnedLinks.links[1].url); assert.equal(sites[0].hostname, sites[1].hostname); @@ -657,21 +657,17 @@ describe("Top Sites Feed", () => { const site4 = {url: "example.biz"}; const site5 = {url: "example.info"}; const site6 = {url: "example.news"}; - const site7 = {url: "example.lol"}; - const site8 = {url: "example.golf"}; - fakeNewTabUtils.pinnedLinks.links = [site1, site2, site3, site4, site5, site6, site7, site8]; + fakeNewTabUtils.pinnedLinks.links = [site1, site2, site3, site4, site5, site6]; feed.store.state.Prefs.values.topSitesRows = 1; const site = {url: "foo.bar", label: "foo"}; feed.insert({data: {site}}); - assert.equal(fakeNewTabUtils.pinnedLinks.pin.callCount, 8); + assert.equal(fakeNewTabUtils.pinnedLinks.pin.callCount, 6); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site, 0); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site1, 1); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site2, 2); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site3, 3); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site4, 4); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site5, 5); - assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site6, 6); - assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site7, 7); }); }); describe("#pin", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js index ebc29a0a5f15..bf6d0343ab2e 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js @@ -121,14 +121,14 @@ describe("Top Stories Feed", () => { assert.notCalled(fetchStub); }); it("should report error for invalid configuration", () => { - globals.sandbox.spy(global.Cu, "reportError"); + globals.sandbox.spy(global.Components.utils, "reportError"); sectionsManagerStub.sections.set("topstories", {options: {api_key_pref: "invalid"}}); instance.init(); - assert.called(Cu.reportError); + assert.called(Components.utils.reportError); }); it("should report error for missing api key", () => { - globals.sandbox.spy(global.Cu, "reportError"); + globals.sandbox.spy(global.Components.utils, "reportError"); sectionsManagerStub.sections.set("topstories", { options: { "stories_endpoint": "https://somedomain.org/stories?key=$apiKey", @@ -137,7 +137,7 @@ describe("Top Stories Feed", () => { }); instance.init(); - assert.called(Cu.reportError); + assert.called(Components.utils.reportError); }); it("should load data from cache on init", () => { instance.loadCachedData = sinon.spy(); @@ -207,7 +207,7 @@ describe("Top Stories Feed", () => { it("should report error for unexpected stories response", async () => { let fetchStub = globals.sandbox.stub(); globals.set("fetch", fetchStub); - globals.sandbox.spy(global.Cu, "reportError"); + globals.sandbox.spy(global.Components.utils, "reportError"); instance.stories_endpoint = "stories-endpoint"; fetchStub.resolves({ok: false, status: 400}); @@ -216,7 +216,7 @@ describe("Top Stories Feed", () => { assert.calledOnce(fetchStub); assert.calledWithExactly(fetchStub, instance.stories_endpoint); assert.notCalled(sectionsManagerStub.updateSection); - assert.called(Cu.reportError); + assert.called(Components.utils.reportError); }); it("should exclude blocked (dismissed) URLs", async () => { let fetchStub = globals.sandbox.stub(); @@ -283,7 +283,7 @@ describe("Top Stories Feed", () => { it("should report error for unexpected topics response", async () => { let fetchStub = globals.sandbox.stub(); globals.set("fetch", fetchStub); - globals.sandbox.spy(global.Cu, "reportError"); + globals.sandbox.spy(global.Components.utils, "reportError"); instance.topics_endpoint = "topics-endpoint"; fetchStub.resolves({ok: false, status: 400}); @@ -292,7 +292,7 @@ describe("Top Stories Feed", () => { assert.calledOnce(fetchStub); assert.calledWithExactly(fetchStub, instance.topics_endpoint); assert.notCalled(instance.store.dispatch); - assert.called(Cu.reportError); + assert.called(Components.utils.reportError); }); }); describe("#personalization", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js b/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js deleted file mode 100644 index a831f3752be1..000000000000 --- a/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js +++ /dev/null @@ -1,92 +0,0 @@ -import { - UTSessionPing, - UTUserEventPing -} from "test/schemas/pings"; -import {GlobalOverrider} from "test/unit/utils"; -import {UTEventReporting} from "lib/UTEventReporting.jsm"; - -const FAKE_EVENT_PING_PC = { - "event": "CLICK", - "source": "TOP_SITES", - "addon_version": "123", - "user_prefs": 63, - "session_id": "abc", - "page": "about:newtab", - "action_position": 5, - "locale": "en-US" -}; -const FAKE_SESSION_PING_PC = { - "session_duration": 1234, - "addon_version": "123", - "user_prefs": 63, - "session_id": "abc", - "page": "about:newtab", - "locale": "en-US" -}; -const FAKE_EVENT_PING_UT = [ - "activity_stream", "event", "CLICK", "TOP_SITES", { - "addon_version": "123", - "user_prefs": "63", - "session_id": "abc", - "page": "about:newtab", - "action_position": "5" - } -]; -const FAKE_SESSION_PING_UT = [ - "activity_stream", "end", "session", "1234", { - "addon_version": "123", - "user_prefs": "63", - "session_id": "abc", - "page": "about:newtab" - } -]; - -describe("UTEventReporting", () => { - let globals; - let sandbox; - let utEvents; - - beforeEach(() => { - globals = new GlobalOverrider(); - sandbox = globals.sandbox; - sandbox.stub(global.Services.telemetry, "setEventRecordingEnabled"); - sandbox.stub(global.Services.telemetry, "recordEvent"); - - utEvents = new UTEventReporting(); - }); - - afterEach(() => { - globals.restore(); - }); - - describe("#sendUserEvent()", () => { - it("should queue up the correct data to send to Events Telemetry", async () => { - utEvents.sendUserEvent(FAKE_EVENT_PING_PC); - assert.calledWithExactly(global.Services.telemetry.recordEvent, ...FAKE_EVENT_PING_UT); - - let ping = global.Services.telemetry.recordEvent.firstCall.args; - assert.validate(ping, UTUserEventPing); - }); - }); - - describe("#sendSessionEndEvent()", () => { - it("should queue up the correct data to send to Events Telemetry", async () => { - utEvents.sendSessionEndEvent(FAKE_SESSION_PING_PC); - assert.calledWithExactly(global.Services.telemetry.recordEvent, ...FAKE_SESSION_PING_UT); - - let ping = global.Services.telemetry.recordEvent.firstCall.args; - assert.validate(ping, UTSessionPing); - }); - }); - - describe("#uninit()", () => { - it("should call setEventRecordingEnabled with a false value", () => { - assert.equal(global.Services.telemetry.setEventRecordingEnabled.firstCall.args[0], "activity_stream"); - assert.equal(global.Services.telemetry.setEventRecordingEnabled.firstCall.args[1], true); - - utEvents.uninit(); - assert.equal(global.Services.telemetry.setEventRecordingEnabled.secondCall.args[0], "activity_stream"); - assert.equal(global.Services.telemetry.setEventRecordingEnabled.secondCall.args[1], false); - }); - }); -}); diff --git a/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js b/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js index 68166d33deb7..0415b7c5c7b8 100644 --- a/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js @@ -44,7 +44,7 @@ describe("User Domain Affinity Provider", () => { executeQuery: () => ({root: {childCount: 1, getChild: index => ({uri: "www.somedomain.org", accessCount: 1})}}) } }); - global.Cc["@mozilla.org/browser/nav-history-service;1"] = { + global.Components.classes["@mozilla.org/browser/nav-history-service;1"] = { getService() { return global.PlacesUtils.history; } diff --git a/browser/extensions/activity-stream/test/unit/unit-entry.js b/browser/extensions/activity-stream/test/unit/unit-entry.js index 2cf49a1de209..7b6e188dc28b 100644 --- a/browser/extensions/activity-stream/test/unit/unit-entry.js +++ b/browser/extensions/activity-stream/test/unit/unit-entry.js @@ -1,7 +1,8 @@ import {EventEmitter, FakePerformance, FakePrefs, GlobalOverrider} from "test/unit/utils"; -import Adapter from "enzyme-adapter-react-16"; +import Adapter from "enzyme-adapter-react-15"; import {chaiAssertions} from "test/schemas/pings"; import enzyme from "enzyme"; + enzyme.configure({adapter: new Adapter()}); // Cause React warnings to make tests that trigger them fail @@ -27,20 +28,23 @@ let overrider = new GlobalOverrider(); overrider.set({ AppConstants: {MOZILLA_OFFICIAL: true}, + Components: { + classes: {}, + interfaces: {nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5}}, + utils: { + import() {}, + importGlobalProperties() {}, + reportError() {}, + now: () => window.performance.now() + }, + isSuccessCode: () => true + }, ChromeUtils: { defineModuleGetter() {}, import() {} }, - Components: {isSuccessCode: () => true}, // eslint-disable-next-line object-shorthand ContentSearchUIController: function() {}, // NB: This is a function/constructor - Cc: {}, - Ci: {nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5}}, - Cu: { - importGlobalProperties() {}, - now: () => window.performance.now(), - reportError() {} - }, dump() {}, fetch() {}, // eslint-disable-next-line object-shorthand @@ -62,10 +66,6 @@ overrider.set({ addObserver() {}, removeObserver() {} }, - telemetry: { - setEventRecordingEnabled: () => {}, - recordEvent: eventDetails => {} - }, console: {logStringMessage: () => {}}, prefs: { addObserver() {}, diff --git a/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE b/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE deleted file mode 100644 index 188fb2b0bd8e..000000000000 --- a/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-present, Facebook, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/browser/extensions/activity-stream/vendor/react-dev.js b/browser/extensions/activity-stream/vendor/react-dev.js index 654f3a82b6d5..9f8f480fcf02 100644 --- a/browser/extensions/activity-stream/vendor/react-dev.js +++ b/browser/extensions/activity-stream/vendor/react-dev.js @@ -1,27 +1,3328 @@ -/** @license React v16.2.0 - * react.development.js + /** + * React v15.5.4 + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oHello World; + * } + * }); + * + * The class specification supports a specific protocol of methods that have + * special meaning (e.g. `render`). See `ReactClassInterface` for + * more the comprehensive protocol. Any other properties and methods in the + * class specification will be available on the prototype. + * + * @interface ReactClassInterface + * @internal + */ +var ReactClassInterface = { + + /** + * An array of Mixin objects to include when defining your component. + * + * @type {array} + * @optional + */ + mixins: 'DEFINE_MANY', + + /** + * An object containing properties and methods that should be defined on + * the component's constructor instead of its prototype (static methods). + * + * @type {object} + * @optional + */ + statics: 'DEFINE_MANY', + + /** + * Definition of prop types for this component. + * + * @type {object} + * @optional + */ + propTypes: 'DEFINE_MANY', + + /** + * Definition of context types for this component. + * + * @type {object} + * @optional + */ + contextTypes: 'DEFINE_MANY', + + /** + * Definition of context types this component sets for its children. + * + * @type {object} + * @optional + */ + childContextTypes: 'DEFINE_MANY', + + // ==== Definition methods ==== + + /** + * Invoked when the component is mounted. Values in the mapping will be set on + * `this.props` if that prop is not specified (i.e. using an `in` check). + * + * This method is invoked before `getInitialState` and therefore cannot rely + * on `this.state` or use `this.setState`. + * + * @return {object} + * @optional + */ + getDefaultProps: 'DEFINE_MANY_MERGED', + + /** + * Invoked once before the component is mounted. The return value will be used + * as the initial value of `this.state`. + * + * getInitialState: function() { + * return { + * isOn: false, + * fooBaz: new BazFoo() + * } + * } + * + * @return {object} + * @optional + */ + getInitialState: 'DEFINE_MANY_MERGED', + + /** + * @return {object} + * @optional + */ + getChildContext: 'DEFINE_MANY_MERGED', + + /** + * Uses props from `this.props` and state from `this.state` to render the + * structure of the component. + * + * No guarantees are made about when or how often this method is invoked, so + * it must not have side effects. + * + * render: function() { + * var name = this.props.name; + * return
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Hello, {name}!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ; + * } + * + * @return {ReactComponent} + * @required + */ + render: 'DEFINE_ONCE', + + // ==== Delegate methods ==== + + /** + * Invoked when the component is initially created and about to be mounted. + * This may have side effects, but any external subscriptions or data created + * by this method must be cleaned up in `componentWillUnmount`. + * + * @optional + */ + componentWillMount: 'DEFINE_MANY', + + /** + * Invoked when the component has been mounted and has a DOM representation. + * However, there is no guarantee that the DOM node is in the document. + * + * Use this as an opportunity to operate on the DOM when the component has + * been mounted (initialized and rendered) for the first time. + * + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidMount: 'DEFINE_MANY', + + /** + * Invoked before the component receives new props. + * + * Use this as an opportunity to react to a prop transition by updating the + * state using `this.setState`. Current props are accessed via `this.props`. + * + * componentWillReceiveProps: function(nextProps, nextContext) { + * this.setState({ + * likesIncreasing: nextProps.likeCount > this.props.likeCount + * }); + * } + * + * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop + * transition may cause a state change, but the opposite is not true. If you + * need it, you are probably looking for `componentWillUpdate`. + * + * @param {object} nextProps + * @optional + */ + componentWillReceiveProps: 'DEFINE_MANY', + + /** + * Invoked while deciding if the component should be updated as a result of + * receiving new props, state and/or context. + * + * Use this as an opportunity to `return false` when you're certain that the + * transition to the new props/state/context will not require a component + * update. + * + * shouldComponentUpdate: function(nextProps, nextState, nextContext) { + * return !equal(nextProps, this.props) || + * !equal(nextState, this.state) || + * !equal(nextContext, this.context); + * } + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @return {boolean} True if the component should update. + * @optional + */ + shouldComponentUpdate: 'DEFINE_ONCE', + + /** + * Invoked when the component is about to update due to a transition from + * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` + * and `nextContext`. + * + * Use this as an opportunity to perform preparation before an update occurs. + * + * NOTE: You **cannot** use `this.setState()` in this method. + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @param {ReactReconcileTransaction} transaction + * @optional + */ + componentWillUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component's DOM representation has been updated. + * + * Use this as an opportunity to operate on the DOM when the component has + * been updated. + * + * @param {object} prevProps + * @param {?object} prevState + * @param {?object} prevContext + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component is about to be removed from its parent and have + * its DOM representation destroyed. + * + * Use this as an opportunity to deallocate any external resources. + * + * NOTE: There is no `componentDidUnmount` since your component will have been + * destroyed by that point. + * + * @optional + */ + componentWillUnmount: 'DEFINE_MANY', + + // ==== Advanced methods ==== + + /** + * Updates the component's currently mounted DOM representation. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @internal + * @overridable + */ + updateComponent: 'OVERRIDE_BASE' + +}; + +/** + * Mapping from class specification keys to special processing functions. + * + * Although these are declared like instance properties in the specification + * when defining classes using `React.createClass`, they are actually static + * and are accessible on the constructor instead of the prototype. Despite + * being static, they must be defined outside of the "statics" key under + * which all other static methods are defined. + */ +var RESERVED_SPEC_KEYS = { + displayName: function (Constructor, displayName) { + Constructor.displayName = displayName; + }, + mixins: function (Constructor, mixins) { + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + mixSpecIntoComponent(Constructor, mixins[i]); + } + } + }, + childContextTypes: function (Constructor, childContextTypes) { + if ("development" !== 'production') { + validateTypeDef(Constructor, childContextTypes, 'childContext'); + } + Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); + }, + contextTypes: function (Constructor, contextTypes) { + if ("development" !== 'production') { + validateTypeDef(Constructor, contextTypes, 'context'); + } + Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); + }, + /** + * Special case getDefaultProps which should move into statics but requires + * automatic merging. + */ + getDefaultProps: function (Constructor, getDefaultProps) { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); + } else { + Constructor.getDefaultProps = getDefaultProps; + } + }, + propTypes: function (Constructor, propTypes) { + if ("development" !== 'production') { + validateTypeDef(Constructor, propTypes, 'prop'); + } + Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); + }, + statics: function (Constructor, statics) { + mixStaticSpecIntoComponent(Constructor, statics); + }, + autobind: function () {} }; + +function validateTypeDef(Constructor, typeDef, location) { + for (var propName in typeDef) { + if (typeDef.hasOwnProperty(propName)) { + // use a warning instead of an invariant so components + // don't show up in prod but only in __DEV__ + "development" !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0; + } + } +} + +function validateMethodOverride(isAlreadyDefined, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; + + // Disallow overriding of base class methods unless explicitly allowed. + if (ReactClassMixin.hasOwnProperty(name)) { + !(specPolicy === 'OVERRIDE_BASE') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0; + } + + // Disallow defining methods more than once unless explicitly allowed. + if (isAlreadyDefined) { + !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0; + } +} + +/** + * Mixin helper which handles policy validation and reserved + * specification keys when building React classes. + */ +function mixSpecIntoComponent(Constructor, spec) { + if (!spec) { + if ("development" !== 'production') { + var typeofSpec = typeof spec; + var isMixinValid = typeofSpec === 'object' && spec !== null; + + "development" !== 'production' ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0; + } + + return; + } + + !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0; + !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0; + + var proto = Constructor.prototype; + var autoBindPairs = proto.__reactAutoBindPairs; + + // By handling mixins before any other properties, we ensure the same + // chaining order is applied to methods with DEFINE_MANY policy, whether + // mixins are listed before or after these methods in the spec. + if (spec.hasOwnProperty(MIXINS_KEY)) { + RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + } + + for (var name in spec) { + if (!spec.hasOwnProperty(name)) { + continue; + } + + if (name === MIXINS_KEY) { + // We have already handled mixins in a special case above. + continue; + } + + var property = spec[name]; + var isAlreadyDefined = proto.hasOwnProperty(name); + validateMethodOverride(isAlreadyDefined, name); + + if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + // Setup methods on prototype: + // The following member methods should not be automatically bound: + // 1. Expected ReactClass methods (in the "interface"). + // 2. Overridden methods (that were mixed in). + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); + var isFunction = typeof property === 'function'; + var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; + + if (shouldAutoBind) { + autoBindPairs.push(name, property); + proto[name] = property; + } else { + if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + + // These cases should already be caught by validateMethodOverride. + !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0; + + // For methods which are defined more than once, call the existing + // methods before calling the new property, merging if appropriate. + if (specPolicy === 'DEFINE_MANY_MERGED') { + proto[name] = createMergedResultFunction(proto[name], property); + } else if (specPolicy === 'DEFINE_MANY') { + proto[name] = createChainedFunction(proto[name], property); + } + } else { + proto[name] = property; + if ("development" !== 'production') { + // Add verbose displayName to the function, which helps when looking + // at profiling tools. + if (typeof property === 'function' && spec.displayName) { + proto[name].displayName = spec.displayName + '_' + name; + } + } + } + } + } + } +} + +function mixStaticSpecIntoComponent(Constructor, statics) { + if (!statics) { + return; + } + for (var name in statics) { + var property = statics[name]; + if (!statics.hasOwnProperty(name)) { + continue; + } + + var isReserved = name in RESERVED_SPEC_KEYS; + !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0; + + var isInherited = name in Constructor; + !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0; + Constructor[name] = property; + } +} + +/** + * Merge two objects, but throw if both contain the same key. + * + * @param {object} one The first object, which is mutated. + * @param {object} two The second object + * @return {object} one after it has been mutated to contain everything in two. + */ +function mergeIntoWithNoDuplicateKeys(one, two) { + !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0; + + for (var key in two) { + if (two.hasOwnProperty(key)) { + !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0; + one[key] = two[key]; + } + } + return one; +} + +/** + * Creates a function that invokes two functions and merges their return values. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ +function createMergedResultFunction(one, two) { + return function mergedResult() { + var a = one.apply(this, arguments); + var b = two.apply(this, arguments); + if (a == null) { + return b; + } else if (b == null) { + return a; + } + var c = {}; + mergeIntoWithNoDuplicateKeys(c, a); + mergeIntoWithNoDuplicateKeys(c, b); + return c; + }; +} + +/** + * Creates a function that invokes two functions and ignores their return vales. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ +function createChainedFunction(one, two) { + return function chainedFunction() { + one.apply(this, arguments); + two.apply(this, arguments); + }; +} + +/** + * Binds a method to the component. + * + * @param {object} component Component whose method is going to be bound. + * @param {function} method Method to be bound. + * @return {function} The bound method. + */ +function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + if ("development" !== 'production') { + boundMethod.__reactBoundContext = component; + boundMethod.__reactBoundMethod = method; + boundMethod.__reactBoundArguments = null; + var componentName = component.constructor.displayName; + var _bind = boundMethod.bind; + boundMethod.bind = function (newThis) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + // User is trying to bind() an autobound method; we effectively will + // ignore the value of "this" that the user is trying to use, so + // let's warn. + if (newThis !== component && newThis !== null) { + "development" !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0; + } else if (!args.length) { + "development" !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0; + return boundMethod; + } + var reboundMethod = _bind.apply(boundMethod, arguments); + reboundMethod.__reactBoundContext = component; + reboundMethod.__reactBoundMethod = method; + reboundMethod.__reactBoundArguments = args; + return reboundMethod; + }; + } + return boundMethod; +} + +/** + * Binds all auto-bound methods in a component. + * + * @param {object} component Component whose method is going to be bound. + */ +function bindAutoBindMethods(component) { + var pairs = component.__reactAutoBindPairs; + for (var i = 0; i < pairs.length; i += 2) { + var autoBindKey = pairs[i]; + var method = pairs[i + 1]; + component[autoBindKey] = bindAutoBindMethod(component, method); + } +} + +/** + * Add more to the ReactClass base class. These are all legacy features and + * therefore not already part of the modern ReactComponent. + */ +var ReactClassMixin = { + + /** + * TODO: This will be deprecated because state should always keep a consistent + * type signature and the only use case for this, is to avoid that. + */ + replaceState: function (newState, callback) { + this.updater.enqueueReplaceState(this, newState); + if (callback) { + this.updater.enqueueCallback(this, callback, 'replaceState'); + } + }, + + /** + * Checks whether or not this composite component is mounted. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function () { + return this.updater.isMounted(this); + } +}; + +var ReactClassComponent = function () {}; +_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); + +var didWarnDeprecated = false; + +/** + * Module for creating composite components. + * + * @class ReactClass + */ +var ReactClass = { + + /** + * Creates a composite component class given a class specification. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass + * + * @param {object} spec Class specification (which must define `render`). + * @return {function} Component constructor function. + * @public + */ + createClass: function (spec) { + if ("development" !== 'production') { + "development" !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0; + didWarnDeprecated = true; + } + + // To keep our warnings more understandable, we'll use a little hack here to + // ensure that Constructor.name !== 'Constructor'. This makes sure we don't + // unnecessarily identify a class without displayName as 'Constructor'. + var Constructor = identity(function (props, context, updater) { + // This constructor gets overridden by mocks. The argument is used + // by mocks to assert on what gets mounted. + + if ("development" !== 'production') { + "development" !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0; + } + + // Wire up auto-binding + if (this.__reactAutoBindPairs.length) { + bindAutoBindMethods(this); + } + + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + + this.state = null; + + // ReactClasses doesn't have constructors. Instead, they use the + // getInitialState and componentWillMount methods for initialization. + + var initialState = this.getInitialState ? this.getInitialState() : null; + if ("development" !== 'production') { + // We allow auto-mocks to proceed as if they're returning null. + if (initialState === undefined && this.getInitialState._isMockFunction) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + initialState = null; + } + } + !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0; + + this.state = initialState; + }); + Constructor.prototype = new ReactClassComponent(); + Constructor.prototype.constructor = Constructor; + Constructor.prototype.__reactAutoBindPairs = []; + + injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); + + mixSpecIntoComponent(Constructor, spec); + + // Initialize the defaultProps property after all mixins have been merged. + if (Constructor.getDefaultProps) { + Constructor.defaultProps = Constructor.getDefaultProps(); + } + + if ("development" !== 'production') { + // This is a tag to indicate that the use of these method names is ok, + // since it's used with createClass. If it's not, then it's likely a + // mistake so we'll warn you to use the static property, property + // initializer or constructor respectively. + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps.isReactClassApproved = {}; + } + if (Constructor.prototype.getInitialState) { + Constructor.prototype.getInitialState.isReactClassApproved = {}; + } + } + + !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0; + + if ("development" !== 'production') { + "development" !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0; + "development" !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0; + } + + // Reduce time spent doing lookups by setting these on the prototype. + for (var methodName in ReactClassInterface) { + if (!Constructor.prototype[methodName]) { + Constructor.prototype[methodName] = null; + } + } + + return Constructor; + }, + + injection: { + injectMixin: function (mixin) { + injectedMixins.push(mixin); + } + } + +}; + +module.exports = ReactClass; +},{"10":10,"13":13,"14":14,"25":25,"28":28,"29":29,"30":30,"31":31,"6":6}],6:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _prodInvariant = _dereq_(25); + +var ReactNoopUpdateQueue = _dereq_(13); + +var canDefineProperty = _dereq_(20); +var emptyObject = _dereq_(28); +var invariant = _dereq_(29); +var warning = _dereq_(30); + +/** + * Base class helpers for the updating state of a component. + */ +function ReactComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +ReactComponent.prototype.isReactComponent = {}; + +/** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ +ReactComponent.prototype.setState = function (partialState, callback) { + !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0; + this.updater.enqueueSetState(this, partialState); + if (callback) { + this.updater.enqueueCallback(this, callback, 'setState'); + } +}; + +/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ +ReactComponent.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this); + if (callback) { + this.updater.enqueueCallback(this, callback, 'forceUpdate'); + } +}; + +/** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ +if ("development" !== 'production') { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + var defineDeprecationWarning = function (methodName, info) { + if (canDefineProperty) { + Object.defineProperty(ReactComponent.prototype, methodName, { + get: function () { + "development" !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0; + return undefined; + } + }); + } + }; + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } +} + +module.exports = ReactComponent; +},{"13":13,"20":20,"25":25,"28":28,"29":29,"30":30}],7:[function(_dereq_,module,exports){ +/** + * Copyright 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +var _prodInvariant = _dereq_(25); + +var ReactCurrentOwner = _dereq_(8); + +var invariant = _dereq_(29); +var warning = _dereq_(30); + +function isNative(fn) { + // Based on isNative() from Lodash + var funcToString = Function.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var reIsNative = RegExp('^' + funcToString + // Take an example native function source for comparison + .call(hasOwnProperty) + // Strip regex characters so we can use it for regex + .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') + // Remove hasOwnProperty from the template to make it generic + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + try { + var source = funcToString.call(fn); + return reIsNative.test(source); + } catch (err) { + return false; + } +} + +var canUseCollections = +// Array.from +typeof Array.from === 'function' && +// Map +typeof Map === 'function' && isNative(Map) && +// Map.prototype.keys +Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) && +// Set +typeof Set === 'function' && isNative(Set) && +// Set.prototype.keys +Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys); + +var setItem; +var getItem; +var removeItem; +var getItemIDs; +var addRoot; +var removeRoot; +var getRootIDs; + +if (canUseCollections) { + var itemMap = new Map(); + var rootIDSet = new Set(); + + setItem = function (id, item) { + itemMap.set(id, item); + }; + getItem = function (id) { + return itemMap.get(id); + }; + removeItem = function (id) { + itemMap['delete'](id); + }; + getItemIDs = function () { + return Array.from(itemMap.keys()); + }; + + addRoot = function (id) { + rootIDSet.add(id); + }; + removeRoot = function (id) { + rootIDSet['delete'](id); + }; + getRootIDs = function () { + return Array.from(rootIDSet.keys()); + }; +} else { + var itemByKey = {}; + var rootByKey = {}; + + // Use non-numeric keys to prevent V8 performance issues: + // https://github.com/facebook/react/pull/7232 + var getKeyFromID = function (id) { + return '.' + id; + }; + var getIDFromKey = function (key) { + return parseInt(key.substr(1), 10); + }; + + setItem = function (id, item) { + var key = getKeyFromID(id); + itemByKey[key] = item; + }; + getItem = function (id) { + var key = getKeyFromID(id); + return itemByKey[key]; + }; + removeItem = function (id) { + var key = getKeyFromID(id); + delete itemByKey[key]; + }; + getItemIDs = function () { + return Object.keys(itemByKey).map(getIDFromKey); + }; + + addRoot = function (id) { + var key = getKeyFromID(id); + rootByKey[key] = true; + }; + removeRoot = function (id) { + var key = getKeyFromID(id); + delete rootByKey[key]; + }; + getRootIDs = function () { + return Object.keys(rootByKey).map(getIDFromKey); + }; +} + +var unmountedIDs = []; + +function purgeDeep(id) { + var item = getItem(id); + if (item) { + var childIDs = item.childIDs; + + removeItem(id); + childIDs.forEach(purgeDeep); + } +} + +function describeComponentFrame(name, source, ownerName) { + return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); +} + +function getDisplayName(element) { + if (element == null) { + return '#empty'; + } else if (typeof element === 'string' || typeof element === 'number') { + return '#text'; + } else if (typeof element.type === 'string') { + return element.type; + } else { + return element.type.displayName || element.type.name || 'Unknown'; + } +} + +function describeID(id) { + var name = ReactComponentTreeHook.getDisplayName(id); + var element = ReactComponentTreeHook.getElement(id); + var ownerID = ReactComponentTreeHook.getOwnerID(id); + var ownerName; + if (ownerID) { + ownerName = ReactComponentTreeHook.getDisplayName(ownerID); + } + "development" !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0; + return describeComponentFrame(name, element && element._source, ownerName); +} + +var ReactComponentTreeHook = { + onSetChildren: function (id, nextChildIDs) { + var item = getItem(id); + !item ? "development" !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; + item.childIDs = nextChildIDs; + + for (var i = 0; i < nextChildIDs.length; i++) { + var nextChildID = nextChildIDs[i]; + var nextChild = getItem(nextChildID); + !nextChild ? "development" !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0; + !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? "development" !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0; + !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0; + if (nextChild.parentID == null) { + nextChild.parentID = id; + // TODO: This shouldn't be necessary but mounting a new root during in + // componentWillMount currently causes not-yet-mounted components to + // be purged from our tree data so their parent id is missing. + } + !(nextChild.parentID === id) ? "development" !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0; + } + }, + onBeforeMountComponent: function (id, element, parentID) { + var item = { + element: element, + parentID: parentID, + text: null, + childIDs: [], + isMounted: false, + updateCount: 0 + }; + setItem(id, item); + }, + onBeforeUpdateComponent: function (id, element) { + var item = getItem(id); + if (!item || !item.isMounted) { + // We may end up here as a result of setState() in componentWillUnmount(). + // In this case, ignore the element. + return; + } + item.element = element; + }, + onMountComponent: function (id) { + var item = getItem(id); + !item ? "development" !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; + item.isMounted = true; + var isRoot = item.parentID === 0; + if (isRoot) { + addRoot(id); + } + }, + onUpdateComponent: function (id) { + var item = getItem(id); + if (!item || !item.isMounted) { + // We may end up here as a result of setState() in componentWillUnmount(). + // In this case, ignore the element. + return; + } + item.updateCount++; + }, + onUnmountComponent: function (id) { + var item = getItem(id); + if (item) { + // We need to check if it exists. + // `item` might not exist if it is inside an error boundary, and a sibling + // error boundary child threw while mounting. Then this instance never + // got a chance to mount, but it still gets an unmounting event during + // the error boundary cleanup. + item.isMounted = false; + var isRoot = item.parentID === 0; + if (isRoot) { + removeRoot(id); + } + } + unmountedIDs.push(id); + }, + purgeUnmountedComponents: function () { + if (ReactComponentTreeHook._preventPurging) { + // Should only be used for testing. + return; + } + + for (var i = 0; i < unmountedIDs.length; i++) { + var id = unmountedIDs[i]; + purgeDeep(id); + } + unmountedIDs.length = 0; + }, + isMounted: function (id) { + var item = getItem(id); + return item ? item.isMounted : false; + }, + getCurrentStackAddendum: function (topElement) { + var info = ''; + if (topElement) { + var name = getDisplayName(topElement); + var owner = topElement._owner; + info += describeComponentFrame(name, topElement._source, owner && owner.getName()); + } + + var currentOwner = ReactCurrentOwner.current; + var id = currentOwner && currentOwner._debugID; + + info += ReactComponentTreeHook.getStackAddendumByID(id); + return info; + }, + getStackAddendumByID: function (id) { + var info = ''; + while (id) { + info += describeID(id); + id = ReactComponentTreeHook.getParentID(id); + } + return info; + }, + getChildIDs: function (id) { + var item = getItem(id); + return item ? item.childIDs : []; + }, + getDisplayName: function (id) { + var element = ReactComponentTreeHook.getElement(id); + if (!element) { + return null; + } + return getDisplayName(element); + }, + getElement: function (id) { + var item = getItem(id); + return item ? item.element : null; + }, + getOwnerID: function (id) { + var element = ReactComponentTreeHook.getElement(id); + if (!element || !element._owner) { + return null; + } + return element._owner._debugID; + }, + getParentID: function (id) { + var item = getItem(id); + return item ? item.parentID : null; + }, + getSource: function (id) { + var item = getItem(id); + var element = item ? item.element : null; + var source = element != null ? element._source : null; + return source; + }, + getText: function (id) { + var element = ReactComponentTreeHook.getElement(id); + if (typeof element === 'string') { + return element; + } else if (typeof element === 'number') { + return '' + element; + } else { + return null; + } + }, + getUpdateCount: function (id) { + var item = getItem(id); + return item ? item.updateCount : 0; + }, + + + getRootIDs: getRootIDs, + getRegisteredIDs: getItemIDs +}; + +module.exports = ReactComponentTreeHook; +},{"25":25,"29":29,"30":30,"8":8}],8:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +/** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ +var ReactCurrentOwner = { + + /** + * @internal + * @type {ReactComponent} + */ + current: null + +}; + +module.exports = ReactCurrentOwner; +},{}],9:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var ReactElement = _dereq_(10); + +/** + * Create a factory that creates HTML tag elements. + * + * @private + */ +var createDOMFactory = ReactElement.createFactory; +if ("development" !== 'production') { + var ReactElementValidator = _dereq_(12); + createDOMFactory = ReactElementValidator.createFactory; +} + +/** + * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes. + * This is also accessible via `React.DOM`. + * + * @public + */ +var ReactDOMFactories = { + a: createDOMFactory('a'), + abbr: createDOMFactory('abbr'), + address: createDOMFactory('address'), + area: createDOMFactory('area'), + article: createDOMFactory('article'), + aside: createDOMFactory('aside'), + audio: createDOMFactory('audio'), + b: createDOMFactory('b'), + base: createDOMFactory('base'), + bdi: createDOMFactory('bdi'), + bdo: createDOMFactory('bdo'), + big: createDOMFactory('big'), + blockquote: createDOMFactory('blockquote'), + body: createDOMFactory('body'), + br: createDOMFactory('br'), + button: createDOMFactory('button'), + canvas: createDOMFactory('canvas'), + caption: createDOMFactory('caption'), + cite: createDOMFactory('cite'), + code: createDOMFactory('code'), + col: createDOMFactory('col'), + colgroup: createDOMFactory('colgroup'), + data: createDOMFactory('data'), + datalist: createDOMFactory('datalist'), + dd: createDOMFactory('dd'), + del: createDOMFactory('del'), + details: createDOMFactory('details'), + dfn: createDOMFactory('dfn'), + dialog: createDOMFactory('dialog'), + div: createDOMFactory('div'), + dl: createDOMFactory('dl'), + dt: createDOMFactory('dt'), + em: createDOMFactory('em'), + embed: createDOMFactory('embed'), + fieldset: createDOMFactory('fieldset'), + figcaption: createDOMFactory('figcaption'), + figure: createDOMFactory('figure'), + footer: createDOMFactory('footer'), + form: createDOMFactory('form'), + h1: createDOMFactory('h1'), + h2: createDOMFactory('h2'), + h3: createDOMFactory('h3'), + h4: createDOMFactory('h4'), + h5: createDOMFactory('h5'), + h6: createDOMFactory('h6'), + head: createDOMFactory('head'), + header: createDOMFactory('header'), + hgroup: createDOMFactory('hgroup'), + hr: createDOMFactory('hr'), + html: createDOMFactory('html'), + i: createDOMFactory('i'), + iframe: createDOMFactory('iframe'), + img: createDOMFactory('img'), + input: createDOMFactory('input'), + ins: createDOMFactory('ins'), + kbd: createDOMFactory('kbd'), + keygen: createDOMFactory('keygen'), + label: createDOMFactory('label'), + legend: createDOMFactory('legend'), + li: createDOMFactory('li'), + link: createDOMFactory('link'), + main: createDOMFactory('main'), + map: createDOMFactory('map'), + mark: createDOMFactory('mark'), + menu: createDOMFactory('menu'), + menuitem: createDOMFactory('menuitem'), + meta: createDOMFactory('meta'), + meter: createDOMFactory('meter'), + nav: createDOMFactory('nav'), + noscript: createDOMFactory('noscript'), + object: createDOMFactory('object'), + ol: createDOMFactory('ol'), + optgroup: createDOMFactory('optgroup'), + option: createDOMFactory('option'), + output: createDOMFactory('output'), + p: createDOMFactory('p'), + param: createDOMFactory('param'), + picture: createDOMFactory('picture'), + pre: createDOMFactory('pre'), + progress: createDOMFactory('progress'), + q: createDOMFactory('q'), + rp: createDOMFactory('rp'), + rt: createDOMFactory('rt'), + ruby: createDOMFactory('ruby'), + s: createDOMFactory('s'), + samp: createDOMFactory('samp'), + script: createDOMFactory('script'), + section: createDOMFactory('section'), + select: createDOMFactory('select'), + small: createDOMFactory('small'), + source: createDOMFactory('source'), + span: createDOMFactory('span'), + strong: createDOMFactory('strong'), + style: createDOMFactory('style'), + sub: createDOMFactory('sub'), + summary: createDOMFactory('summary'), + sup: createDOMFactory('sup'), + table: createDOMFactory('table'), + tbody: createDOMFactory('tbody'), + td: createDOMFactory('td'), + textarea: createDOMFactory('textarea'), + tfoot: createDOMFactory('tfoot'), + th: createDOMFactory('th'), + thead: createDOMFactory('thead'), + time: createDOMFactory('time'), + title: createDOMFactory('title'), + tr: createDOMFactory('tr'), + track: createDOMFactory('track'), + u: createDOMFactory('u'), + ul: createDOMFactory('ul'), + 'var': createDOMFactory('var'), + video: createDOMFactory('video'), + wbr: createDOMFactory('wbr'), + + // SVG + circle: createDOMFactory('circle'), + clipPath: createDOMFactory('clipPath'), + defs: createDOMFactory('defs'), + ellipse: createDOMFactory('ellipse'), + g: createDOMFactory('g'), + image: createDOMFactory('image'), + line: createDOMFactory('line'), + linearGradient: createDOMFactory('linearGradient'), + mask: createDOMFactory('mask'), + path: createDOMFactory('path'), + pattern: createDOMFactory('pattern'), + polygon: createDOMFactory('polygon'), + polyline: createDOMFactory('polyline'), + radialGradient: createDOMFactory('radialGradient'), + rect: createDOMFactory('rect'), + stop: createDOMFactory('stop'), + svg: createDOMFactory('svg'), + text: createDOMFactory('text'), + tspan: createDOMFactory('tspan') +}; + +module.exports = ReactDOMFactories; +},{"10":10,"12":12}],10:[function(_dereq_,module,exports){ +/** + * Copyright 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _assign = _dereq_(31); + +var ReactCurrentOwner = _dereq_(8); + +var warning = _dereq_(30); +var canDefineProperty = _dereq_(20); +var hasOwnProperty = Object.prototype.hasOwnProperty; + +var REACT_ELEMENT_TYPE = _dereq_(11); + +var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true +}; + +var specialPropKeyWarningShown, specialPropRefWarningShown; + +function hasValidRef(config) { + if ("development" !== 'production') { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; +} + +function hasValidKey(config) { + if ("development" !== 'production') { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; +} + +function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + "development" !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); +} + +function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + "development" !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); +} + +/** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, no instanceof check + * will work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} key + * @param {string|object} ref + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @param {*} owner + * @param {*} props + * @internal + */ +var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allow us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + + // Record the component responsible for creating this element. + _owner: owner + }; + + if ("development" !== 'production') { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; + + // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + if (canDefineProperty) { + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + // self and source are DEV only properties. + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + } else { + element._store.validated = false; + element._self = self; + element._source = source; + } + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; +}; + +/** + * Create and return a new ReactElement of the given type. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement + */ +ReactElement.createElement = function (type, config, children) { + var propName; + + // Reserved names are extracted + var props = {}; + + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; + // Remaining properties are added to a new props object + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + if ("development" !== 'production') { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + if ("development" !== 'production') { + if (key || ref) { + if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); +}; + +/** + * Return a function that produces ReactElements of a given type. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory + */ +ReactElement.createFactory = function (type) { + var factory = ReactElement.createElement.bind(null, type); + // Expose the type on the factory and the prototype so that it can be + // easily accessed on elements. E.g. `.type === Foo`. + // This should not be named `constructor` since this may not be the function + // that created the element, and it may not even be a constructor. + // Legacy hook TODO: Warn if this is accessed + factory.type = type; + return factory; +}; + +ReactElement.cloneAndReplaceKey = function (oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + + return newElement; +}; + +/** + * Clone and return a new ReactElement using element as the starting point. + * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement + */ +ReactElement.cloneElement = function (element, config, children) { + var propName; + + // Original props are copied + var props = _assign({}, element.props); + + // Reserved names are extracted + var key = element.key; + var ref = element.ref; + // Self is preserved since the owner is preserved. + var self = element._self; + // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + var source = element._source; + + // Owner will be preserved, unless ref is overridden + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + // Remaining properties override existing props + var defaultProps; + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); +}; + +/** + * Verifies the object is a ReactElement. + * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a valid component. + * @final + */ +ReactElement.isValidElement = function (object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +}; + +module.exports = ReactElement; +},{"11":11,"20":20,"30":30,"31":31,"8":8}],11:[function(_dereq_,module,exports){ +/** + * Copyright 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +// The Symbol used to tag the ReactElement type. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. + +var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; + +module.exports = REACT_ELEMENT_TYPE; +},{}],12:[function(_dereq_,module,exports){ +/** + * Copyright 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +/** + * ReactElementValidator provides a wrapper around a element factory + * which validates the props passed to the element. This is intended to be + * used only in DEV and could be replaced by a static type checker for languages + * that support it. + */ + +'use strict'; + +var ReactCurrentOwner = _dereq_(8); +var ReactComponentTreeHook = _dereq_(7); +var ReactElement = _dereq_(10); + +var checkReactTypeSpec = _dereq_(21); + +var canDefineProperty = _dereq_(20); +var getIteratorFn = _dereq_(22); +var warning = _dereq_(30); + +function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = ReactCurrentOwner.current.getName(); + if (name) { + return ' Check the render method of `' + name + '`.'; + } + } + return ''; +} + +function getSourceInfoErrorAddendum(elementProps) { + if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { + var source = elementProps.__source; + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return ' Check your code at ' + fileName + ':' + lineNumber + '.'; + } + return ''; +} + +/** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ +var ownerHasKeyUseWarning = {}; + +function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + if (parentName) { + info = ' Check the top-level render call using <' + parentName + '>.'; + } + } + return info; +} + +/** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ +function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + element._store.validated = true; + + var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {}); + + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + if (memoizer[currentComponentErrorInfo]) { + return; + } + memoizer[currentComponentErrorInfo] = true; + + // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + var childOwner = ''; + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = ' It was passed a child from ' + element._owner.getName() + '.'; + } + + "development" !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0; +} + +/** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ +function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + if (ReactElement.isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (ReactElement.isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + // Entry iterators provide implicit keys. + if (iteratorFn) { + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + while (!(step = iterator.next()).done) { + if (ReactElement.isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } +} + +/** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ +function validatePropTypes(element) { + var componentClass = element.type; + if (typeof componentClass !== 'function') { + return; + } + var name = componentClass.displayName || componentClass.name; + if (componentClass.propTypes) { + checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null); + } + if (typeof componentClass.getDefaultProps === 'function') { + "development" !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0; + } +} + +var ReactElementValidator = { + + createElement: function (type, props, children) { + var validType = typeof type === 'string' || typeof type === 'function'; + // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + if (!validType) { + if (typeof type !== 'function' && typeof type !== 'string') { + var info = ''; + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.'; + } + + var sourceInfo = getSourceInfoErrorAddendum(props); + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + info += ReactComponentTreeHook.getCurrentStackAddendum(); + + "development" !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0; + } + } + + var element = ReactElement.createElement.apply(this, arguments); + + // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + if (element == null) { + return element; + } + + // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + validatePropTypes(element); + + return element; + }, + + createFactory: function (type) { + var validatedFactory = ReactElementValidator.createElement.bind(null, type); + // Legacy hook TODO: Warn if this is accessed + validatedFactory.type = type; + + if ("development" !== 'production') { + if (canDefineProperty) { + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + "development" !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0; + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + } + + return validatedFactory; + }, + + cloneElement: function (element, props, children) { + var newElement = ReactElement.cloneElement.apply(this, arguments); + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + validatePropTypes(newElement); + return newElement; + } + +}; + +module.exports = ReactElementValidator; +},{"10":10,"20":20,"21":21,"22":22,"30":30,"7":7,"8":8}],13:[function(_dereq_,module,exports){ +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var warning = _dereq_(30); + +function warnNoop(publicInstance, callerName) { + if ("development" !== 'production') { + var constructor = publicInstance.constructor; + "development" !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; + } +} + +/** + * This is the abstract API for an update queue. + */ +var ReactNoopUpdateQueue = { + + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Enqueue a callback that will be executed after all the pending updates + * have processed. + * + * @param {ReactClass} publicInstance The instance to use as `this` context. + * @param {?function} callback Called after state is updated. + * @internal + */ + enqueueCallback: function (publicInstance, callback) {}, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @internal + */ + enqueueForceUpdate: function (publicInstance) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @internal + */ + enqueueSetState: function (publicInstance, partialState) { + warnNoop(publicInstance, 'setState'); + } +}; + +module.exports = ReactNoopUpdateQueue; +},{"30":30}],14:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +var ReactPropTypeLocationNames = {}; + +if ("development" !== 'production') { + ReactPropTypeLocationNames = { + prop: 'prop', + context: 'context', + childContext: 'child context' + }; +} + +module.exports = ReactPropTypeLocationNames; +},{}],15:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _require = _dereq_(10), + isValidElement = _require.isValidElement; + +var factory = _dereq_(33); + +module.exports = factory(isValidElement); +},{"10":10,"33":33}],16:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; +},{}],17:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _assign = _dereq_(31); + +var ReactComponent = _dereq_(6); +var ReactNoopUpdateQueue = _dereq_(13); + +var emptyObject = _dereq_(28); + +/** + * Base class helpers for the updating state of a component. + */ +function ReactPureComponent(props, context, updater) { + // Duplicated from ReactComponent. + this.props = props; + this.context = context; + this.refs = emptyObject; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +function ComponentDummy() {} +ComponentDummy.prototype = ReactComponent.prototype; +ReactPureComponent.prototype = new ComponentDummy(); +ReactPureComponent.prototype.constructor = ReactPureComponent; +// Avoid an extra prototype jump for these methods. +_assign(ReactPureComponent.prototype, ReactComponent.prototype); +ReactPureComponent.prototype.isPureReactComponent = true; + +module.exports = ReactPureComponent; +},{"13":13,"28":28,"31":31,"6":6}],18:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _assign = _dereq_(31); + +var React = _dereq_(3); + +// `version` will be added here by the React module. +var ReactUMDEntry = _assign(React, { + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + ReactCurrentOwner: _dereq_(8) + } +}); + +if ("development" !== 'production') { + _assign(ReactUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { + // ReactComponentTreeHook should not be included in production. + ReactComponentTreeHook: _dereq_(7), + getNextDebugID: _dereq_(23) + }); +} + +module.exports = ReactUMDEntry; +},{"23":23,"3":3,"31":31,"7":7,"8":8}],19:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +module.exports = '15.5.4'; +},{}],20:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +var canDefineProperty = false; +if ("development" !== 'production') { + try { + // $FlowFixMe https://github.com/facebook/flow/issues/285 + Object.defineProperty({}, 'x', { get: function () {} }); + canDefineProperty = true; + } catch (x) { + // IE will fail on defineProperty + } +} + +module.exports = canDefineProperty; +},{}],21:[function(_dereq_,module,exports){ +(function (process){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _prodInvariant = _dereq_(25); + +var ReactPropTypeLocationNames = _dereq_(14); +var ReactPropTypesSecret = _dereq_(16); + +var invariant = _dereq_(29); +var warning = _dereq_(30); + +var ReactComponentTreeHook; + +if (typeof process !== 'undefined' && process.env && "development" === 'test') { + // Temporary hack. + // Inline requires don't work well with Jest: + // https://github.com/facebook/react/issues/7240 + // Remove the inline requires when we don't need them anymore: + // https://github.com/facebook/react/pull/7178 + ReactComponentTreeHook = _dereq_(7); +} + +var loggedTypeFailures = {}; + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?object} element The React element that is being type-checked + * @param {?number} debugID The React component instance that is being type-checked + * @private + */ +function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { + for (var typeSpecName in typeSpecs) { + if (typeSpecs.hasOwnProperty(typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + !(typeof typeSpecs[typeSpecName] === 'function') ? "development" !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + "development" !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var componentStackInfo = ''; + + if ("development" !== 'production') { + if (!ReactComponentTreeHook) { + ReactComponentTreeHook = _dereq_(7); + } + if (debugID !== null) { + componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); + } else if (element !== null) { + componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); + } + } + + "development" !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; + } + } + } +} + +module.exports = checkReactTypeSpec; +}).call(this,undefined) +},{"14":14,"16":16,"25":25,"29":29,"30":30,"7":7}],22:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +/* global Symbol */ + +var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + +/** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ +function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } +} + +module.exports = getIteratorFn; +},{}],23:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +var nextDebugID = 1; + +function getNextDebugID() { + return nextDebugID++; +} + +module.exports = getNextDebugID; +},{}],24:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ +'use strict'; + +var _prodInvariant = _dereq_(25); + +var ReactElement = _dereq_(10); + +var invariant = _dereq_(29); + +/** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ +function onlyChild(children) { + !ReactElement.isValidElement(children) ? "development" !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0; + return children; +} + +module.exports = onlyChild; +},{"10":10,"25":25,"29":29}],25:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ +'use strict'; + +/** + * WARNING: DO NOT manually require this module. + * This is a replacement for `invariant(...)` used by the error code system + * and will _only_ be required by the corresponding babel pass. + * It always throws. + */ + +function reactProdInvariant(code) { + var argCount = arguments.length - 1; + + var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; + + for (var argIdx = 0; argIdx < argCount; argIdx++) { + message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); + } + + message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; + + var error = new Error(message); + error.name = 'Invariant Violation'; + error.framesToPop = 1; // we don't care about reactProdInvariant's own frame + + throw error; +} + +module.exports = reactProdInvariant; +},{}],26:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var _prodInvariant = _dereq_(25); + +var ReactCurrentOwner = _dereq_(8); +var REACT_ELEMENT_TYPE = _dereq_(11); + +var getIteratorFn = _dereq_(22); +var invariant = _dereq_(29); +var KeyEscapeUtils = _dereq_(1); +var warning = _dereq_(30); + +var SEPARATOR = '.'; +var SUBSEPARATOR = ':'; + +/** + * This is inlined from ReactElement since this file is shared between + * isomorphic and renderers. We could extract this to a + * + */ + +/** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + +var didWarnAboutMaps = false; + +/** + * Generate a key string that identifies a component within a set. + * + * @param {*} component A component that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ +function getComponentKey(component, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (component && typeof component === 'object' && component.key != null) { + // Explicit key + return KeyEscapeUtils.escape(component.key); + } + // Implicit key determined by the index in the set + return index.toString(36); +} + +/** + * @param {?*} children Children tree container. + * @param {!string} nameSoFar Name of the key path so far. + * @param {!function} callback Callback to invoke with each child found. + * @param {?*} traverseContext Used to pass information throughout the traversal + * process. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + if (children === null || type === 'string' || type === 'number' || + // The following is inlined from ReactElement. This means we can optimize + // some checks. React Fiber also inlines this logic for similar purposes. + type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { + callback(traverseContext, children, + // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows. + nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + if (iteratorFn) { + var iterator = iteratorFn.call(children); + var step; + if (iteratorFn !== children.entries) { + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + if ("development" !== 'production') { + var mapsAsChildrenAddendum = ''; + if (ReactCurrentOwner.current) { + var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); + if (mapsAsChildrenOwnerName) { + mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; + } + } + "development" !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; + didWarnAboutMaps = true; + } + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + child = entry[1]; + nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } + } + } else if (type === 'object') { + var addendum = ''; + if ("development" !== 'production') { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; + if (children._isReactElement) { + addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.'; + } + if (ReactCurrentOwner.current) { + var name = ReactCurrentOwner.current.getName(); + if (name) { + addendum += ' Check the render method of `' + name + '`.'; + } + } + } + var childrenString = String(children); + !false ? "development" !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; + } + } + + return subtreeCount; +} + +/** + * Traverses children that are typically specified as `props.children`, but + * might also be specified through attributes: + * + * - `traverseAllChildren(this.props.children, ...)` + * - `traverseAllChildren(this.props.leftPanelChildren, ...)` + * + * The `traverseContext` is an optional argument that is passed through the + * entire traversal. It can be used to store accumulations or anything else that + * the callback might find relevant. + * + * @param {?*} children Children tree object. + * @param {!function} callback To invoke upon traversing each child. + * @param {?*} traverseContext Context for traversal. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); +} + +module.exports = traverseAllChildren; +},{"1":1,"11":11,"22":22,"25":25,"29":29,"30":30,"8":8}],27:[function(_dereq_,module,exports){ +"use strict"; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +function makeEmptyFunction(arg) { + return function () { + return arg; + }; +} + +/** + * This function accepts and discards inputs; it has no side effects. This is + * primarily useful idiomatically for overridable function endpoints which + * always need to be callable, since JS lacks a null-call idiom ala Cocoa. + */ +var emptyFunction = function emptyFunction() {}; + +emptyFunction.thatReturns = makeEmptyFunction; +emptyFunction.thatReturnsFalse = makeEmptyFunction(false); +emptyFunction.thatReturnsTrue = makeEmptyFunction(true); +emptyFunction.thatReturnsNull = makeEmptyFunction(null); +emptyFunction.thatReturnsThis = function () { + return this; +}; +emptyFunction.thatReturnsArgument = function (arg) { + return arg; +}; + +module.exports = emptyFunction; +},{}],28:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var emptyObject = {}; + +if ("development" !== 'production') { + Object.freeze(emptyObject); +} + +module.exports = emptyObject; +},{}],29:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var validateFormat = function validateFormat(format) {}; + +if ("development" !== 'production') { + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; +} + +function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +} + +module.exports = invariant; +},{}],30:[function(_dereq_,module,exports){ +/** + * Copyright 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +'use strict'; + +var emptyFunction = _dereq_(27); + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var warning = emptyFunction; + +if ("development" !== 'production') { + (function () { + var printWarning = function printWarning(format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + })(); +} + +module.exports = warning; +},{"27":27}],31:[function(_dereq_,module,exports){ /* object-assign (c) Sindre Sorhus @license MIT */ - +'use strict'; /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -79,7 +3380,7 @@ function shouldUseNative() { } } -var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { +module.exports = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; @@ -106,1172 +3407,22 @@ var objectAssign = shouldUseNative() ? Object.assign : function (target, source) return to; }; -// TODO: this is special because it gets imported during build. - -var ReactVersion = '16.2.0'; - -// The Symbol used to tag the ReactElement-like types. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. -var hasSymbol = typeof Symbol === 'function' && Symbol['for']; - -var REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7; -var REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8; -var REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9; -var REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca; -var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb; - -var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; -var FAUX_ITERATOR_SYMBOL = '@@iterator'; - -function getIteratorFn(maybeIterable) { - if (maybeIterable === null || typeof maybeIterable === 'undefined') { - return null; - } - var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; - if (typeof maybeIterator === 'function') { - return maybeIterator; - } - return null; -} - +},{}],32:[function(_dereq_,module,exports){ /** - * WARNING: DO NOT manually require this module. - * This is a replacement for `invariant(...)` used by the error code system - * and will _only_ be required by the corresponding babel pass. - * It always throws. + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. */ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ +'use strict'; - - -var emptyObject = {}; - -{ - Object.freeze(emptyObject); -} - -var emptyObject_1 = emptyObject; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - - - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var validateFormat = function validateFormat(format) {}; - -{ - validateFormat = function validateFormat(format) { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - }; -} - -function invariant(condition, format, a, b, c, d, e, f) { - validateFormat(format); - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error(format.replace(/%s/g, function () { - return args[argIndex++]; - })); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -} - -var invariant_1 = invariant; - -/** - * Forked from fbjs/warning: - * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js - * - * Only change is we use console.warn instead of console.error, - * and do nothing when 'console' is not supported. - * This really simplifies the code. - * --- - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - -var lowPriorityWarning = function () {}; - -{ - var printWarning = function (format) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.warn(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - lowPriorityWarning = function (condition, format) { - if (format === undefined) { - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); - } - if (!condition) { - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(undefined, [format].concat(args)); - } - }; -} - -var lowPriorityWarning$1 = lowPriorityWarning; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * - */ - -function makeEmptyFunction(arg) { - return function () { - return arg; - }; -} - -/** - * This function accepts and discards inputs; it has no side effects. This is - * primarily useful idiomatically for overridable function endpoints which - * always need to be callable, since JS lacks a null-call idiom ala Cocoa. - */ -var emptyFunction = function emptyFunction() {}; - -emptyFunction.thatReturns = makeEmptyFunction; -emptyFunction.thatReturnsFalse = makeEmptyFunction(false); -emptyFunction.thatReturnsTrue = makeEmptyFunction(true); -emptyFunction.thatReturnsNull = makeEmptyFunction(null); -emptyFunction.thatReturnsThis = function () { - return this; -}; -emptyFunction.thatReturnsArgument = function (arg) { - return arg; -}; - -var emptyFunction_1 = emptyFunction; - -/** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - - - - - -/** - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - -var warning = emptyFunction_1; - -{ - var printWarning$1 = function printWarning(format) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - warning = function warning(condition, format) { - if (format === undefined) { - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (format.indexOf('Failed Composite propType: ') === 0) { - return; // Ignore CompositeComponent proptype check. - } - - if (!condition) { - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning$1.apply(undefined, [format].concat(args)); - } - }; -} - -var warning_1 = warning; - -var didWarnStateUpdateForUnmountedComponent = {}; - -function warnNoop(publicInstance, callerName) { - { - var constructor = publicInstance.constructor; - var componentName = constructor && (constructor.displayName || constructor.name) || 'ReactClass'; - var warningKey = componentName + '.' + callerName; - if (didWarnStateUpdateForUnmountedComponent[warningKey]) { - return; - } - warning_1(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName); - didWarnStateUpdateForUnmountedComponent[warningKey] = true; - } -} - -/** - * This is the abstract API for an update queue. - */ -var ReactNoopUpdateQueue = { - /** - * Checks whether or not this composite component is mounted. - * @param {ReactClass} publicInstance The instance we want to test. - * @return {boolean} True if mounted, false otherwise. - * @protected - * @final - */ - isMounted: function (publicInstance) { - return false; - }, - - /** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {?function} callback Called after component is updated. - * @param {?string} callerName name of the calling function in the public API. - * @internal - */ - enqueueForceUpdate: function (publicInstance, callback, callerName) { - warnNoop(publicInstance, 'forceUpdate'); - }, - - /** - * Replaces all of the state. Always use this or `setState` to mutate state. - * You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} completeState Next state. - * @param {?function} callback Called after component is updated. - * @param {?string} callerName name of the calling function in the public API. - * @internal - */ - enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { - warnNoop(publicInstance, 'replaceState'); - }, - - /** - * Sets a subset of the state. This only exists because _pendingState is - * internal. This provides a merging strategy that is not available to deep - * properties which is confusing. TODO: Expose pendingState or don't use it - * during the merge. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} partialState Next partial state to be merged with state. - * @param {?function} callback Called after component is updated. - * @param {?string} Name of the calling function in the public API. - * @internal - */ - enqueueSetState: function (publicInstance, partialState, callback, callerName) { - warnNoop(publicInstance, 'setState'); - } -}; - -/** - * Base class helpers for the updating state of a component. - */ -function Component(props, context, updater) { - this.props = props; - this.context = context; - this.refs = emptyObject_1; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -Component.prototype.isReactComponent = {}; - -/** - * Sets a subset of the state. Always use this to mutate - * state. You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * There is no guarantee that calls to `setState` will run synchronously, - * as they may eventually be batched together. You can provide an optional - * callback that will be executed when the call to setState is actually - * completed. - * - * When a function is provided to setState, it will be called at some point in - * the future (not synchronously). It will be called with the up to date - * component arguments (state, props, context). These values can be different - * from this.* because your function may be called after receiveProps but before - * shouldComponentUpdate, and this new state, props, and context will not yet be - * assigned to this. - * - * @param {object|function} partialState Next partial state or function to - * produce next partial state to be merged with current state. - * @param {?function} callback Called after state is updated. - * @final - * @protected - */ -Component.prototype.setState = function (partialState, callback) { - !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant_1(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0; - this.updater.enqueueSetState(this, partialState, callback, 'setState'); -}; - -/** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {?function} callback Called after update is complete. - * @final - * @protected - */ -Component.prototype.forceUpdate = function (callback) { - this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); -}; - -/** - * Deprecated APIs. These APIs used to exist on classic React classes but since - * we would like to deprecate them, we're not going to move them over to this - * modern base class. Instead, we define a getter that warns if it's accessed. - */ -{ - var deprecatedAPIs = { - isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], - replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] - }; - var defineDeprecationWarning = function (methodName, info) { - Object.defineProperty(Component.prototype, methodName, { - get: function () { - lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); - return undefined; - } - }); - }; - for (var fnName in deprecatedAPIs) { - if (deprecatedAPIs.hasOwnProperty(fnName)) { - defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); - } - } -} - -/** - * Base class helpers for the updating state of a component. - */ -function PureComponent(props, context, updater) { - // Duplicated from Component. - this.props = props; - this.context = context; - this.refs = emptyObject_1; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -function ComponentDummy() {} -ComponentDummy.prototype = Component.prototype; -var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); -pureComponentPrototype.constructor = PureComponent; -// Avoid an extra prototype jump for these methods. -objectAssign(pureComponentPrototype, Component.prototype); -pureComponentPrototype.isPureReactComponent = true; - -function AsyncComponent(props, context, updater) { - // Duplicated from Component. - this.props = props; - this.context = context; - this.refs = emptyObject_1; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -var asyncComponentPrototype = AsyncComponent.prototype = new ComponentDummy(); -asyncComponentPrototype.constructor = AsyncComponent; -// Avoid an extra prototype jump for these methods. -objectAssign(asyncComponentPrototype, Component.prototype); -asyncComponentPrototype.unstable_isAsyncReactComponent = true; -asyncComponentPrototype.render = function () { - return this.props.children; -}; - -/** - * Keeps track of the current owner. - * - * The current owner is the component who should own any components that are - * currently being constructed. - */ -var ReactCurrentOwner = { - /** - * @internal - * @type {ReactComponent} - */ - current: null -}; - -var hasOwnProperty$1 = Object.prototype.hasOwnProperty; - -var RESERVED_PROPS = { - key: true, - ref: true, - __self: true, - __source: true -}; - -var specialPropKeyWarningShown; -var specialPropRefWarningShown; - -function hasValidRef(config) { - { - if (hasOwnProperty$1.call(config, 'ref')) { - var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.ref !== undefined; -} - -function hasValidKey(config) { - { - if (hasOwnProperty$1.call(config, 'key')) { - var getter = Object.getOwnPropertyDescriptor(config, 'key').get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.key !== undefined; -} - -function defineKeyPropWarningGetter(props, displayName) { - var warnAboutAccessingKey = function () { - if (!specialPropKeyWarningShown) { - specialPropKeyWarningShown = true; - warning_1(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); - } - }; - warnAboutAccessingKey.isReactWarning = true; - Object.defineProperty(props, 'key', { - get: warnAboutAccessingKey, - configurable: true - }); -} - -function defineRefPropWarningGetter(props, displayName) { - var warnAboutAccessingRef = function () { - if (!specialPropRefWarningShown) { - specialPropRefWarningShown = true; - warning_1(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); - } - }; - warnAboutAccessingRef.isReactWarning = true; - Object.defineProperty(props, 'ref', { - get: warnAboutAccessingRef, - configurable: true - }); -} - -/** - * Factory method to create a new React element. This no longer adheres to - * the class pattern, so do not use new to call it. Also, no instanceof check - * will work. Instead test $$typeof field against Symbol.for('react.element') to check - * if something is a React Element. - * - * @param {*} type - * @param {*} key - * @param {string|object} ref - * @param {*} self A *temporary* helper to detect places where `this` is - * different from the `owner` when React.createElement is called, so that we - * can warn. We want to get rid of owner and replace string `ref`s with arrow - * functions, and as long as `this` and owner are the same, there will be no - * change in behavior. - * @param {*} source An annotation object (added by a transpiler or otherwise) - * indicating filename, line number, and/or other information. - * @param {*} owner - * @param {*} props - * @internal - */ -var ReactElement = function (type, key, ref, self, source, owner, props) { - var element = { - // This tag allow us to uniquely identify this as a React Element - $$typeof: REACT_ELEMENT_TYPE, - - // Built-in properties that belong on the element - type: type, - key: key, - ref: ref, - props: props, - - // Record the component responsible for creating this element. - _owner: owner - }; - - { - // The validation flag is currently mutative. We put it on - // an external backing store so that we can freeze the whole object. - // This can be replaced with a WeakMap once they are implemented in - // commonly used development environments. - element._store = {}; - - // To make comparing ReactElements easier for testing purposes, we make - // the validation flag non-enumerable (where possible, which should - // include every environment we run tests in), so the test framework - // ignores it. - Object.defineProperty(element._store, 'validated', { - configurable: false, - enumerable: false, - writable: true, - value: false - }); - // self and source are DEV only properties. - Object.defineProperty(element, '_self', { - configurable: false, - enumerable: false, - writable: false, - value: self - }); - // Two elements created in two different places should be considered - // equal for testing purposes and therefore we hide it from enumeration. - Object.defineProperty(element, '_source', { - configurable: false, - enumerable: false, - writable: false, - value: source - }); - if (Object.freeze) { - Object.freeze(element.props); - Object.freeze(element); - } - } - - return element; -}; - -/** - * Create and return a new ReactElement of the given type. - * See https://reactjs.org/docs/react-api.html#createelement - */ -function createElement(type, config, children) { - var propName; - - // Reserved names are extracted - var props = {}; - - var key = null; - var ref = null; - var self = null; - var source = null; - - if (config != null) { - if (hasValidRef(config)) { - ref = config.ref; - } - if (hasValidKey(config)) { - key = '' + config.key; - } - - self = config.__self === undefined ? null : config.__self; - source = config.__source === undefined ? null : config.__source; - // Remaining properties are added to a new props object - for (propName in config) { - if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - props[propName] = config[propName]; - } - } - } - - // Children can be more than one argument, and those are transferred onto - // the newly allocated props object. - var childrenLength = arguments.length - 2; - if (childrenLength === 1) { - props.children = children; - } else if (childrenLength > 1) { - var childArray = Array(childrenLength); - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 2]; - } - { - if (Object.freeze) { - Object.freeze(childArray); - } - } - props.children = childArray; - } - - // Resolve default props - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; - } - } - } - { - if (key || ref) { - if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { - var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; - if (key) { - defineKeyPropWarningGetter(props, displayName); - } - if (ref) { - defineRefPropWarningGetter(props, displayName); - } - } - } - } - return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); -} - -/** - * Return a function that produces ReactElements of a given type. - * See https://reactjs.org/docs/react-api.html#createfactory - */ - - -function cloneAndReplaceKey(oldElement, newKey) { - var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); - - return newElement; -} - -/** - * Clone and return a new ReactElement using element as the starting point. - * See https://reactjs.org/docs/react-api.html#cloneelement - */ -function cloneElement(element, config, children) { - var propName; - - // Original props are copied - var props = objectAssign({}, element.props); - - // Reserved names are extracted - var key = element.key; - var ref = element.ref; - // Self is preserved since the owner is preserved. - var self = element._self; - // Source is preserved since cloneElement is unlikely to be targeted by a - // transpiler, and the original source is probably a better indicator of the - // true owner. - var source = element._source; - - // Owner will be preserved, unless ref is overridden - var owner = element._owner; - - if (config != null) { - if (hasValidRef(config)) { - // Silently steal the ref from the parent. - ref = config.ref; - owner = ReactCurrentOwner.current; - } - if (hasValidKey(config)) { - key = '' + config.key; - } - - // Remaining properties override existing props - var defaultProps; - if (element.type && element.type.defaultProps) { - defaultProps = element.type.defaultProps; - } - for (propName in config) { - if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - if (config[propName] === undefined && defaultProps !== undefined) { - // Resolve default props - props[propName] = defaultProps[propName]; - } else { - props[propName] = config[propName]; - } - } - } - } - - // Children can be more than one argument, and those are transferred onto - // the newly allocated props object. - var childrenLength = arguments.length - 2; - if (childrenLength === 1) { - props.children = children; - } else if (childrenLength > 1) { - var childArray = Array(childrenLength); - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 2]; - } - props.children = childArray; - } - - return ReactElement(element.type, key, ref, self, source, owner, props); -} - -/** - * Verifies the object is a ReactElement. - * See https://reactjs.org/docs/react-api.html#isvalidelement - * @param {?object} object - * @return {boolean} True if `object` is a valid component. - * @final - */ -function isValidElement(object) { - return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; -} - -var ReactDebugCurrentFrame = {}; - -{ - // Component that is being worked on - ReactDebugCurrentFrame.getCurrentStack = null; - - ReactDebugCurrentFrame.getStackAddendum = function () { - var impl = ReactDebugCurrentFrame.getCurrentStack; - if (impl) { - return impl(); - } - return null; - }; -} - -var SEPARATOR = '.'; -var SUBSEPARATOR = ':'; - -/** - * Escape and wrap key so it is safe to use as a reactid - * - * @param {string} key to be escaped. - * @return {string} the escaped key. - */ -function escape(key) { - var escapeRegex = /[=:]/g; - var escaperLookup = { - '=': '=0', - ':': '=2' - }; - var escapedString = ('' + key).replace(escapeRegex, function (match) { - return escaperLookup[match]; - }); - - return '$' + escapedString; -} - -/** - * TODO: Test that a single child and an array with one item have the same key - * pattern. - */ - -var didWarnAboutMaps = false; - -var userProvidedKeyEscapeRegex = /\/+/g; -function escapeUserProvidedKey(text) { - return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); -} - -var POOL_SIZE = 10; -var traverseContextPool = []; -function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) { - if (traverseContextPool.length) { - var traverseContext = traverseContextPool.pop(); - traverseContext.result = mapResult; - traverseContext.keyPrefix = keyPrefix; - traverseContext.func = mapFunction; - traverseContext.context = mapContext; - traverseContext.count = 0; - return traverseContext; - } else { - return { - result: mapResult, - keyPrefix: keyPrefix, - func: mapFunction, - context: mapContext, - count: 0 - }; - } -} - -function releaseTraverseContext(traverseContext) { - traverseContext.result = null; - traverseContext.keyPrefix = null; - traverseContext.func = null; - traverseContext.context = null; - traverseContext.count = 0; - if (traverseContextPool.length < POOL_SIZE) { - traverseContextPool.push(traverseContext); - } -} - -/** - * @param {?*} children Children tree container. - * @param {!string} nameSoFar Name of the key path so far. - * @param {!function} callback Callback to invoke with each child found. - * @param {?*} traverseContext Used to pass information throughout the traversal - * process. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { - var type = typeof children; - - if (type === 'undefined' || type === 'boolean') { - // All of the above are perceived as null. - children = null; - } - - var invokeCallback = false; - - if (children === null) { - invokeCallback = true; - } else { - switch (type) { - case 'string': - case 'number': - invokeCallback = true; - break; - case 'object': - switch (children.$$typeof) { - case REACT_ELEMENT_TYPE: - case REACT_CALL_TYPE: - case REACT_RETURN_TYPE: - case REACT_PORTAL_TYPE: - invokeCallback = true; - } - } - } - - if (invokeCallback) { - callback(traverseContext, children, - // If it's the only child, treat the name as if it was wrapped in an array - // so that it's consistent if the number of children grows. - nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); - return 1; - } - - var child; - var nextName; - var subtreeCount = 0; // Count of children found in the current subtree. - var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; - - if (Array.isArray(children)) { - for (var i = 0; i < children.length; i++) { - child = children[i]; - nextName = nextNamePrefix + getComponentKey(child, i); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } else { - var iteratorFn = getIteratorFn(children); - if (typeof iteratorFn === 'function') { - { - // Warn about using Maps as children - if (iteratorFn === children.entries) { - warning_1(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum()); - didWarnAboutMaps = true; - } - } - - var iterator = iteratorFn.call(children); - var step; - var ii = 0; - while (!(step = iterator.next()).done) { - child = step.value; - nextName = nextNamePrefix + getComponentKey(child, ii++); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } else if (type === 'object') { - var addendum = ''; - { - addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum(); - } - var childrenString = '' + children; - invariant_1(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum); - } - } - - return subtreeCount; -} - -/** - * Traverses children that are typically specified as `props.children`, but - * might also be specified through attributes: - * - * - `traverseAllChildren(this.props.children, ...)` - * - `traverseAllChildren(this.props.leftPanelChildren, ...)` - * - * The `traverseContext` is an optional argument that is passed through the - * entire traversal. It can be used to store accumulations or anything else that - * the callback might find relevant. - * - * @param {?*} children Children tree object. - * @param {!function} callback To invoke upon traversing each child. - * @param {?*} traverseContext Context for traversal. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildren(children, callback, traverseContext) { - if (children == null) { - return 0; - } - - return traverseAllChildrenImpl(children, '', callback, traverseContext); -} - -/** - * Generate a key string that identifies a component within a set. - * - * @param {*} component A component that could contain a manual key. - * @param {number} index Index that is used if a manual key is not provided. - * @return {string} - */ -function getComponentKey(component, index) { - // Do some typechecking here since we call this blindly. We want to ensure - // that we don't block potential future ES APIs. - if (typeof component === 'object' && component !== null && component.key != null) { - // Explicit key - return escape(component.key); - } - // Implicit key determined by the index in the set - return index.toString(36); -} - -function forEachSingleChild(bookKeeping, child, name) { - var func = bookKeeping.func, - context = bookKeeping.context; - - func.call(context, child, bookKeeping.count++); -} - -/** - * Iterates through children that are typically specified as `props.children`. - * - * See https://reactjs.org/docs/react-api.html#react.children.foreach - * - * The provided forEachFunc(child, index) will be called for each - * leaf child. - * - * @param {?*} children Children tree container. - * @param {function(*, int)} forEachFunc - * @param {*} forEachContext Context for forEachContext. - */ -function forEachChildren(children, forEachFunc, forEachContext) { - if (children == null) { - return children; - } - var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext); - traverseAllChildren(children, forEachSingleChild, traverseContext); - releaseTraverseContext(traverseContext); -} - -function mapSingleChildIntoContext(bookKeeping, child, childKey) { - var result = bookKeeping.result, - keyPrefix = bookKeeping.keyPrefix, - func = bookKeeping.func, - context = bookKeeping.context; - - - var mappedChild = func.call(context, child, bookKeeping.count++); - if (Array.isArray(mappedChild)) { - mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction_1.thatReturnsArgument); - } else if (mappedChild != null) { - if (isValidElement(mappedChild)) { - mappedChild = cloneAndReplaceKey(mappedChild, - // Keep both the (mapped) and old keys if they differ, just as - // traverseAllChildren used to do for objects as children - keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); - } - result.push(mappedChild); - } -} - -function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { - var escapedPrefix = ''; - if (prefix != null) { - escapedPrefix = escapeUserProvidedKey(prefix) + '/'; - } - var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context); - traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); - releaseTraverseContext(traverseContext); -} - -/** - * Maps children that are typically specified as `props.children`. - * - * See https://reactjs.org/docs/react-api.html#react.children.map - * - * The provided mapFunction(child, key, index) will be called for each - * leaf child. - * - * @param {?*} children Children tree container. - * @param {function(*, int)} func The map function. - * @param {*} context Context for mapFunction. - * @return {object} Object containing the ordered map of results. - */ -function mapChildren(children, func, context) { - if (children == null) { - return children; - } - var result = []; - mapIntoWithKeyPrefixInternal(children, result, null, func, context); - return result; -} - -/** - * Count the number of children that are typically specified as - * `props.children`. - * - * See https://reactjs.org/docs/react-api.html#react.children.count - * - * @param {?*} children Children tree container. - * @return {number} The number of children. - */ -function countChildren(children, context) { - return traverseAllChildren(children, emptyFunction_1.thatReturnsNull, null); -} - -/** - * Flatten a children object (typically specified as `props.children`) and - * return an array with appropriately re-keyed children. - * - * See https://reactjs.org/docs/react-api.html#react.children.toarray - */ -function toArray(children) { - var result = []; - mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction_1.thatReturnsArgument); - return result; -} - -/** - * Returns the first child in a collection of children and verifies that there - * is only one child in the collection. - * - * See https://reactjs.org/docs/react-api.html#react.children.only - * - * The current implementation of this function assumes that a single child gets - * passed without a wrapper, but the purpose of this helper function is to - * abstract away the particular structure of children. - * - * @param {?object} children Child collection structure. - * @return {ReactElement} The first and only `ReactElement` contained in the - * structure. - */ -function onlyChild(children) { - !isValidElement(children) ? invariant_1(false, 'React.Children.only expected to receive a single React element child.') : void 0; - return children; -} - -var describeComponentFrame = function (name, source, ownerName) { - return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); -}; - -function getComponentName(fiber) { - var type = fiber.type; - - if (typeof type === 'string') { - return type; - } - if (typeof type === 'function') { - return type.displayName || type.name; - } - return null; -} - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -var ReactPropTypesSecret$1 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -var ReactPropTypesSecret_1 = ReactPropTypesSecret$1; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -{ - var invariant$2 = invariant_1; - var warning$2 = warning_1; - var ReactPropTypesSecret = ReactPropTypesSecret_1; +if ("development" !== 'production') { + var invariant = _dereq_(29); + var warning = _dereq_(30); + var ReactPropTypesSecret = _dereq_(35); var loggedTypeFailures = {}; } @@ -1287,7 +3438,7 @@ var ReactPropTypesSecret_1 = ReactPropTypesSecret$1; * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - { + if ("development" !== 'production') { for (var typeSpecName in typeSpecs) { if (typeSpecs.hasOwnProperty(typeSpecName)) { var error; @@ -1297,12 +3448,12 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. - invariant$2(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); + invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } - warning$2(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); + warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. @@ -1310,375 +3461,527 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { var stack = getStack ? getStack() : ''; - warning$2(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); + warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); } } } } } -var checkPropTypes_1 = checkPropTypes; +module.exports = checkPropTypes; +},{"29":29,"30":30,"35":35}],33:[function(_dereq_,module,exports){ /** - * ReactElementValidator provides a wrapper around a element factory - * which validates the props passed to the element. This is intended to be - * used only in DEV and could be replaced by a static type checker for languages - * that support it. - */ - -{ - var currentlyValidatingElement = null; - - var propTypesMisspellWarningShown = false; - - var getDisplayName = function (element) { - if (element == null) { - return '#empty'; - } else if (typeof element === 'string' || typeof element === 'number') { - return '#text'; - } else if (typeof element.type === 'string') { - return element.type; - } else if (element.type === REACT_FRAGMENT_TYPE) { - return 'React.Fragment'; - } else { - return element.type.displayName || element.type.name || 'Unknown'; - } - }; - - var getStackAddendum = function () { - var stack = ''; - if (currentlyValidatingElement) { - var name = getDisplayName(currentlyValidatingElement); - var owner = currentlyValidatingElement._owner; - stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner)); - } - stack += ReactDebugCurrentFrame.getStackAddendum() || ''; - return stack; - }; - - var VALID_FRAGMENT_PROPS = new Map([['children', true], ['key', true]]); -} - -function getDeclarationErrorAddendum() { - if (ReactCurrentOwner.current) { - var name = getComponentName(ReactCurrentOwner.current); - if (name) { - return '\n\nCheck the render method of `' + name + '`.'; - } - } - return ''; -} - -function getSourceInfoErrorAddendum(elementProps) { - if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { - var source = elementProps.__source; - var fileName = source.fileName.replace(/^.*[\\\/]/, ''); - var lineNumber = source.lineNumber; - return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; - } - return ''; -} - -/** - * Warn if there's no key explicitly set on dynamic arrays of children or - * object keys are not valid. This allows us to keep track of children between - * updates. - */ -var ownerHasKeyUseWarning = {}; - -function getCurrentComponentErrorInfo(parentType) { - var info = getDeclarationErrorAddendum(); - - if (!info) { - var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; - if (parentName) { - info = '\n\nCheck the top-level render call using <' + parentName + '>.'; - } - } - return info; -} - -/** - * Warn if the element doesn't have an explicit key assigned to it. - * This element is in an array. The array could grow and shrink or be - * reordered. All children that haven't already been validated are required to - * have a "key" property assigned to it. Error statuses are cached so a warning - * will only be shown once. + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. * - * @internal - * @param {ReactElement} element Element that requires a key. - * @param {*} parentType element's parent's type. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. */ -function validateExplicitKey(element, parentType) { - if (!element._store || element._store.validated || element.key != null) { - return; - } - element._store.validated = true; - var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); - if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { - return; - } - ownerHasKeyUseWarning[currentComponentErrorInfo] = true; +'use strict'; - // Usually the current owner is the offender, but if it accepts children as a - // property, it may be the creator of the child that's responsible for - // assigning it a key. - var childOwner = ''; - if (element && element._owner && element._owner !== ReactCurrentOwner.current) { - // Give the component that originally created this child. - childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.'; - } - - currentlyValidatingElement = element; - { - warning_1(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum()); - } - currentlyValidatingElement = null; -} +// React 15.5 references this module, and assumes PropTypes are still callable in production. +// Therefore we re-export development-only version with all the PropTypes checks here. +// However if one is migrating to the `prop-types` npm library, they will go through the +// `index.js` entry point, and it will branch depending on the environment. +var factory = _dereq_(34); +module.exports = function(isValidElement) { + // It is still allowed in 15.5. + var throwOnDirectAccess = false; + return factory(isValidElement, throwOnDirectAccess); +}; +},{"34":34}],34:[function(_dereq_,module,exports){ /** - * Ensure that every element either is passed in a static location, in an - * array with an explicit keys property defined, or in an object literal - * with valid key property. + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. * - * @internal - * @param {ReactNode} node Statically passed child of any type. - * @param {*} parentType node's parent's type. + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. */ -function validateChildKeys(node, parentType) { - if (typeof node !== 'object') { - return; - } - if (Array.isArray(node)) { - for (var i = 0; i < node.length; i++) { - var child = node[i]; - if (isValidElement(child)) { - validateExplicitKey(child, parentType); - } - } - } else if (isValidElement(node)) { - // This element was passed in a valid location. - if (node._store) { - node._store.validated = true; - } - } else if (node) { - var iteratorFn = getIteratorFn(node); + +'use strict'; + +var emptyFunction = _dereq_(27); +var invariant = _dereq_(29); +var warning = _dereq_(30); + +var ReactPropTypesSecret = _dereq_(35); +var checkPropTypes = _dereq_(32); + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === 'function') { - // Entry iterators used to provide implicit keys, - // but now we print a separate warning for them later. - if (iteratorFn !== node.entries) { - var iterator = iteratorFn.call(node); - var step; - while (!(step = iterator.next()).done) { - if (isValidElement(step.value)) { - validateExplicitKey(step.value, parentType); + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if ("development" !== 'production') { + var manualPropTypeCallCache = {}; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + invariant( + false, + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + } else if ("development" !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if (!manualPropTypeCallCache[cacheKey]) { + warning( + false, + 'You are manually calling a React.PropTypes validation ' + + 'function for the `%s` prop on `%s`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', + propFullName, + componentName + ); + manualPropTypeCallCache[cacheKey] = true; } } } - } - } -} - -/** - * Given an element, validate that its props follow the propTypes definition, - * provided by the type. - * - * @param {ReactElement} element - */ -function validatePropTypes(element) { - var componentClass = element.type; - if (typeof componentClass !== 'function') { - return; - } - var name = componentClass.displayName || componentClass.name; - var propTypes = componentClass.propTypes; - if (propTypes) { - currentlyValidatingElement = element; - checkPropTypes_1(propTypes, element.props, 'prop', name, getStackAddendum); - currentlyValidatingElement = null; - } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) { - propTypesMisspellWarningShown = true; - warning_1(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown'); - } - if (typeof componentClass.getDefaultProps === 'function') { - warning_1(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); - } -} - -/** - * Given a fragment, validate that it can only be provided with fragment props - * @param {ReactElement} fragment - */ -function validateFragmentProps(fragment) { - currentlyValidatingElement = fragment; - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = Object.keys(fragment.props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - - if (!VALID_FRAGMENT_PROPS.has(key)) { - warning_1(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum()); - break; + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); } } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator['return']) { - _iterator['return'](); + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); } - } finally { - if (_didIteratorError) { - throw _iteratorError; + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunction.thatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (propValue.hasOwnProperty(key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; } } + return propType; } - if (fragment.ref !== null) { - warning_1(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum()); - } - - currentlyValidatingElement = null; -} - -function createElementWithValidation(type, props, children) { - var validType = typeof type === 'string' || typeof type === 'function' || typeof type === 'symbol' || typeof type === 'number'; - // We warn in this case but don't throw. We expect the element creation to - // succeed and there will likely be errors in render. - if (!validType) { - var info = ''; - if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { - info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; } - - var sourceInfo = getSourceInfoErrorAddendum(props); - if (sourceInfo) { - info += sourceInfo; - } else { - info += getDeclarationErrorAddendum(); - } - - info += getStackAddendum() || ''; - - warning_1(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info); + return propValue.constructor.name; } - var element = createElement.apply(this, arguments); + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.PropTypes = ReactPropTypes; - // The result can be nullish if a mock or a custom function is used. - // TODO: Drop this when these are no longer allowed as the type argument. - if (element == null) { - return element; - } - - // Skip key warning if the type isn't valid since our key validation logic - // doesn't expect a non-string/function type and can throw confusing errors. - // We don't want exception behavior to differ between dev and prod. - // (Rendering will throw with a helpful message and as soon as the type is - // fixed, the key warnings will appear.) - if (validType) { - for (var i = 2; i < arguments.length; i++) { - validateChildKeys(arguments[i], type); - } - } - - if (typeof type === 'symbol' && type === REACT_FRAGMENT_TYPE) { - validateFragmentProps(element); - } else { - validatePropTypes(element); - } - - return element; -} - -function createFactoryWithValidation(type) { - var validatedFactory = createElementWithValidation.bind(null, type); - // Legacy hook TODO: Warn if this is accessed - validatedFactory.type = type; - - { - Object.defineProperty(validatedFactory, 'type', { - enumerable: false, - get: function () { - lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); - Object.defineProperty(this, 'type', { - value: type - }); - return type; - } - }); - } - - return validatedFactory; -} - -function cloneElementWithValidation(element, props, children) { - var newElement = cloneElement.apply(this, arguments); - for (var i = 2; i < arguments.length; i++) { - validateChildKeys(arguments[i], newElement.type); - } - validatePropTypes(newElement); - return newElement; -} - -var React = { - Children: { - map: mapChildren, - forEach: forEachChildren, - count: countChildren, - toArray: toArray, - only: onlyChild - }, - - Component: Component, - PureComponent: PureComponent, - unstable_AsyncComponent: AsyncComponent, - - Fragment: REACT_FRAGMENT_TYPE, - - createElement: createElementWithValidation, - cloneElement: cloneElementWithValidation, - createFactory: createFactoryWithValidation, - isValidElement: isValidElement, - - version: ReactVersion, - - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { - ReactCurrentOwner: ReactCurrentOwner, - // Used by renderers to avoid bundling object-assign twice in UMD bundles: - assign: objectAssign - } + return ReactPropTypes; }; -{ - objectAssign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { - // These should not be included in production. - ReactDebugCurrentFrame: ReactDebugCurrentFrame, - // Shim for React DOM 16.0.0 which still destructured (but not used) this. - // TODO: remove in React 17.0. - ReactComponentTreeHook: {} - }); -} +},{"27":27,"29":29,"30":30,"32":32,"35":35}],35:[function(_dereq_,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ +'use strict'; +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; -var React$2 = Object.freeze({ - default: React -}); +module.exports = ReactPropTypesSecret; -var React$3 = ( React$2 && React ) || React$2; - -// TODO: decide on the top-level export form. -// This is hacky but makes it work with both Rollup and Jest. -var react = React$3['default'] ? React$3['default'] : React$3; - -return react; - -}))); +},{}]},{},[18])(18) +}); \ No newline at end of file diff --git a/browser/extensions/activity-stream/vendor/react-dom-dev.js b/browser/extensions/activity-stream/vendor/react-dom-dev.js index 371c3816e306..f40eeb6fd15f 100644 --- a/browser/extensions/activity-stream/vendor/react-dom-dev.js +++ b/browser/extensions/activity-stream/vendor/react-dom-dev.js @@ -1,2065 +1,170 @@ -/** @license React v16.2.0 - * react-dom.development.js + /** + * ReactDOM v15.5.4 + */ + +;(function(f) { + // CommonJS + if (typeof exports === "object" && typeof module !== "undefined") { + module.exports = f(require('react')); + + // RequireJS + } else if (typeof define === "function" && define.amd) { + define(['react'], f); + + // - + + @@ -48,6 +48,8 @@ function doTests() { testValsMinMax(n5, "initial n5", -10, -10, -3); testValsMinMax(n6, "initial n6", 12, 12, 12); + ok(n1.spinButtons != null && n1.spinButtons.localName == "spinbuttons", "spinButtons set"); + // test changing the value n1.value = "1700"; testVals(n1, "set value,", 1700); @@ -91,19 +93,67 @@ function doTests() { n1.max = 22; testValsMinMax(n1, "set integer max,", 22, 8, 22); + // test increase and decrease via the keyboard and the spinbuttons + testIncreaseDecrease(n1, "integer", 1, 0, 8, 22); + + // UI tests + n1.min = 5; + n1.max = 15; + n1.value = 5; + n1.focus(); + + var sb = n1.spinButtons; + var sbbottom = sb.getBoundingClientRect().bottom - sb.getBoundingClientRect().top - 2; + + synthesizeKey("VK_UP", {}); + testVals(n1, "key up", 6); + + synthesizeKey("VK_DOWN", {}); + testVals(n1, "key down", 5); + + synthesizeMouse(sb, 2, 2, {}); + testVals(n1, "spinbuttons up", 6); + synthesizeMouse(sb, 2, sbbottom, {}); + testVals(n1, "spinbuttons down", 5); + + n1.value = 15; + synthesizeKey("VK_UP", {}); + testVals(n1, "key up at max", 15); + synthesizeMouse(sb, 2, 2, {}); + testVals(n1, "spinbuttons up at max", 15); + + n1.value = 5; + synthesizeKey("VK_DOWN", {}); + testVals(n1, "key down at min", 5); + synthesizeMouse(sb, 2, sbbottom, {}); + testVals(n1, "spinbuttons down at min", 5); + // check read only state n1.readOnly = true; n1.min = -10; n1.max = 15; n1.value = 12; - n1.inputField.focus(); // no events should fire and no changes should occur when the field is read only synthesizeKeyExpectEvent("VK_UP", { }, n1, "!change", "key up read only"); is(n1.value, "12", "key up read only value"); synthesizeKeyExpectEvent("VK_DOWN", { }, n1, "!change", "key down read only"); is(n1.value, "12", "key down read only value"); + synthesizeMouseExpectEvent(sb, 2, 2, { }, n1, "!change", "mouse up read only"); + is(n1.value, "12", "mouse up read only value"); + synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, n1, "!change", "mouse down read only"); + is(n1.value, "12", "mouse down read only value"); + n1.readOnly = false; + n1.disabled = true; + synthesizeMouseExpectEvent(sb, 2, 2, { }, n1, "!change", "mouse up disabled"); + is(n1.value, "12", "mouse up disabled value"); + synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, n1, "!change", "mouse down disabled"); + is(n1.value, "12", "mouse down disabled value"); + + var nsbrect = $("n8").spinButtons.getBoundingClientRect(); + ok(nsbrect.left == 0 && nsbrect.top == 0 && nsbrect.right == 0, nsbrect.bottom == 0, + "hidespinbuttons"); var n9 = $("n9"); is(n9.value, "0", "initial value"); @@ -152,6 +202,38 @@ function testValsMinMax(nb, name, valueNumber, min, max, valueFieldNumber) { SimpleTest.is(nb.max, max, name + " max is " + max); } +function testIncreaseDecrease(nb, testid, increment, fixedCount, min, max) { + testid += " "; + + nb.focus(); + nb.value = min; + + // pressing the cursor up and down keys should adjust the value + synthesizeKeyExpectEvent("VK_UP", { }, nb, "change", testid + "key up"); + is(nb.value, String(min + increment), testid + "key up"); + nb.value = max; + synthesizeKeyExpectEvent("VK_UP", { }, nb, "!change", testid + "key up at max"); + is(nb.value, String(max), testid + "key up at max"); + synthesizeKeyExpectEvent("VK_DOWN", { }, nb, "change", testid + "key down"); + is(nb.value, String(max - increment), testid + "key down"); + nb.value = min; + synthesizeKeyExpectEvent("VK_DOWN", { }, nb, "!change", testid + "key down at min"); + is(nb.value, String(min), testid + "key down at min"); + + // check pressing the spinbutton arrows + var sb = nb.spinButtons; + var sbbottom = sb.getBoundingClientRect().bottom - sb.getBoundingClientRect().top - 2; + nb.value = min; + synthesizeMouseExpectEvent(sb, 2, 2, { }, nb, "change", testid + "mouse up"); + is(nb.value, String(min + increment), testid + "mouse up"); + nb.value = max; + synthesizeMouseExpectEvent(sb, 2, 2, { }, nb, "!change", testid + "mouse up at max"); + synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, nb, "change", testid + "mouse down"); + is(nb.value, String(max - increment), testid + "mouse down"); + nb.value = min; + synthesizeMouseExpectEvent(sb, 2, sbbottom, { }, nb, "!change", testid + "mouse down at min"); +} + SimpleTest.waitForFocus(doTests); ]]> diff --git a/toolkit/content/widgets/numberbox.xml b/toolkit/content/widgets/numberbox.xml index d0bcfab04a23..cc1a8d3d188f 100644 --- a/toolkit/content/widgets/numberbox.xml +++ b/toolkit/content/widgets/numberbox.xml @@ -19,16 +19,28 @@ - + + false + null 0 - + + + + + + @@ -81,6 +93,47 @@ + + + + + + + + + + + + + + = this.max); + } + ]]> + + + @@ -99,6 +152,8 @@ this._value = Number(aValue); this.inputField.value = aValue; + this._enableDisableButtons(); + return aValue; ]]> @@ -139,9 +194,26 @@ ]]> + + this._modifyUp(); + + + + this._modifyDown(); + + + + this._modifyUp(); + + + + this._modifyDown(); + + if (event.originalTarget == this.inputField) { - this._validateValue(this.inputField.value); + var newval = this.inputField.value; + this._validateValue(newval); } diff --git a/toolkit/content/widgets/spinbuttons.xml b/toolkit/content/widgets/spinbuttons.xml new file mode 100644 index 000000000000..3a695beacffb --- /dev/null +++ b/toolkit/content/widgets/spinbuttons.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + return document.getAnonymousElementByAttribute(this, "anonid", "increaseButton"); + + + + + return document.getAnonymousElementByAttribute(this, "anonid", "decreaseButton"); + + + + + + + + + + + + + + this.removeAttribute("state"); + + + this.removeAttribute("state"); + + + + + + + + + + diff --git a/toolkit/content/widgets/textbox.xml b/toolkit/content/widgets/textbox.xml index ed43a20fd4c1..08148d4e22e1 100644 --- a/toolkit/content/widgets/textbox.xml +++ b/toolkit/content/widgets/textbox.xml @@ -127,12 +127,7 @@ - // According to https://html.spec.whatwg.org/#do-not-apply, - // setSelectionRange() is only available on a limited set of input types. - if (this.inputField.type == "text" || - this.inputField.tagName == "html:textarea") { - this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd ); - } + this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd ); @@ -193,29 +188,26 @@ if (this.hasAttribute("focused")) return; - let { originalTarget } = event; - if (originalTarget == this) { - // Forward focus to actual HTML input - this.inputField.focus(); - this.setAttribute("focused", "true"); - return; + switch (event.originalTarget) { + case this: + // Forward focus to actual HTML input + this.inputField.focus(); + break; + case this.inputField: + if (this.mIgnoreFocus) { + this.mIgnoreFocus = false; + } else if (this.clickSelectsAll) { + try { + if (!this.editor || !this.editor.composing) + this.editor.selectAll(); + } catch (e) {} + } + break; + default: + // Allow other children (e.g. URL bar buttons) to get focus + return; } - - // We check for the parent nodes to support input[type=number] where originalTarget may be an - // anonymous child input. - if (originalTarget == this.inputField || - originalTarget.localName == "input" && originalTarget.parentNode.parentNode == this.inputField) { - if (this.mIgnoreFocus) { - this.mIgnoreFocus = false; - } else if (this.clickSelectsAll) { - try { - if (!this.editor || !this.editor.composing) - this.editor.selectAll(); - } catch (e) {} - } - this.setAttribute("focused", "true"); - } - // Otherwise, allow other children (e.g. URL bar buttons) to get focus + this.setAttribute("focused", "true"); ]]> @@ -237,7 +229,7 @@ if (!this.mIgnoreClick) { this.mIgnoreFocus = true; - this.setSelectionRange(0, 0); + this.inputField.setSelectionRange(0, 0); if (event.originalTarget == this || event.originalTarget == this.inputField.parentNode) this.inputField.focus(); diff --git a/toolkit/content/xul.css b/toolkit/content/xul.css index 5d8662b6286a..0831195eb2d6 100644 --- a/toolkit/content/xul.css +++ b/toolkit/content/xul.css @@ -919,6 +919,16 @@ autorepeatbutton { -moz-binding: url("chrome://global/content/bindings/scrollbox.xml#autorepeatbutton"); } +/********** spinbuttons ***********/ + +spinbuttons { + -moz-binding: url("chrome://global/content/bindings/spinbuttons.xml#spinbuttons"); +} + +.spinbuttons-button { + -moz-user-focus: ignore; +} + /********** stringbundle **********/ stringbundleset { diff --git a/toolkit/themes/linux/global/in-content/common.css b/toolkit/themes/linux/global/in-content/common.css index 3f6e10f5500c..c82331c9a2f9 100644 --- a/toolkit/themes/linux/global/in-content/common.css +++ b/toolkit/themes/linux/global/in-content/common.css @@ -81,6 +81,10 @@ html|input[type="checkbox"]:-moz-focusring + html|label:before { outline: 1px dotted; } +xul|spinbuttons { + -moz-appearance: none; +} + xul|treechildren::-moz-tree-row(multicol, odd) { background-color: var(--in-content-box-background-odd); } diff --git a/toolkit/themes/linux/global/numberbox.css b/toolkit/themes/linux/global/numberbox.css index a8037f8c9310..0b60d952fd1c 100644 --- a/toolkit/themes/linux/global/numberbox.css +++ b/toolkit/themes/linux/global/numberbox.css @@ -9,10 +9,25 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @namespace html url("http://www.w3.org/1999/xhtml"); +textbox[type="number"] { + -moz-appearance: none; + padding: 0 !important; + border: none; + cursor: default; + background-color: transparent; +} + html|*.numberbox-input { text-align: right; } -textbox[type="number"][hidespinbuttons="true"] html|*.numberbox-input { - -moz-appearance: textfield !important; +.numberbox-input-box { + -moz-box-align: center; + -moz-appearance: spinner-textfield; + margin-right: -1px; + padding: 3px; +} + +textbox[hidespinbuttons="true"] > .numberbox-input-box { + -moz-appearance: textfield; } diff --git a/toolkit/themes/mobile/jar.mn b/toolkit/themes/mobile/jar.mn index c3fe3ded869c..1e3c9e1e0a13 100644 --- a/toolkit/themes/mobile/jar.mn +++ b/toolkit/themes/mobile/jar.mn @@ -23,6 +23,7 @@ toolkit.jar: skin/classic/global/richlistbox.css (global/empty.css) skin/classic/global/scale.css (global/empty.css) skin/classic/global/scrollbox.css (global/empty.css) + skin/classic/global/spinbuttons.css (global/empty.css) skin/classic/global/splitter.css (global/empty.css) skin/classic/global/tabbox.css (global/empty.css) skin/classic/global/textbox.css (global/empty.css) diff --git a/toolkit/themes/osx/global/in-content/common.css b/toolkit/themes/osx/global/in-content/common.css index ba1b24208145..99471334c2ce 100644 --- a/toolkit/themes/osx/global/in-content/common.css +++ b/toolkit/themes/osx/global/in-content/common.css @@ -57,6 +57,11 @@ xul|*.radio-icon { margin-inline-end: 0; } +xul|*.numberbox-input-box { + -moz-appearance: none; + border-width: 0; +} + xul|*.text-link:-moz-focusring { color: var(--in-content-link-highlight); text-decoration: underline; @@ -78,14 +83,29 @@ xul|radio[focused="true"] > .radio-check { -moz-outline-radius: 100%; } -html|*.numberbox-input::-moz-number-spin-up { +xul|spinbuttons { + -moz-appearance: none; +} + +xul|*.spinbuttons-up { + margin-top: 0 !important; border-radius: 4px 4px 0 0; } -html|*.numberbox-input::-moz-number-spin-down { +xul|*.spinbuttons-down { + margin-bottom: 0 !important; border-radius: 0 0 4px 4px; } +xul|*.spinbuttons-button > xul|*.button-box { + padding-inline-start: 2px !important; + padding-inline-end: 3px !important; +} + +xul|*.spinbuttons-button > xul|*.button-box > xul|*.button-text { + display: none; +} + xul|textbox[type="search"]:not([searchbutton]) > .textbox-input-box > .textbox-search-sign { list-style-image: url(chrome://global/skin/icons/search-textbox.svg); margin-inline-end: 5px; diff --git a/toolkit/themes/osx/global/jar.mn b/toolkit/themes/osx/global/jar.mn index 0f4e5fd4dac6..8c249332d2d8 100644 --- a/toolkit/themes/osx/global/jar.mn +++ b/toolkit/themes/osx/global/jar.mn @@ -30,6 +30,7 @@ toolkit.jar: skin/classic/global/richlistbox.css skin/classic/global/scrollbars.css (nativescrollbars.css) skin/classic/global/scrollbox.css + skin/classic/global/spinbuttons.css skin/classic/global/splitter.css skin/classic/global/tabprompts.css skin/classic/global/tabbox.css diff --git a/toolkit/themes/osx/global/numberbox.css b/toolkit/themes/osx/global/numberbox.css index ede7765456a1..73db12495948 100644 --- a/toolkit/themes/osx/global/numberbox.css +++ b/toolkit/themes/osx/global/numberbox.css @@ -5,11 +5,21 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @namespace html url("http://www.w3.org/1999/xhtml"); +textbox[type="number"] { + -moz-appearance: none; + -moz-box-align: center; + padding: 0 !important; + border: none; + background-color: transparent; + cursor: default; +} + html|*.numberbox-input { text-align: right; padding: 0 1px !important; } -textbox[type="number"][hidespinbuttons="true"] html|*.numberbox-input { - -moz-appearance: textfield !important; +.numberbox-input-box { + -moz-appearance: textfield; + margin-right: 4px; } diff --git a/toolkit/themes/osx/global/spinbuttons.css b/toolkit/themes/osx/global/spinbuttons.css new file mode 100644 index 000000000000..bf89520f6812 --- /dev/null +++ b/toolkit/themes/osx/global/spinbuttons.css @@ -0,0 +1,31 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); + +spinbuttons { + height: 24px; + min-height: 24px; + -moz-appearance: spinner; + cursor: default; +} + +.spinbuttons-up { + -moz-appearance: none; + -moz-box-flex: 1; + min-width: 1px; + min-height: 1px; + margin: 0; + padding: 0; +} + +.spinbuttons-down { + -moz-appearance: none; + -moz-box-flex: 1; + min-width: 1px; + min-height: 1px; + margin: 0; + padding: 0; +} + diff --git a/toolkit/themes/shared/in-content/common.inc.css b/toolkit/themes/shared/in-content/common.inc.css index 157cd707014a..081b67c0837b 100644 --- a/toolkit/themes/shared/in-content/common.inc.css +++ b/toolkit/themes/shared/in-content/common.inc.css @@ -165,9 +165,7 @@ html|button { *|button, html|select, xul|colorpicker[type="button"], -xul|menulist, -html|*.numberbox-input::-moz-number-spin-up, -html|*.numberbox-input::-moz-number-spin-down { +xul|menulist { -moz-appearance: none; min-height: 30px; color: var(--in-content-text-color); @@ -203,8 +201,6 @@ html|select:not([size]):not([multiple]):dir(rtl){ html|button:enabled:hover, html|select:not([size]):not([multiple]):enabled:hover, -html|*.numberbox-input::-moz-number-spin-up:hover, -html|*.numberbox-input::-moz-number-spin-down:hover, xul|button:not([disabled="true"]):hover, xul|colorpicker[type="button"]:not([disabled="true"]):hover, xul|menulist:not([disabled="true"]):hover { @@ -213,8 +209,6 @@ xul|menulist:not([disabled="true"]):hover { html|button:enabled:hover:active, html|select:not([size]):not([multiple]):enabled:hover:active, -html|*.numberbox-input::-moz-number-spin-up:hover:active, -html|*.numberbox-input::-moz-number-spin-down:hover:active, xul|button:not([disabled="true"]):hover:active, xul|colorpicker[type="button"]:not([disabled="true"]):hover:active, xul|menulist[open="true"]:not([disabled="true"]) { @@ -223,7 +217,6 @@ xul|menulist[open="true"]:not([disabled="true"]) { html|button:disabled, html|select:disabled, -html|*.numberbox-input:disabled::-moz-number-spin-box, xul|button[disabled="true"], xul|colorpicker[type="button"][disabled="true"], xul|menulist[disabled="true"], @@ -354,22 +347,40 @@ html|*.help-button:hover:active { background-color: var(--in-content-category-background-active); } -html|*.numberbox-input::-moz-number-spin-up, -html|*.numberbox-input::-moz-number-spin-down { - padding: 5px 8px; - margin: 1px; - margin-inline-start: 10px; +xul|*.spinbuttons-button { min-height: initial; + margin-inline-start: 10px !important; + margin-inline-end: 2px !important; } -html|*.numberbox-input::-moz-number-spin-up { +xul|*.spinbuttons-up { + margin-top: 2px !important; border-radius: 1px 1px 0 0; - background-image: url("chrome://global/skin/arrow/arrow-up.gif"); } -html|*.numberbox-input::-moz-number-spin-down { +xul|*.spinbuttons-down { + margin-bottom: 2px !important; border-radius: 0 0 1px 1px; - background-image: url("chrome://global/skin/arrow/arrow-dn.gif"); +} + +xul|*.spinbuttons-button > xul|*.button-box { + padding: 1px 5px 2px !important; +} + +xul|*.spinbuttons-up > xul|*.button-box > xul|*.button-icon { + list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); +} + +xul|*.spinbuttons-up[disabled="true"] > xul|*.button-box > xul|*.button-icon { + list-style-image: url("chrome://global/skin/arrow/arrow-up-dis.gif"); +} + +xul|*.spinbuttons-down > xul|*.button-box > xul|*.button-icon { + list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif"); +} + +xul|*.spinbuttons-down[disabled="true"] > xul|*.button-box > xul|*.button-icon { + list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif"); } xul|menulist:not([editable="true"]) > xul|*.menulist-dropmarker { diff --git a/toolkit/themes/shared/non-mac.jar.inc.mn b/toolkit/themes/shared/non-mac.jar.inc.mn index 4fc04384e6e1..584b7ef9c992 100644 --- a/toolkit/themes/shared/non-mac.jar.inc.mn +++ b/toolkit/themes/shared/non-mac.jar.inc.mn @@ -16,11 +16,14 @@ skin/classic/global/resizer.css (../../windows/global/resizer.css) skin/classic/global/richlistbox.css (../../windows/global/richlistbox.css) skin/classic/global/scrollbars.css (../../windows/global/xulscrollbars.css) + skin/classic/global/spinbuttons.css (../../windows/global/spinbuttons.css) skin/classic/global/tabprompts.css (../../windows/global/tabprompts.css) skin/classic/global/wizard.css (../../windows/global/wizard.css) skin/classic/global/arrow/arrow-dn.gif (../../windows/global/arrow/arrow-dn.gif) + skin/classic/global/arrow/arrow-dn-dis.gif (../../windows/global/arrow/arrow-dn-dis.gif) skin/classic/global/arrow/arrow-up.gif (../../windows/global/arrow/arrow-up.gif) + skin/classic/global/arrow/arrow-up-dis.gif (../../windows/global/arrow/arrow-up-dis.gif) skin/classic/global/arrow/panelarrow-horizontal.svg (../../windows/global/arrow/panelarrow-horizontal.svg) skin/classic/global/arrow/panelarrow-vertical.svg (../../windows/global/arrow/panelarrow-vertical.svg) diff --git a/toolkit/themes/windows/global/jar.mn b/toolkit/themes/windows/global/jar.mn index 52d30807f2c0..317332cfcf4b 100644 --- a/toolkit/themes/windows/global/jar.mn +++ b/toolkit/themes/windows/global/jar.mn @@ -36,8 +36,6 @@ toolkit.jar: skin/classic/global/arrow/arrow-lft-dis.gif (arrow/arrow-lft-dis.gif) skin/classic/global/arrow/arrow-rit.gif (arrow/arrow-rit.gif) skin/classic/global/arrow/arrow-rit-dis.gif (arrow/arrow-rit-dis.gif) - skin/classic/global/arrow/arrow-up-dis.gif (arrow/arrow-up-dis.gif) - skin/classic/global/arrow/arrow-dn-dis.gif (arrow/arrow-dn-dis.gif) skin/classic/global/dirListing/folder.png (dirListing/folder.png) skin/classic/global/dirListing/up.png (dirListing/up.png) skin/classic/global/icons/blacklist_favicon.png (icons/blacklist_favicon.png) diff --git a/toolkit/themes/windows/global/numberbox.css b/toolkit/themes/windows/global/numberbox.css index a8037f8c9310..b5289c4d8237 100644 --- a/toolkit/themes/windows/global/numberbox.css +++ b/toolkit/themes/windows/global/numberbox.css @@ -9,10 +9,16 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @namespace html url("http://www.w3.org/1999/xhtml"); +textbox[type="number"] { + padding: 0 !important; + cursor: default; +} + html|*.numberbox-input { text-align: right; } -textbox[type="number"][hidespinbuttons="true"] html|*.numberbox-input { - -moz-appearance: textfield !important; +.numberbox-input-box { + -moz-box-align: center; } + diff --git a/toolkit/themes/windows/global/spinbuttons.css b/toolkit/themes/windows/global/spinbuttons.css new file mode 100644 index 000000000000..3e333bb47480 --- /dev/null +++ b/toolkit/themes/windows/global/spinbuttons.css @@ -0,0 +1,24 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); + +spinbuttons { + -moz-appearance: spinner; + cursor: default; +} + +.spinbuttons-button { + min-width: 13px; + min-height: 11px; + margin: 0 !important; +} + +.spinbuttons-up { + -moz-appearance: spinner-upbutton; +} + +.spinbuttons-down { + -moz-appearance: spinner-downbutton; +} From 8cddf3257821ce2fcccd7f6b7e9196b711c90cd2 Mon Sep 17 00:00:00 2001 From: Botond Ballo Date: Fri, 9 Feb 2018 15:40:07 -0500 Subject: [PATCH 18/41] Bug 1434250 - Add a bare-bones Box class. r=bas A Box is like a Rect but represented as (x1, y1, x2, y2) instead of (x, y, w, h). The API is bare-bones at the moment; it can be extended as needed by future users. MozReview-Commit-ID: FWv69Y5hP6t --HG-- extra : rebase_source : 1f717727bc724842a2f6adcba9e6cbbe50059436 --- gfx/2d/Box.h | 125 +++++++++++++++++++++++++++++++++++++++++++++++ gfx/2d/moz.build | 1 + 2 files changed, 126 insertions(+) create mode 100644 gfx/2d/Box.h diff --git a/gfx/2d/Box.h b/gfx/2d/Box.h new file mode 100644 index 000000000000..fbbde27c8cde --- /dev/null +++ b/gfx/2d/Box.h @@ -0,0 +1,125 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZILLA_GFX_BOX_H_ +#define MOZILLA_GFX_BOX_H_ + +#include +#include + +#include "mozilla/Attributes.h" +#include "Rect.h" +#include "Types.h" + +namespace mozilla { + +template struct IsPixel; + +namespace gfx { + +/** + * A Box is similar to a Rect (see BaseRect.h), but represented as + * (x1, y1, x2, y2) instead of (x, y, width, height). + * + * Unless otherwise indicated, methods on this class correspond + * to methods on BaseRect. + * + * The API is currently very bare-bones; it may be extended as needed. + * + * Do not use this class directly. Subclass it, pass that subclass as the + * Sub parameter, and only use that subclass. + */ +template +struct BaseBox { +protected: + T x1, y1, x2, y2; + +public: + BaseBox() : x1(0), y1(0), x2(0), y2(0) {} + BaseBox(T aX1, T aY1, T aX2, T aY2) : + x1(aX1), y1(aY1), x2(aX2), y2(aY2) {} + + MOZ_ALWAYS_INLINE T X() const { return x1; } + MOZ_ALWAYS_INLINE T Y() const { return y1; } + MOZ_ALWAYS_INLINE T Width() const { return x2 - x1; } + MOZ_ALWAYS_INLINE T Height() const { return y2 - y1; } + MOZ_ALWAYS_INLINE T XMost() const { return x2; } + MOZ_ALWAYS_INLINE T YMost() const { return y2; } + + MOZ_ALWAYS_INLINE void SetBox(T aX1, T aY1, T aX2, T aY2) + { + x1 = aX1; y1 = aY1; x2 = aX2; y2 = aY2; + } + void SetLeftEdge(T aX1) + { + x1 = aX1; + } + void SetRightEdge(T aX2) + { + x2 = aX2; + } + void SetTopEdge(T aY1) + { + y1 = aY1; + } + void SetBottomEdge(T aY2) + { + y2 = aY2; + } + + static Sub FromRect(const Rect& aRect) + { + return Sub(aRect.x, aRect.y, aRect.XMost(), aRect.YMost()); + } + + MOZ_MUST_USE Sub Intersect(const Sub& aBox) const + { + Sub result; + result.x1 = std::max(x1, aBox.x1); + result.y1 = std::max(y1, aBox.y1); + result.x2 = std::min(x2, aBox.x2); + result.y2 = std::min(y2, aBox.y2); + return result; + } + + bool IsEqualEdges(const Sub& aBox) const + { + return x1 == aBox.x1 && y1 == aBox.y1 && + x2 == aBox.x2 && y2 == aBox.y2; + } +}; + +template +struct IntBoxTyped : + public BaseBox, IntRectTyped>, + public Units { + static_assert(IsPixel::value, + "'units' must be a coordinate system tag"); + typedef BaseBox, IntRectTyped> Super; + typedef IntParam ToInt; + + IntBoxTyped() : Super() {} + IntBoxTyped(ToInt aX1, ToInt aY1, ToInt aX2, ToInt aY2) : + Super(aX1.value, aY1.value, aX2.value, aY2.value) {} +}; + +template +struct BoxTyped : + public BaseBox, RectTyped>, + public Units { + static_assert(IsPixel::value, + "'units' must be a coordinate system tag"); + typedef BaseBox, RectTyped> Super; + + BoxTyped() : Super() {} + BoxTyped(Float aX1, Float aY1, Float aX2, Float aY2) : + Super(aX1, aY1, aX2, aY2) {} +}; + +} +} + +#endif /* MOZILLA_GFX_BOX_H_ */ diff --git a/gfx/2d/moz.build b/gfx/2d/moz.build index 5ca2d2c8a24f..7120a9c6a787 100644 --- a/gfx/2d/moz.build +++ b/gfx/2d/moz.build @@ -20,6 +20,7 @@ EXPORTS.mozilla.gfx += [ 'BezierUtils.h', 'Blur.h', 'BorrowedContext.h', + 'Box.h', 'Coord.h', 'CriticalSection.h', 'DataSurfaceHelpers.h', From 82e944293f147f4eb89e09358fca8b9fee043e6a Mon Sep 17 00:00:00 2001 From: Botond Ballo Date: Wed, 7 Feb 2018 12:52:37 -0500 Subject: [PATCH 19/41] Bug 1434250 - Infrastructure for working with Box types in Gecko code. r=kats MozReview-Commit-ID: 5fbTj6vwOwu --HG-- extra : rebase_source : d9ed5a4c1e75426b612290050f4863b9bb7adc37 --- gfx/src/moz.build | 1 + gfx/src/nsCoordBox.h | 24 ++++++++++++++++++++++++ layout/base/Units.h | 2 ++ 3 files changed, 27 insertions(+) create mode 100644 gfx/src/nsCoordBox.h diff --git a/gfx/src/moz.build b/gfx/src/moz.build index d8f58a48f1f4..1ea990e64359 100644 --- a/gfx/src/moz.build +++ b/gfx/src/moz.build @@ -23,6 +23,7 @@ EXPORTS += [ 'nsColorNameList.h', 'nsColorNames.h', 'nsCoord.h', + 'nsCoordBox.h', 'nsDeviceContext.h', 'nsFont.h', 'nsFontMetrics.h', diff --git a/gfx/src/nsCoordBox.h b/gfx/src/nsCoordBox.h new file mode 100644 index 000000000000..d184d70a7314 --- /dev/null +++ b/gfx/src/nsCoordBox.h @@ -0,0 +1,24 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef NSCOORDBOX_H +#define NSCOORDBOX_H + +#include "mozilla/gfx/Box.h" +#include "nsCoord.h" +#include "nsRect.h" + +// Would like to call this nsBox, but can't because nsBox is a frame type. +struct nsCoordBox : + public mozilla::gfx::BaseBox { + typedef mozilla::gfx::BaseBox Super; + + nsCoordBox() : Super() {} + nsCoordBox(nscoord aX1, nscoord aY1, nscoord aX2, nscoord aY2) : + Super(aX1, aY1, aX2, aY2) {} +}; + +#endif /* NSCOORDBOX_H */ diff --git a/layout/base/Units.h b/layout/base/Units.h index 94b4e15d9142..939b4ecf1997 100644 --- a/layout/base/Units.h +++ b/layout/base/Units.h @@ -7,6 +7,7 @@ #ifndef MOZ_UNITS_H_ #define MOZ_UNITS_H_ +#include "mozilla/gfx/Box.h" #include "mozilla/gfx/Coord.h" #include "mozilla/gfx/Point.h" #include "mozilla/gfx/Rect.h" @@ -74,6 +75,7 @@ typedef gfx::PointTyped LayerPoint; typedef gfx::IntPointTyped LayerIntPoint; typedef gfx::SizeTyped LayerSize; typedef gfx::IntSizeTyped LayerIntSize; +typedef gfx::BoxTyped LayerBox; typedef gfx::RectTyped LayerRect; typedef gfx::IntRectTyped LayerIntRect; typedef gfx::MarginTyped LayerMargin; From d6cea6bca1275fd000a9e0e7e4612aa56457e9c4 Mon Sep 17 00:00:00 2001 From: Botond Ballo Date: Fri, 9 Feb 2018 15:40:13 -0500 Subject: [PATCH 20/41] Bug 1434250 - Use a Box, rather than a Rect, representation for position:sticky inner/outer rects in the Layers API. r=kats MozReview-Commit-ID: 4LDQ3XmWynx --HG-- extra : rebase_source : cebe70a08b27d930618f44cb3923d3ede1171724 --- gfx/layers/LayerAttributes.h | 12 ++--- gfx/layers/Layers.h | 8 ++-- .../composite/AsyncCompositionManager.cpp | 4 +- layout/generic/StickyScrollContainer.cpp | 45 +++++++++++-------- layout/generic/StickyScrollContainer.h | 3 +- layout/painting/nsDisplayList.cpp | 44 +++++++++--------- 6 files changed, 62 insertions(+), 54 deletions(-) diff --git a/gfx/layers/LayerAttributes.h b/gfx/layers/LayerAttributes.h index f384aa29cb54..0dc69f13dfd8 100644 --- a/gfx/layers/LayerAttributes.h +++ b/gfx/layers/LayerAttributes.h @@ -192,8 +192,8 @@ public: mFixedPositionData->mSides = aSides; return true; } - bool SetStickyPositionData(FrameMetrics::ViewID aScrollId, LayerRect aOuter, - LayerRect aInner) + bool SetStickyPositionData(FrameMetrics::ViewID aScrollId, LayerBox aOuter, + LayerBox aInner) { if (mStickyPositionData && mStickyPositionData->mOuter.IsEqualEdges(aOuter) && @@ -290,10 +290,10 @@ public: FrameMetrics::ViewID StickyScrollContainerId() const { return mStickyPositionData->mScrollId; } - const LayerRect& StickyScrollRangeOuter() const { + const LayerBox& StickyScrollRangeOuter() const { return mStickyPositionData->mOuter; } - const LayerRect& StickyScrollRangeInner() const { + const LayerBox& StickyScrollRangeInner() const { return mStickyPositionData->mInner; } @@ -337,8 +337,8 @@ private: struct StickyPositionData { FrameMetrics::ViewID mScrollId; - LayerRect mOuter; - LayerRect mInner; + LayerBox mOuter; + LayerBox mInner; }; Maybe mStickyPositionData; diff --git a/gfx/layers/Layers.h b/gfx/layers/Layers.h index 82751ca36531..4da558eb3c33 100644 --- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -1279,8 +1279,8 @@ public: * dimension, while that component of the scroll position lies within either * interval, the layer should not move relative to its scrolling container. */ - void SetStickyPositionData(FrameMetrics::ViewID aScrollId, LayerRect aOuter, - LayerRect aInner) + void SetStickyPositionData(FrameMetrics::ViewID aScrollId, LayerBox aOuter, + LayerBox aInner) { if (mSimpleAttrs.SetStickyPositionData(aScrollId, aOuter, aInner)) { MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) StickyPositionData", this)); @@ -1368,8 +1368,8 @@ public: LayerPoint GetFixedPositionAnchor() { return mSimpleAttrs.FixedPositionAnchor(); } int32_t GetFixedPositionSides() { return mSimpleAttrs.FixedPositionSides(); } FrameMetrics::ViewID GetStickyScrollContainerId() { return mSimpleAttrs.StickyScrollContainerId(); } - const LayerRect& GetStickyScrollRangeOuter() { return mSimpleAttrs.StickyScrollRangeOuter(); } - const LayerRect& GetStickyScrollRangeInner() { return mSimpleAttrs.StickyScrollRangeInner(); } + const LayerBox& GetStickyScrollRangeOuter() { return mSimpleAttrs.StickyScrollRangeOuter(); } + const LayerBox& GetStickyScrollRangeInner() { return mSimpleAttrs.StickyScrollRangeInner(); } FrameMetrics::ViewID GetScrollbarTargetContainerId() { return mSimpleAttrs.ScrollbarTargetContainerId(); } const ScrollThumbData& GetScrollThumbData() const { return mSimpleAttrs.ThumbData(); } bool IsScrollbarContainer() { return mSimpleAttrs.GetScrollbarContainerDirection().isSome(); } diff --git a/gfx/layers/composite/AsyncCompositionManager.cpp b/gfx/layers/composite/AsyncCompositionManager.cpp index b3cde7b2f96f..5c47bf456baf 100644 --- a/gfx/layers/composite/AsyncCompositionManager.cpp +++ b/gfx/layers/composite/AsyncCompositionManager.cpp @@ -531,8 +531,8 @@ AsyncCompositionManager::AlignFixedAndStickyLayers(Layer* aTransformedSubtreeRoo // the layer should not move relative to the scroll container. To // accomplish this, we limit each dimension of the |translation| to that // part of it which overlaps those intervals. - const LayerRect& stickyOuter = layer->GetStickyScrollRangeOuter(); - const LayerRect& stickyInner = layer->GetStickyScrollRangeInner(); + const LayerBox& stickyOuter = layer->GetStickyScrollRangeOuter(); + const LayerBox& stickyInner = layer->GetStickyScrollRangeInner(); LayerPoint originalTranslation = translation; translation.y = IntervalOverlap(translation.y, stickyOuter.Y(), stickyOuter.YMost()) - diff --git a/layout/generic/StickyScrollContainer.cpp b/layout/generic/StickyScrollContainer.cpp index ca13ca9ffe9f..9a839b05fc0b 100644 --- a/layout/generic/StickyScrollContainer.cpp +++ b/layout/generic/StickyScrollContainer.cpp @@ -150,6 +150,10 @@ StickyScrollContainer::ComputeStickyOffsets(nsIFrame* aFrame) } } +static nscoord gUnboundedNegative = nscoord_MIN / 2; +static nscoord gUnboundedExtent = nscoord_MAX; +static nscoord gUnboundedPositive = gUnboundedNegative + gUnboundedExtent; + void StickyScrollContainer::ComputeStickyLimits(nsIFrame* aFrame, nsRect* aStick, nsRect* aContain) const @@ -157,8 +161,8 @@ StickyScrollContainer::ComputeStickyLimits(nsIFrame* aFrame, nsRect* aStick, NS_ASSERTION(nsLayoutUtils::IsFirstContinuationOrIBSplitSibling(aFrame), "Can't sticky position individual continuations"); - aStick->SetRect(nscoord_MIN/2, nscoord_MIN/2, nscoord_MAX, nscoord_MAX); - aContain->SetRect(nscoord_MIN/2, nscoord_MIN/2, nscoord_MAX, nscoord_MAX); + aStick->SetRect(gUnboundedNegative, gUnboundedNegative, gUnboundedExtent, gUnboundedExtent); + aContain->SetRect(gUnboundedNegative, gUnboundedNegative, gUnboundedExtent, gUnboundedExtent); const nsMargin* computedOffsets = aFrame->GetProperty(nsIFrame::ComputedOffsetProperty()); @@ -275,8 +279,8 @@ StickyScrollContainer::ComputePosition(nsIFrame* aFrame) const } void -StickyScrollContainer::GetScrollRanges(nsIFrame* aFrame, nsRect* aOuter, - nsRect* aInner) const +StickyScrollContainer::GetScrollRanges(nsIFrame* aFrame, nsCoordBox* aOuter, + nsCoordBox* aInner) const { // We need to use the first in flow; continuation frames should not move // relative to each other and should get identical scroll ranges. @@ -284,35 +288,38 @@ StickyScrollContainer::GetScrollRanges(nsIFrame* aFrame, nsRect* aOuter, nsIFrame *firstCont = nsLayoutUtils::FirstContinuationOrIBSplitSibling(aFrame); - nsRect stick; - nsRect contain; - ComputeStickyLimits(firstCont, &stick, &contain); + nsRect stickRect; + nsRect containRect; + ComputeStickyLimits(firstCont, &stickRect, &containRect); - aOuter->SetRect(nscoord_MIN/2, nscoord_MIN/2, nscoord_MAX, nscoord_MAX); - aInner->SetRect(nscoord_MIN/2, nscoord_MIN/2, nscoord_MAX, nscoord_MAX); + nsCoordBox stick = nsCoordBox::FromRect(stickRect); + nsCoordBox contain = nsCoordBox::FromRect(containRect); + + aOuter->SetBox(gUnboundedNegative, gUnboundedNegative, gUnboundedPositive, gUnboundedPositive); + aInner->SetBox(gUnboundedNegative, gUnboundedNegative, gUnboundedPositive, gUnboundedPositive); const nsPoint normalPosition = firstCont->GetNormalPosition(); // Bottom and top - if (stick.YMost() != (nscoord_MAX + (nscoord_MIN/2))) { - aOuter->SetTopEdge(contain.y - stick.YMost()); + if (stick.YMost() != gUnboundedPositive) { + aOuter->SetTopEdge(contain.Y() - stick.YMost()); aInner->SetTopEdge(normalPosition.y - stick.YMost()); } - if (stick.y != nscoord_MIN/2) { - aInner->SetBottomEdge(normalPosition.y - stick.y); - aOuter->SetBottomEdge(contain.YMost() - stick.y); + if (stick.Y() != gUnboundedNegative) { + aInner->SetBottomEdge(normalPosition.y - stick.Y()); + aOuter->SetBottomEdge(contain.YMost() - stick.Y()); } // Right and left - if (stick.XMost() != (nscoord_MAX + (nscoord_MIN/2))) { - aOuter->SetLeftEdge(contain.x - stick.XMost()); + if (stick.XMost() != gUnboundedPositive) { + aOuter->SetLeftEdge(contain.X() - stick.XMost()); aInner->SetLeftEdge(normalPosition.x - stick.XMost()); } - if (stick.x != nscoord_MIN/2) { - aInner->SetRightEdge(normalPosition.x - stick.x); - aOuter->SetRightEdge(contain.XMost() - stick.x); + if (stick.X() != gUnboundedNegative) { + aInner->SetRightEdge(normalPosition.x - stick.X()); + aOuter->SetRightEdge(contain.XMost() - stick.X()); } // Make sure |inner| does not extend outside of |outer|. (The consumers of diff --git a/layout/generic/StickyScrollContainer.h b/layout/generic/StickyScrollContainer.h index fe0943a47e98..3b4fe6bb9d99 100644 --- a/layout/generic/StickyScrollContainer.h +++ b/layout/generic/StickyScrollContainer.h @@ -12,6 +12,7 @@ #ifndef StickyScrollContainer_h #define StickyScrollContainer_h +#include "nsCoordBox.h" #include "nsPoint.h" #include "nsTArray.h" #include "nsIScrollPositionListener.h" @@ -67,7 +68,7 @@ public: * Compute where a frame should not scroll with the page, represented by the * difference of two rectangles. */ - void GetScrollRanges(nsIFrame* aFrame, nsRect* aOuter, nsRect* aInner) const; + void GetScrollRanges(nsIFrame* aFrame, nsCoordBox* aOuter, nsCoordBox* aInner) const; /** * Compute and set the position of a frame and its following continuations. diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp index e6156eeffcf5..ab1d793963be 100644 --- a/layout/painting/nsDisplayList.cpp +++ b/layout/painting/nsDisplayList.cpp @@ -7563,24 +7563,24 @@ nsDisplayStickyPosition::BuildLayer(nsDisplayListBuilder* aBuilder, stickyScrollContainer->ScrollFrame()->GetScrolledFrame()->GetContent()); float factor = presContext->AppUnitsPerDevPixel(); - nsRect outer; - nsRect inner; + nsCoordBox outer; + nsCoordBox inner; stickyScrollContainer->GetScrollRanges(mFrame, &outer, &inner); - LayerRect stickyOuter(NSAppUnitsToFloatPixels(outer.x, factor) * + LayerBox stickyOuter(NSAppUnitsToFloatPixels(outer.X(), factor) * aContainerParameters.mXScale, - NSAppUnitsToFloatPixels(outer.y, factor) * + NSAppUnitsToFloatPixels(outer.Y(), factor) * aContainerParameters.mYScale, - NSAppUnitsToFloatPixels(outer.width, factor) * + NSAppUnitsToFloatPixels(outer.XMost(), factor) * aContainerParameters.mXScale, - NSAppUnitsToFloatPixels(outer.height, factor) * + NSAppUnitsToFloatPixels(outer.YMost(), factor) * aContainerParameters.mYScale); - LayerRect stickyInner(NSAppUnitsToFloatPixels(inner.x, factor) * + LayerBox stickyInner(NSAppUnitsToFloatPixels(inner.X(), factor) * aContainerParameters.mXScale, - NSAppUnitsToFloatPixels(inner.y, factor) * + NSAppUnitsToFloatPixels(inner.Y(), factor) * aContainerParameters.mYScale, - NSAppUnitsToFloatPixels(inner.width, factor) * + NSAppUnitsToFloatPixels(inner.XMost(), factor) * aContainerParameters.mXScale, - NSAppUnitsToFloatPixels(inner.height, factor) * + NSAppUnitsToFloatPixels(inner.YMost(), factor) * aContainerParameters.mYScale); layer->SetStickyPositionData(scrollId, stickyOuter, stickyInner); @@ -7640,8 +7640,8 @@ nsDisplayStickyPosition::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder wr::StickyOffsetBounds hBounds = { 0.0, 0.0 }; nsPoint appliedOffset; - nsRect outer; - nsRect inner; + nsCoordBox outer; + nsCoordBox inner; stickyScrollContainer->GetScrollRanges(mFrame, &outer, &inner); nsIFrame* scrollFrame = do_QueryFrame(stickyScrollContainer->ScrollFrame()); @@ -7693,19 +7693,19 @@ nsDisplayStickyPosition::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder MOZ_ASSERT(appliedOffset.y > 0); } } - if (outer.y != inner.y) { + if (outer.Y() != inner.Y()) { // Similar logic as in the previous section, but this time we care about // the distance from itemBounds.YMost() to scrollPort.YMost(). - nscoord distance = DistanceToRange(outer.y, inner.y); + nscoord distance = DistanceToRange(outer.Y(), inner.Y()); bottomMargin = Some(NSAppUnitsToFloatPixels(scrollPort.YMost() - itemBounds.YMost() + distance, auPerDevPixel)); // And here WR will be moving the item upwards rather than downwards so // again things are inverted from the previous block. - vBounds.min = NSAppUnitsToFloatPixels(outer.y - inner.y, auPerDevPixel); + vBounds.min = NSAppUnitsToFloatPixels(outer.Y() - inner.Y(), auPerDevPixel); // We can't have appliedOffset be both positive and negative, and the top // adjustment takes priority. So here we only update appliedOffset.y if // it wasn't set by the top-sticky case above. - if (appliedOffset.y == 0 && inner.y > 0) { - appliedOffset.y = std::max(0, outer.y) - inner.y; + if (appliedOffset.y == 0 && inner.Y() > 0) { + appliedOffset.y = std::max(0, outer.Y()) - inner.Y(); MOZ_ASSERT(appliedOffset.y < 0); } } @@ -7719,12 +7719,12 @@ nsDisplayStickyPosition::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder MOZ_ASSERT(appliedOffset.x > 0); } } - if (outer.x != inner.x) { - nscoord distance = DistanceToRange(outer.x, inner.x); + if (outer.X() != inner.X()) { + nscoord distance = DistanceToRange(outer.X(), inner.X()); rightMargin = Some(NSAppUnitsToFloatPixels(scrollPort.XMost() - itemBounds.XMost() + distance, auPerDevPixel)); - hBounds.min = NSAppUnitsToFloatPixels(outer.x - inner.x, auPerDevPixel); - if (appliedOffset.x == 0 && inner.x > 0) { - appliedOffset.x = std::max(0, outer.x) - inner.x; + hBounds.min = NSAppUnitsToFloatPixels(outer.X() - inner.X(), auPerDevPixel); + if (appliedOffset.x == 0 && inner.X() > 0) { + appliedOffset.x = std::max(0, outer.X()) - inner.X(); MOZ_ASSERT(appliedOffset.x < 0); } } From bb3e01873589d4d4478334bac05fbe317176d5b2 Mon Sep 17 00:00:00 2001 From: Botond Ballo Date: Wed, 7 Feb 2018 16:01:30 -0500 Subject: [PATCH 21/41] Bug 1434250 - Reftest. r=kats MozReview-Commit-ID: HiPeeyLD6Xh --HG-- extra : rebase_source : 6cb9c15ceec1ca2e4fdc3b7c9f43f22903af2c5d --- .../position-sticky-bug1434250-ref.html | 28 +++++++++++++++++ .../position-sticky-bug1434250.html | 30 +++++++++++++++++++ layout/reftests/async-scrolling/reftest.list | 1 + 3 files changed, 59 insertions(+) create mode 100644 layout/reftests/async-scrolling/position-sticky-bug1434250-ref.html create mode 100644 layout/reftests/async-scrolling/position-sticky-bug1434250.html diff --git a/layout/reftests/async-scrolling/position-sticky-bug1434250-ref.html b/layout/reftests/async-scrolling/position-sticky-bug1434250-ref.html new file mode 100644 index 000000000000..153ca9f8dd06 --- /dev/null +++ b/layout/reftests/async-scrolling/position-sticky-bug1434250-ref.html @@ -0,0 +1,28 @@ + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    + + diff --git a/layout/reftests/async-scrolling/position-sticky-bug1434250.html b/layout/reftests/async-scrolling/position-sticky-bug1434250.html new file mode 100644 index 000000000000..ddb213261625 --- /dev/null +++ b/layout/reftests/async-scrolling/position-sticky-bug1434250.html @@ -0,0 +1,30 @@ + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    + + diff --git a/layout/reftests/async-scrolling/reftest.list b/layout/reftests/async-scrolling/reftest.list index 5aa7046a6506..c91560eb40e1 100644 --- a/layout/reftests/async-scrolling/reftest.list +++ b/layout/reftests/async-scrolling/reftest.list @@ -61,6 +61,7 @@ fuzzy-if(Android,6,8) fails-if(webrender) skip-if(!asyncPan) == fixed-pos-scroll fuzzy-if(Android,6,8) fails-if(webrender) skip-if(!asyncPan) == fixed-pos-scrolled-clip-3.html fixed-pos-scrolled-clip-3-ref.html # bug 1377187 for webrender fuzzy-if(Android,6,8) skip-if(!asyncPan) == fixed-pos-scrolled-clip-4.html fixed-pos-scrolled-clip-4-ref.html skip-if(!asyncPan) == fixed-pos-scrolled-clip-5.html fixed-pos-scrolled-clip-5-ref.html +skip-if(!asyncPan) == position-sticky-bug1434250.html position-sticky-bug1434250-ref.html fuzzy-if(Android,6,4) skip-if(!asyncPan) == position-sticky-scrolled-clip-1.html position-sticky-scrolled-clip-1-ref.html fuzzy-if(Android,6,4) skip == position-sticky-scrolled-clip-2.html position-sticky-scrolled-clip-2-ref.html # bug ?????? - incorrectly applying clip to sticky contents skip-if(!asyncPan) == curtain-effect-1.html curtain-effect-1-ref.html From 5243aa897bb2e69a4aab29b714db231fa3b94889 Mon Sep 17 00:00:00 2001 From: Francois Marier Date: Mon, 5 Feb 2018 18:11:56 -0800 Subject: [PATCH 22/41] Bug 1434741 - Only check final download URL against the application reputation whitelist. r=gcp MozReview-Commit-ID: QCaStgteko --HG-- extra : rebase_source : e3615f93bc036bfb93dee753add0a9c2367393c0 --- .../ApplicationReputation.cpp | 71 ++++++++++------- .../test/unit/test_app_rep.js | 76 +++++++++++++++++++ 2 files changed, 121 insertions(+), 26 deletions(-) diff --git a/toolkit/components/reputationservice/ApplicationReputation.cpp b/toolkit/components/reputationservice/ApplicationReputation.cpp index d4c056e59e48..d846c93ddeae 100644 --- a/toolkit/components/reputationservice/ApplicationReputation.cpp +++ b/toolkit/components/reputationservice/ApplicationReputation.cpp @@ -88,6 +88,8 @@ mozilla::LazyLogModule ApplicationReputationService::prlog("ApplicationReputatio #define LOG(args) MOZ_LOG(ApplicationReputationService::prlog, mozilla::LogLevel::Debug, args) #define LOG_ENABLED() MOZ_LOG_TEST(ApplicationReputationService::prlog, mozilla::LogLevel::Debug) +enum class LookupType { AllowlistOnly, BlocklistOnly, BothLists }; + class PendingDBLookup; // A single use class private to ApplicationReputationService encapsulating an @@ -143,8 +145,10 @@ private: // An array of strings created from certificate information used to whitelist // the downloaded file. nsTArray mAllowlistSpecs; - // The source URI of the download, the referrer and possibly any redirects. + // The source URI of the download (i.e. final URI after any redirects). nsTArray mAnylistSpecs; + // The referrer and possibly any redirects. + nsTArray mBlocklistSpecs; // When we started this query TimeStamp mStartTime; @@ -219,7 +223,7 @@ private: // version. nsresult ParseCertificates(nsIArray* aSigArray); - // Adds the redirects to mAnylistSpecs to be looked up. + // Adds the redirects to mBlocklistSpecs to be looked up. nsresult AddRedirects(nsIArray* aRedirects); // Helper function to ensure that we call PendingLookup::LookupNext or @@ -254,7 +258,7 @@ public: // Look up the given URI in the safebrowsing DBs, optionally on both the allow // list and the blocklist. If there is a match, call // PendingLookup::OnComplete. Otherwise, call PendingLookup::LookupNext. - nsresult LookupSpec(const nsACString& aSpec, bool aAllowlistOnly); + nsresult LookupSpec(const nsACString& aSpec, const LookupType& aLookupType); private: ~PendingDBLookup(); @@ -268,7 +272,7 @@ private: }; nsCString mSpec; - bool mAllowlistOnly; + LookupType mLookupType; RefPtr mPendingLookup; nsresult LookupSpecInternal(const nsACString& aSpec); }; @@ -277,7 +281,7 @@ NS_IMPL_ISUPPORTS(PendingDBLookup, nsIUrlClassifierCallback) PendingDBLookup::PendingDBLookup(PendingLookup* aPendingLookup) : - mAllowlistOnly(false), + mLookupType(LookupType::BothLists), mPendingLookup(aPendingLookup) { LOG(("Created pending DB lookup [this = %p]", this)); @@ -291,11 +295,11 @@ PendingDBLookup::~PendingDBLookup() nsresult PendingDBLookup::LookupSpec(const nsACString& aSpec, - bool aAllowlistOnly) + const LookupType& aLookupType) { LOG(("Checking principal %s [this=%p]", aSpec.Data(), this)); mSpec = aSpec; - mAllowlistOnly = aAllowlistOnly; + mLookupType = aLookupType; nsresult rv = LookupSpecInternal(aSpec); if (NS_FAILED(rv)) { nsAutoCString errorName; @@ -336,13 +340,15 @@ PendingDBLookup::LookupSpecInternal(const nsACString& aSpec) nsAutoCString tables; nsAutoCString allowlist; Preferences::GetCString(PREF_DOWNLOAD_ALLOW_TABLE, allowlist); - if (!allowlist.IsEmpty()) { + if ((mLookupType != LookupType::BlocklistOnly) && !allowlist.IsEmpty()) { tables.Append(allowlist); } nsAutoCString blocklist; Preferences::GetCString(PREF_DOWNLOAD_BLOCK_TABLE, blocklist); - if (!mAllowlistOnly && !blocklist.IsEmpty()) { - tables.Append(','); + if ((mLookupType != LookupType::AllowlistOnly) && !blocklist.IsEmpty()) { + if (!tables.IsEmpty()) { + tables.Append(','); + } tables.Append(blocklist); } return dbService->Lookup(principal, tables, this); @@ -357,7 +363,7 @@ PendingDBLookup::HandleEvent(const nsACString& tables) // Blocklisting trumps allowlisting. nsAutoCString blockList; Preferences::GetCString(PREF_DOWNLOAD_BLOCK_TABLE, blockList); - if (!mAllowlistOnly && FindInReadable(blockList, tables)) { + if ((mLookupType != LookupType::AllowlistOnly) && FindInReadable(blockList, tables)) { mPendingLookup->mBlocklistCount++; Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, BLOCK_LIST); LOG(("Found principal %s on blocklist [this = %p]", mSpec.get(), this)); @@ -367,16 +373,16 @@ PendingDBLookup::HandleEvent(const nsACString& tables) nsAutoCString allowList; Preferences::GetCString(PREF_DOWNLOAD_ALLOW_TABLE, allowList); - if (FindInReadable(allowList, tables)) { + if ((mLookupType != LookupType::BlocklistOnly) && FindInReadable(allowList, tables)) { mPendingLookup->mAllowlistCount++; Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, ALLOW_LIST); LOG(("Found principal %s on allowlist [this = %p]", mSpec.get(), this)); // Don't call onComplete, since blocklisting trumps allowlisting - } else { - LOG(("Didn't find principal %s on any list [this = %p]", mSpec.get(), - this)); - Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, NO_LIST); + return mPendingLookup->LookupNext(); } + + LOG(("Didn't find principal %s on any list [this = %p]", mSpec.get(), this)); + Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, NO_LIST); return mPendingLookup->LookupNext(); } @@ -773,28 +779,40 @@ PendingLookup::LookupNext() // We must call LookupNext or SendRemoteQuery upon return. // Look up all of the URLs that could allow or block this download. // Blocklist first. + + // If any of mAnylistSpecs or mBlocklistSpecs matched the blocklist, + // go ahead and block. if (mBlocklistCount > 0) { return OnComplete(true, NS_OK, nsIApplicationReputationService::VERDICT_DANGEROUS); } + int index = mAnylistSpecs.Length() - 1; nsCString spec; if (index >= 0) { - // Check the source URI, referrer and redirect chain. + // Check the source URI only. spec = mAnylistSpecs[index]; mAnylistSpecs.RemoveElementAt(index); RefPtr lookup(new PendingDBLookup(this)); - return lookup->LookupSpec(spec, false); + return lookup->LookupSpec(spec, LookupType::BothLists); } - // If any of mAnylistSpecs matched the blocklist, go ahead and block. - if (mBlocklistCount > 0) { - return OnComplete(true, NS_OK, - nsIApplicationReputationService::VERDICT_DANGEROUS); + + index = mBlocklistSpecs.Length() - 1; + if (index >= 0) { + // Check the referrer and redirect chain. + spec = mBlocklistSpecs[index]; + mBlocklistSpecs.RemoveElementAt(index); + RefPtr lookup(new PendingDBLookup(this)); + return lookup->LookupSpec(spec, LookupType::BlocklistOnly); } - // If any of mAnylistSpecs matched the allowlist, go ahead and pass. + + // Now that we've looked up all of the URIs against the blocklist, + // if any of mAnylistSpecs or mAllowlistSpecs matched the allowlist, + // go ahead and pass. if (mAllowlistCount > 0) { return OnComplete(false, NS_OK); } + // Only binary signatures remain. index = mAllowlistSpecs.Length() - 1; if (index >= 0) { @@ -802,8 +820,9 @@ PendingLookup::LookupNext() LOG(("PendingLookup::LookupNext: checking %s on allowlist", spec.get())); mAllowlistSpecs.RemoveElementAt(index); RefPtr lookup(new PendingDBLookup(this)); - return lookup->LookupSpec(spec, true); + return lookup->LookupSpec(spec, LookupType::AllowlistOnly); } + // There are no more URIs to check against local list. If the file is // not eligible for remote lookup, bail. if (!IsBinaryFile()) { @@ -986,7 +1005,7 @@ PendingLookup::AddRedirects(nsIArray* aRedirects) nsCString spec; rv = GetStrippedSpec(uri, spec); NS_ENSURE_SUCCESS(rv, rv); - mAnylistSpecs.AppendElement(spec); + mBlocklistSpecs.AppendElement(spec); LOG(("ApplicationReputation: Appending redirect %s\n", spec.get())); // Store the redirect information in the remote request. @@ -1132,7 +1151,7 @@ PendingLookup::DoLookupInternal() nsCString referrerSpec; rv = GetStrippedSpec(referrer, referrerSpec); NS_ENSURE_SUCCESS(rv, rv); - mAnylistSpecs.AppendElement(referrerSpec); + mBlocklistSpecs.AppendElement(referrerSpec); resource->set_referrer(referrerSpec.get()); } nsCOMPtr redirects; diff --git a/toolkit/components/reputationservice/test/unit/test_app_rep.js b/toolkit/components/reputationservice/test/unit/test_app_rep.js index 2d6527021ab5..03b111a9efd3 100644 --- a/toolkit/components/reputationservice/test/unit/test_app_rep.js +++ b/toolkit/components/reputationservice/test/unit/test_app_rep.js @@ -269,6 +269,7 @@ add_test(function test_referer_blacklist() { let counts = get_telemetry_counts(); let listCounts = counts.listCounts; listCounts[BLOCK_LIST]++; + listCounts[NO_LIST]++; gAppRep.queryReputation({ sourceURI: exampleURI, referrerURI: blocklistedURI, @@ -287,6 +288,7 @@ add_test(function test_blocklist_trumps_allowlist() { let counts = get_telemetry_counts(); let listCounts = counts.listCounts; listCounts[BLOCK_LIST]++; + listCounts[ALLOW_LIST]++; gAppRep.queryReputation({ sourceURI: whitelistedURI, referrerURI: blocklistedURI, @@ -306,6 +308,7 @@ add_test(function test_redirect_on_blocklist() { let listCounts = counts.listCounts; listCounts[BLOCK_LIST]++; listCounts[ALLOW_LIST]++; + listCounts[NO_LIST]++; let secman = Services.scriptSecurityManager; let badRedirects = Cc["@mozilla.org/array;1"] .createInstance(Ci.nsIMutableArray); @@ -322,6 +325,8 @@ add_test(function test_redirect_on_blocklist() { }; badRedirects.appendElement(redirect2); + // Add a whitelisted URI that will not be looked up against the + // whitelist (i.e. it will match NO_LIST). let redirect3 = { QueryInterface: XPCOMUtils.generateQI([Ci.nsIRedirectHistoryEntry]), principal: secman.createCodebasePrincipal(whitelistedURI, {}), @@ -340,3 +345,74 @@ add_test(function test_redirect_on_blocklist() { run_next_test(); }); }); + +add_test(function test_whitelisted_source() { + Services.prefs.setCharPref(appRepURLPref, + "http://localhost:4444/download"); + let counts = get_telemetry_counts(); + let listCounts = counts.listCounts; + listCounts[ALLOW_LIST]++; + gAppRep.queryReputation({ + sourceURI: whitelistedURI, + fileSize: 12, + }, function onComplete(aShouldBlock, aStatus) { + Assert.equal(Cr.NS_OK, aStatus); + Assert.ok(!aShouldBlock); + check_telemetry(counts.shouldBlock, listCounts); + run_next_test(); + }); +}); + +add_test(function test_whitelisted_referrer() { + Services.prefs.setCharPref(appRepURLPref, + "http://localhost:4444/download"); + let counts = get_telemetry_counts(); + let listCounts = counts.listCounts; + listCounts[NO_LIST] += 2; + gAppRep.queryReputation({ + sourceURI: exampleURI, + referrerURI: whitelistedURI, + fileSize: 12, + }, function onComplete(aShouldBlock, aStatus) { + Assert.equal(Cr.NS_OK, aStatus); + Assert.ok(!aShouldBlock); + check_telemetry(counts.shouldBlock, listCounts); + run_next_test(); + }); +}); + +add_test(function test_whitelisted_redirect() { + Services.prefs.setCharPref(appRepURLPref, + "http://localhost:4444/download"); + let counts = get_telemetry_counts(); + let listCounts = counts.listCounts; + listCounts[NO_LIST] += 3; + let secman = Services.scriptSecurityManager; + let okayRedirects = Cc["@mozilla.org/array;1"] + .createInstance(Ci.nsIMutableArray); + + let redirect1 = { + QueryInterface: XPCOMUtils.generateQI([Ci.nsIRedirectHistoryEntry]), + principal: secman.createCodebasePrincipal(exampleURI, {}), + }; + okayRedirects.appendElement(redirect1); + + // Add a whitelisted URI that will not be looked up against the + // whitelist (i.e. it will match NO_LIST). + let redirect2 = { + QueryInterface: XPCOMUtils.generateQI([Ci.nsIRedirectHistoryEntry]), + principal: secman.createCodebasePrincipal(whitelistedURI, {}), + }; + okayRedirects.appendElement(redirect2); + + gAppRep.queryReputation({ + sourceURI: exampleURI, + redirects: okayRedirects, + fileSize: 12, + }, function onComplete(aShouldBlock, aStatus) { + Assert.equal(Cr.NS_OK, aStatus); + Assert.ok(!aShouldBlock); + check_telemetry(counts.shouldBlock, listCounts); + run_next_test(); + }); +}); From a1b881280b8cf5789a3e03f881463cb250726e00 Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Mon, 29 Jan 2018 14:56:53 -0800 Subject: [PATCH 23/41] Bug 1434016 - Inline and remove the various security manager overlays. r=keeler This is part of the work to remove XUL overlays. All of these overlays are used only once and do not need to be in their own overlay files. MozReview-Commit-ID: Ecwq2UN52o9 --HG-- extra : rebase_source : 5a9692c7d9965940847ae1d488d1b94a2abf66c7 --- .../pki/resources/content/CAOverlay.xul | 55 ------ .../pki/resources/content/MineOverlay.xul | 64 ------- .../pki/resources/content/OthersOverlay.xul | 54 ------ .../pki/resources/content/WebSitesOverlay.xul | 57 ------ .../pki/resources/content/certManager.xul | 179 +++++++++++++++++- security/manager/pki/resources/jar.mn | 4 - 6 files changed, 170 insertions(+), 243 deletions(-) delete mode 100644 security/manager/pki/resources/content/CAOverlay.xul delete mode 100644 security/manager/pki/resources/content/MineOverlay.xul delete mode 100644 security/manager/pki/resources/content/OthersOverlay.xul delete mode 100644 security/manager/pki/resources/content/WebSitesOverlay.xul diff --git a/security/manager/pki/resources/content/CAOverlay.xul b/security/manager/pki/resources/content/CAOverlay.xul deleted file mode 100644 index ef2fbe232893..000000000000 --- a/security/manager/pki/resources/content/CAOverlay.xul +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - &certmgr.cas2; - - - - - - - - - - - - - - \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nexport const InfoIntl = injectIntl(Info);\n\nexport class Disclaimer extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onAcknowledge = this.onAcknowledge.bind(this);\n }\n\n onAcknowledge() {\n this.props.dispatch(ac.SetPref(this.props.disclaimerPref, false));\n this.props.dispatch(ac.UserEvent({event: \"SECTION_DISCLAIMER_ACKNOWLEDGED\", source: this.props.eventSource}));\n }\n\n render() {\n const {disclaimer} = this.props;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(disclaimer.text)}\n {disclaimer.link &&\n \n {getFormattedMessage(disclaimer.link.title || disclaimer.link)}\n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n\n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nexport const DisclaimerIntl = injectIntl(Disclaimer);\n\nexport class _CollapsibleSection extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onBodyMount = this.onBodyMount.bind(this);\n this.onInfoEnter = this.onInfoEnter.bind(this);\n this.onInfoLeave = this.onInfoLeave.bind(this);\n this.onHeaderClick = this.onHeaderClick.bind(this);\n this.onTransitionEnd = this.onTransitionEnd.bind(this);\n this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n this.state = {enableAnimation: true, isAnimating: false, infoActive: false};\n }\n\n componentWillMount() {\n this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n componentWillUpdate(nextProps) {\n // Check if we're about to go from expanded to collapsed\n if (!getCollapsed(this.props) && getCollapsed(nextProps)) {\n // This next line forces a layout flush of the section body, which has a\n // max-height style set, so that the upcoming collapse animation can\n // animate from that height to the collapsed height. Without this, the\n // update is coalesced and there's no animation from no-max-height to 0.\n this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n }\n }\n\n componentWillUnmount() {\n this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n }\n\n enableOrDisableAnimation() {\n // Only animate the collapse/expand for visible tabs.\n const visible = this.props.document.visibilityState === VISIBLE;\n if (this.state.enableAnimation !== visible) {\n this.setState({enableAnimation: visible});\n }\n }\n\n _setInfoState(nextActive) {\n // Take a truthy value to conditionally change the infoActive state.\n const infoActive = !!nextActive;\n if (infoActive !== this.state.infoActive) {\n this.setState({infoActive});\n }\n }\n\n onBodyMount(node) {\n this.sectionBody = node;\n }\n\n onInfoEnter() {\n // We're getting focus or hover, so info state should be true if not yet.\n this._setInfoState(true);\n }\n\n onInfoLeave(event) {\n // We currently have an active (true) info state, so keep it true only if we\n // have a related event target that is contained \"within\" the current target\n // (section-info-option) as itself or a descendant. Set to false otherwise.\n this._setInfoState(event && event.relatedTarget && (\n event.relatedTarget === event.currentTarget ||\n (event.relatedTarget.compareDocumentPosition(event.currentTarget) &\n Node.DOCUMENT_POSITION_CONTAINS)));\n }\n\n onHeaderClick() {\n // If this.sectionBody is unset, it means that we're in some sort of error\n // state, probably displaying the error fallback, so we won't be able to\n // compute the height, and we don't want to persist the preference.\n if (!this.sectionBody) {\n return;\n }\n\n // Get the current height of the body so max-height transitions can work\n this.setState({\n isAnimating: true,\n maxHeight: `${this.sectionBody.scrollHeight}px`\n });\n this.props.dispatch(ac.SetPref(this.props.prefName, !getCollapsed(this.props)));\n }\n\n onTransitionEnd(event) {\n // Only update the animating state for our own transition (not a child's)\n if (event.target === event.currentTarget) {\n this.setState({isAnimating: false});\n }\n }\n\n renderIcon() {\n const {icon} = this.props;\n if (icon && icon.startsWith(\"moz-extension://\")) {\n return ;\n }\n return ;\n }\n\n render() {\n const isCollapsible = this.props.prefName in this.props.Prefs.values;\n const isCollapsed = getCollapsed(this.props);\n const {enableAnimation, isAnimating, maxHeight} = this.state;\n const {id, infoOption, eventSource, disclaimer} = this.props;\n const disclaimerPref = `section.${id}.showDisclaimer`;\n const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref];\n\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n {this.renderIcon()}\n {this.props.title}\n {isCollapsible && }\n \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {infoOption && }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n {needsDisclaimer && }\n {this.props.children}\n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\n_CollapsibleSection.defaultProps = {\n document: global.document || {\n addEventListener: () => {},\n removeEventListener: () => {},\n visibilityState: \"hidden\"\n },\n Prefs: {values: {}}\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/CollapsibleSection/CollapsibleSection.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n constructor(props) {\n super(props);\n // Just for test dependency injection:\n this.perfSvc = this.props.perfSvc || perfSvc;\n\n this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n this._reportMissingData = false;\n this._timestampHandled = false;\n this._recordedFirstRender = false;\n }\n\n componentDidMount() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n componentDidUpdate() {\n if (!RECORDED_SECTIONS.includes(this.props.id)) {\n return;\n }\n\n this._maybeSendPaintedEvent();\n }\n\n /**\n * Call the given callback after the upcoming frame paints.\n *\n * @note Both setTimeout and requestAnimationFrame are throttled when the page\n * is hidden, so this callback may get called up to a second or so after the\n * requestAnimationFrame \"paint\" for hidden tabs.\n *\n * Newtabs hidden while loading will presumably be fairly rare (other than\n * preloaded tabs, which we will be filtering out on the server side), so such\n * cases should get lost in the noise.\n *\n * If we decide that it's important to find out when something that's hidden\n * has \"painted\", however, another option is to post a message to this window.\n * That should happen even faster than setTimeout, and, at least as of this\n * writing, it's not throttled in hidden windows in Firefox.\n *\n * @param {Function} callback\n *\n * @returns void\n */\n _afterFramePaint(callback) {\n requestAnimationFrame(() => setTimeout(callback, 0));\n }\n\n _maybeSendBadStateEvent() {\n // Follow up bugs:\n // https://github.com/mozilla/activity-stream/issues/3691\n if (!this.props.initialized) {\n // Remember to report back when data is available.\n this._reportMissingData = true;\n } else if (this._reportMissingData) {\n this._reportMissingData = false;\n // Report how long it took for component to become initialized.\n this._sendBadStateEvent();\n }\n }\n\n _maybeSendPaintedEvent() {\n // If we've already handled a timestamp, don't do it again.\n if (this._timestampHandled || !this.props.initialized) {\n return;\n }\n\n // And if we haven't, we're doing so now, so remember that. Even if\n // something goes wrong in the callback, we can't try again, as we'd be\n // sending back the wrong data, and we have to do it here, so that other\n // calls to this method while waiting for the next frame won't also try to\n // handle it.\n this._timestampHandled = true;\n this._afterFramePaint(this._sendPaintedEvent);\n }\n\n /**\n * Triggered by call to render. Only first call goes through due to\n * `_recordedFirstRender`.\n */\n _ensureFirstRenderTsRecorded() {\n // Used as t0 for recording how long component took to initialize.\n if (!this._recordedFirstRender) {\n this._recordedFirstRender = true;\n // topsites_first_render_ts, highlights_first_render_ts.\n const key = `${this.props.id}_first_render_ts`;\n this.perfSvc.mark(key);\n }\n }\n\n /**\n * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n * of how much longer the data took to be ready for display than it would\n * have been the ideal case.\n * https://github.com/mozilla/ping-centre/issues/98\n */\n _sendBadStateEvent() {\n // highlights_data_ready_ts, topsites_data_ready_ts.\n const dataReadyKey = `${this.props.id}_data_ready_ts`;\n this.perfSvc.mark(dataReadyKey);\n\n try {\n const firstRenderKey = `${this.props.id}_first_render_ts`;\n // value has to be Int32.\n const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n // highlights_data_late_by_ms, topsites_data_late_by_ms.\n data: {[`${this.props.id}_data_late_by_ms`]: value}\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true.\n }\n }\n\n _sendPaintedEvent() {\n // Record first_painted event but only send if topsites.\n if (this.props.id !== \"topsites\") {\n return;\n }\n\n // topsites_first_painted_ts.\n const key = `${this.props.id}_first_painted_ts`;\n this.perfSvc.mark(key);\n\n try {\n const data = {};\n data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n this.props.dispatch(ac.OnlyToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data\n }));\n } catch (ex) {\n // If this failed, it's likely because the `privacy.resistFingerprinting`\n // pref is true. We should at least not blow up, and should continue\n // to set this._timestampHandled to avoid going through this again.\n }\n }\n\n render() {\n if (RECORDED_SECTIONS.includes(this.props.id)) {\n this._ensureFirstRenderTsRecorded();\n this._maybeSendBadStateEvent();\n }\n return this.props.children;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n // Borrow the high-resolution timer from the hidden window....\n usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n // we must be running in content space\n // eslint-disable-next-line no-undef\n usablePerfObj = performance;\n} else {\n // This is a dummy object so this file doesn't crash in the node prerendering\n // task.\n usablePerfObj = {\n now() {},\n mark() {}\n };\n}\n\nthis._PerfService = function _PerfService(options) {\n // For testing, so that we can use a fake Window.performance object with\n // known state.\n if (options && options.performanceObj) {\n this._perf = options.performanceObj;\n } else {\n this._perf = usablePerfObj;\n }\n};\n\n_PerfService.prototype = {\n /**\n * Calls the underlying mark() method on the appropriate Window.performance\n * object to add a mark with the given name to the appropriate performance\n * timeline.\n *\n * @param {String} name the name to give the current mark\n * @return {void}\n */\n mark: function mark(str) {\n this._perf.mark(str);\n },\n\n /**\n * Calls the underlying getEntriesByName on the appropriate Window.performance\n * object.\n *\n * @param {String} name\n * @param {String} type eg \"mark\"\n * @return {Array} Performance* objects\n */\n getEntriesByName: function getEntriesByName(name, type) {\n return this._perf.getEntriesByName(name, type);\n },\n\n /**\n * The timeOrigin property from the appropriate performance object.\n * Used to ensure that timestamps from the add-on code and the content code\n * are comparable.\n *\n * @note If this is called from a context without a window\n * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n * window, which appears to be the first created window (and thus\n * timeOrigin) in the browser. Note also, however, there is also a private\n * hidden window, presumably for private browsing, which appears to be\n * created dynamically later. Exactly how/when that shows up needs to be\n * investigated.\n *\n * @return {Number} A double of milliseconds with a precision of 0.5us.\n */\n get timeOrigin() {\n return this._perf.timeOrigin;\n },\n\n /**\n * Returns the \"absolute\" version of performance.now(), i.e. one that\n * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n * be comparable across both chrome and content.\n *\n * @return {Number}\n */\n absNow: function absNow() {\n return this.timeOrigin + this._perf.now();\n },\n\n /**\n * This returns the absolute startTime from the most recent performance.mark()\n * with the given name.\n *\n * @param {String} name the name to lookup the start time for\n *\n * @return {Number} the returned start time, as a DOMHighResTimeStamp\n *\n * @throws {Error} \"No Marks with the name ...\" if none are available\n *\n * @note Always surround calls to this by try/catch. Otherwise your code\n * may fail when the `privacy.resistFingerprinting` pref is true. When\n * this pref is set, all attempts to get marks will likely fail, which will\n * cause this method to throw.\n *\n * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n * for more info.\n */\n getMostRecentAbsMarkStartByName(name) {\n let entries = this.getEntriesByName(name, \"mark\");\n\n if (!entries.length) {\n throw new Error(`No marks with the name ${name}`);\n }\n\n let mostRecentEntry = entries[entries.length - 1];\n return this._perf.timeOrigin + mostRecentEntry.startTime;\n }\n};\n\nthis.perfService = new _PerfService();\nthis.EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/PerfService.jsm","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(\n \n, document.getElementById(\"root\"));\n\naddSnippetsSubscriber(store);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/activity-stream.jsx","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n * the same interface as a Map, but is optionally backed by\n * indexedDB for persistent storage.\n * Call .connect() to open a database connection and restore any\n * previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n constructor(dispatch) {\n super();\n this._db = null;\n this._dispatch = dispatch;\n }\n\n set(key, value) {\n super.set(key, value);\n return this._dbTransaction(db => db.put(value, key));\n }\n\n delete(key) {\n super.delete(key);\n return this._dbTransaction(db => db.delete(key));\n }\n\n clear() {\n super.clear();\n return this._dbTransaction(db => db.clear());\n }\n\n get blockList() {\n return this.get(\"blockList\") || [];\n }\n\n /**\n * blockSnippetById - Blocks a snippet given an id\n *\n * @param {str|int} id The id of the snippet\n * @return {Promise} Resolves when the id has been written to indexedDB,\n * or immediately if the snippetMap is not connected\n */\n async blockSnippetById(id) {\n if (!id) {\n return;\n }\n const {blockList} = this;\n if (!blockList.includes(id)) {\n blockList.push(id);\n this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: blockList}));\n await this.set(\"blockList\", blockList);\n }\n }\n\n disableOnboarding() {\n this._dispatch(ac.AlsoToMain({type: at.DISABLE_ONBOARDING}));\n }\n\n showFirefoxAccounts() {\n this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n }\n\n /**\n * connect - Attaches an indexedDB back-end to the Map so that any set values\n * are also cached in a store. It also restores any existing values\n * that are already stored in the indexedDB store.\n *\n * @return {type} description\n */\n async connect() {\n // Open the connection\n const db = await this._openDB();\n\n // Restore any existing values\n await this._restoreFromDb(db);\n\n // Attach a reference to the db\n this._db = db;\n }\n\n /**\n * _dbTransaction - Returns a db transaction wrapped with the given modifier\n * function as a Promise. If the db has not been connected,\n * it resolves immediately.\n *\n * @param {func} modifier A function to call with the transaction\n * @return {obj} A Promise that resolves when the transaction has\n * completed or errored\n */\n _dbTransaction(modifier) {\n if (!this._db) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const transaction = modifier(\n this._db\n .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n );\n transaction.onsuccess = event => resolve();\n\n /* istanbul ignore next */\n transaction.onerror = event => reject(transaction.error);\n });\n }\n\n _openDB() {\n return new Promise((resolve, reject) => {\n const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n /* istanbul ignore next */\n openRequest.onerror = event => {\n // Try to delete the old database so that we can start this process over\n // next time.\n indexedDB.deleteDatabase(DATABASE_NAME);\n reject(event);\n };\n\n openRequest.onupgradeneeded = event => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n }\n };\n\n openRequest.onsuccess = event => {\n let db = event.target.result;\n\n /* istanbul ignore next */\n db.onerror = err => console.error(err); // eslint-disable-line no-console\n /* istanbul ignore next */\n db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n resolve(db);\n };\n });\n }\n\n _restoreFromDb(db) {\n return new Promise((resolve, reject) => {\n let cursorRequest;\n try {\n cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n } catch (err) {\n // istanbul ignore next\n reject(err);\n // istanbul ignore next\n return;\n }\n\n /* istanbul ignore next */\n cursorRequest.onerror = event => reject(event);\n\n cursorRequest.onsuccess = event => {\n let cursor = event.target.result;\n // Populate the cache from the persistent storage.\n if (cursor) {\n this.set(cursor.key, cursor.value);\n cursor.continue();\n } else {\n // We are done.\n resolve();\n }\n };\n });\n }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n * remote location, or else default snippets if the remote\n * snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n constructor(dispatch) {\n // Initialize the Snippets Map and attaches it to a global so that\n // the snippet payload can interact with it.\n global.gSnippetsMap = new SnippetsMap(dispatch);\n this._onAction = this._onAction.bind(this);\n }\n\n get snippetsMap() {\n return global.gSnippetsMap;\n }\n\n async _refreshSnippets() {\n // Check if the cached version of of the snippets in snippetsMap. If it's too\n // old, blow away the entire snippetsMap.\n const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n if (cachedVersion !== this.appData.version) {\n this.snippetsMap.clear();\n }\n\n // Has enough time passed for us to require an update?\n const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n if (needsUpdate && this.appData.snippetsURL) {\n this.snippetsMap.set(\"snippets-last-update\", Date.now());\n try {\n const response = await fetch(this.appData.snippetsURL);\n if (response.status === 200) {\n const payload = await response.text();\n\n this.snippetsMap.set(\"snippets\", payload);\n this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n _noSnippetFallback() {\n // TODO\n }\n\n _forceOnboardingVisibility(shouldBeVisible) {\n const onboardingEl = document.getElementById(\"onboarding-notification-bar\");\n\n if (onboardingEl) {\n onboardingEl.style.display = shouldBeVisible ? \"\" : \"none\";\n }\n }\n\n _showRemoteSnippets() {\n const snippetsEl = document.getElementById(this.elementId);\n const payload = this.snippetsMap.get(\"snippets\");\n\n if (!snippetsEl) {\n throw new Error(`No element was found with id '${this.elementId}'.`);\n }\n\n // This could happen if fetching failed\n if (!payload) {\n throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n }\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Snippet payload was incorrectly formatted\");\n }\n\n // Note that injecting snippets can throw if they're invalid XML.\n // eslint-disable-next-line no-unsanitized/property\n snippetsEl.innerHTML = payload;\n\n // Scripts injected by innerHTML are inactive, so we have to relocate them\n // through DOM manipulation to activate their contents.\n for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n const relocatedScript = document.createElement(\"script\");\n relocatedScript.text = scriptEl.text;\n scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n }\n }\n\n _onAction(msg) {\n if (msg.data.type === at.SNIPPET_BLOCKED) {\n this.snippetsMap.set(\"blockList\", msg.data.data);\n document.getElementById(\"snippets-container\").style.display = \"none\";\n }\n }\n\n /**\n * init - Fetch the snippet payload and show snippets\n *\n * @param {obj} options\n * @param {str} options.appData.snippetsURL The URL from which we fetch snippets\n * @param {int} options.appData.version The current snippets version\n * @param {str} options.elementId The id of the element in which to inject snippets\n * @param {bool} options.connect Should gSnippetsMap connect to indexedDB?\n */\n async init(options) {\n Object.assign(this, {\n appData: {},\n elementId: \"snippets\",\n connect: true\n }, options);\n\n // Add listener so we know when snippets are blocked on other pages\n if (global.addMessageListener) {\n global.addMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n\n // TODO: Requires enabling indexedDB on newtab\n // Restore the snippets map from indexedDB\n if (this.connect) {\n try {\n await this.snippetsMap.connect();\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n\n // Cache app data values so they can be accessible from gSnippetsMap\n for (const key of Object.keys(this.appData)) {\n this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n }\n\n // Refresh snippets, if enough time has passed.\n await this._refreshSnippets();\n\n // Try showing remote snippets, falling back to defaults if necessary.\n try {\n this._showRemoteSnippets();\n } catch (e) {\n this._noSnippetFallback(e);\n }\n\n window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n this._forceOnboardingVisibility(true);\n this.initialized = true;\n }\n\n uninit() {\n window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n this._forceOnboardingVisibility(false);\n if (global.removeMessageListener) {\n global.removeMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n }\n this.initialized = false;\n }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n * when the store has received the appropriate\n * Snippet data.\n *\n * @param {obj} store The redux store\n * @return {obj} Returns the snippets instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n const snippets = new SnippetsProvider(store.dispatch);\n\n let initializing = false;\n\n store.subscribe(async () => {\n const state = store.getState();\n // state.Prefs.values[\"feeds.snippets\"]: Should snippets be shown?\n // state.Snippets.initialized Is the snippets data initialized?\n // snippets.initialized: Is SnippetsProvider currently initialised?\n if (state.Prefs.values[\"feeds.snippets\"] &&\n !state.Prefs.values.disableSnippets &&\n state.Snippets.initialized &&\n !snippets.initialized &&\n // Don't call init multiple times\n !initializing\n ) {\n initializing = true;\n await snippets.init({appData: state.Snippets});\n initializing = false;\n } else if (\n (state.Prefs.values[\"feeds.snippets\"] === false ||\n state.Prefs.values.disableSnippets === true) &&\n snippets.initialized\n ) {\n snippets.uninit();\n }\n });\n\n // These values are returned for testing purposes\n return snippets;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/snippets.js","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n * // Any sort of data needed to be passed around by actions.\n * payload: site.url,\n * // Primary button AlsoToMain action.\n * action: \"DELETE_HISTORY_URL\",\n * // Primary button USerEvent action.\n * userEvent: \"DELETE\",\n * // Array of locale ids to display.\n * message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n * // Text for primary button.\n * confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n constructor(props) {\n super(props);\n this._handleCancelBtn = this._handleCancelBtn.bind(this);\n this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n }\n\n _handleCancelBtn() {\n this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL}));\n }\n\n _handleConfirmBtn() {\n this.props.data.onConfirm.forEach(this.props.dispatch);\n }\n\n _renderModalMessage() {\n const message_body = this.props.data.body_string_id;\n\n if (!message_body) {\n return null;\n }\n\n return (\n {message_body.map(msg =>

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    )}\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n\n render() {\n if (!this.props.visible) {\n return null;\n }\n\n return (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {this.props.data.icon && }\n {this._renderModalMessage()}\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ConfirmDialog/ConfirmDialog.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1. User clicks \"No Thanks\"\n * 2. User completed the data import\n * 3. After 3 active days\n * 4. User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onLaunchTour = this.onLaunchTour.bind(this);\n this.onCancelTour = this.onCancelTour.bind(this);\n }\n\n onLaunchTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n }\n\n onCancelTour() {\n this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n }\n\n render() {\n return (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/ManualMigration/ManualMigration.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nconst getFormattedMessage = message =>\n (typeof message === \"string\" ? {message} : );\n\nexport const PreferencesInput = props => (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n {props.descString &&

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(props.descString)}\n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    }\n {React.Children.map(props.children,\n child =>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {child}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    )}\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n);\n\nexport class _PreferencesPane extends React.PureComponent {\n constructor(props) {\n super(props);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handlePrefChange = this.handlePrefChange.bind(this);\n this.handleSectionChange = this.handleSectionChange.bind(this);\n this.togglePane = this.togglePane.bind(this);\n this.onWrapperMount = this.onWrapperMount.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.PreferencesPane.visible !== this.props.PreferencesPane.visible) {\n // While the sidebar is open, listen for all document clicks.\n if (this.isSidebarOpen()) {\n document.addEventListener(\"click\", this.handleClickOutside);\n } else {\n document.removeEventListener(\"click\", this.handleClickOutside);\n }\n }\n }\n\n isSidebarOpen() {\n return this.props.PreferencesPane.visible;\n }\n\n handleClickOutside(event) {\n // if we are showing the sidebar and there is a click outside, close it.\n if (this.isSidebarOpen() && !this.wrapper.contains(event.target)) {\n this.togglePane();\n }\n }\n\n handlePrefChange({target: {name, checked}}) {\n let value = checked;\n if (name === \"topSitesRows\") {\n value = checked ? 2 : 1;\n }\n this.props.dispatch(ac.SetPref(name, value));\n }\n\n handleSectionChange({target}) {\n const id = target.name;\n const type = target.checked ? at.SECTION_ENABLE : at.SECTION_DISABLE;\n this.props.dispatch(ac.AlsoToMain({type, data: id}));\n }\n\n togglePane() {\n if (this.isSidebarOpen()) {\n this.props.dispatch({type: at.SETTINGS_CLOSE});\n this.props.dispatch(ac.UserEvent({event: \"CLOSE_NEWTAB_PREFS\"}));\n } else {\n this.props.dispatch({type: at.SETTINGS_OPEN});\n this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n }\n }\n\n onWrapperMount(wrapper) {\n this.wrapper = wrapper;\n }\n\n render() {\n const {props} = this;\n const prefs = props.Prefs.values;\n const sections = props.Sections;\n const isVisible = this.isSidebarOpen();\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n\n \n\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n\n \n\n \n \n\n {sections\n .filter(section => !section.shouldHidePref)\n .map(({id, title, enabled, pref}) =>\n (\n\n {pref && pref.nestedPrefs && pref.nestedPrefs.map(nestedPref =>\n ()\n )}\n )\n )}\n {!prefs.disableSnippets &&
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    }\n\n {!prefs.disableSnippets && }\n\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const PreferencesPane = connect(state => ({\n Prefs: state.Prefs,\n PreferencesPane: state.PreferencesPane,\n Sections: state.Sections\n}))(injectIntl(_PreferencesPane));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/PreferencesPane/PreferencesPane.jsx","class _PrerenderData {\n constructor(options) {\n this.initialPrefs = options.initialPrefs;\n this.initialSections = options.initialSections;\n this._setValidation(options.validation);\n }\n\n get validation() {\n return this._validation;\n }\n\n set validation(value) {\n this._setValidation(value);\n }\n\n get invalidatingPrefs() {\n return this._invalidatingPrefs;\n }\n\n // This is needed so we can use it in the constructor\n _setValidation(value = []) {\n this._validation = value;\n this._invalidatingPrefs = value.reduce((result, next) => {\n if (typeof next === \"string\") {\n result.push(next);\n return result;\n } else if (next && next.oneOf) {\n return result.concat(next.oneOf);\n }\n throw new Error(\"Your validation configuration is not properly configured\");\n }, []);\n }\n\n arePrefsValid(getPref) {\n for (const prefs of this.validation) {\n // {oneOf: [\"foo\", \"bar\"]}\n if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n return false;\n\n // \"foo\"\n } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n return false;\n }\n }\n return true;\n }\n}\n\nthis.PrerenderData = new _PrerenderData({\n initialPrefs: {\n \"migrationExpired\": true,\n \"showTopSites\": true,\n \"showSearch\": true,\n \"topSitesRows\": 2,\n \"collapseTopSites\": false,\n \"section.highlights.collapsed\": false,\n \"section.topstories.collapsed\": false,\n \"feeds.section.topstories\": true,\n \"feeds.section.highlights\": true\n },\n // Prefs listed as invalidating will prevent the prerendered version\n // of AS from being used if their value is something other than what is listed\n // here. This is required because some preferences cause the page layout to be\n // too different for the prerendered version to be used. Unfortunately, this\n // will result in users who have modified some of their preferences not being\n // able to get the benefits of prerendering.\n validation: [\n \"showTopSites\",\n \"showSearch\",\n \"topSitesRows\",\n \"collapseTopSites\",\n \"section.highlights.collapsed\",\n \"section.topstories.collapsed\",\n // This means if either of these are set to their default values,\n // prerendering can be used.\n {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]}\n ],\n initialSections: [\n {\n enabled: true,\n icon: \"pocket\",\n id: \"topstories\",\n order: 1,\n title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}}\n },\n {\n enabled: true,\n id: \"highlights\",\n icon: \"highlights\",\n order: 2,\n title: {id: \"header_highlights\"}\n }\n ]\n});\n\nthis._PrerenderData = _PrerenderData;\nthis.EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/common/PrerenderData.jsm","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.onInputMount = this.onInputMount.bind(this);\n }\n\n handleEvent(event) {\n // Also track search events with our own telemetry\n if (event.detail.type === \"Search\") {\n this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n }\n }\n\n onClick(event) {\n window.gContentSearchController.search(event);\n }\n\n componentWillUnmount() {\n delete window.gContentSearchController;\n }\n\n onInputMount(input) {\n if (input) {\n // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n // can add the appropriate telemetry probes for search. Without the correct\n // name, certain tests like browser_UsageTelemetry_content.js will fail\n // (See github ticket #2348 for more details)\n const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n // the search data and acts as context for the search request (See\n // nsISearchEngine.getSubmission). It is necessary so that search engine\n // plugins can correctly atribute referrals. (See github ticket #3321 for\n // more details)\n const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n // gContentSearchController needs to exist as a global so that tests for\n // the existing about:home can find it; and so it allows these tests to pass.\n // In the future, when activity stream is default about:home, this can be renamed\n window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n healthReportKey, searchSource);\n addEventListener(\"ContentSearchClient\", this);\n } else {\n window.gContentSearchController = null;\n removeEventListener(\"ContentSearchClient\", this);\n }\n }\n\n /*\n * Do not change the ID on the input field, as legacy newtab code\n * specifically looks for the id 'newtab-search-text' on input fields\n * in order to execute searches in various tests\n */\n render() {\n return (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Search/Search.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, IntlProvider} from \"react-intl\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PreferencesPane} from \"content-src/components/PreferencesPane/PreferencesPane\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\nexport class _Base extends React.PureComponent {\n componentWillMount() {\n const {App, locale} = this.props;\n this.sendNewTabRehydrated(App);\n addLocaleDataForReactIntl(locale);\n }\n\n componentDidMount() {\n // Request state AFTER the first render to ensure we don't cause the\n // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n // dispatched right after the store is ready.\n if (this.props.isPrerendered) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n }\n }\n\n componentWillUpdate({App}) {\n this.sendNewTabRehydrated(App);\n }\n\n // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n // data has been consumed e.g. for counting the number of tabs that\n // have rendered that data.\n sendNewTabRehydrated(App) {\n if (App && App.initialized && !this.renderNotified) {\n this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n this.renderNotified = true;\n }\n }\n\n render() {\n const {props} = this;\n const {App, locale, strings} = props;\n const {initialized} = App;\n\n if (!props.isPrerendered && !initialized) {\n return null;\n }\n\n return (\n \n \n \n );\n }\n}\n\nexport class BaseContent extends React.PureComponent {\n render() {\n const {props} = this;\n const {App} = props;\n const {initialized} = App;\n const prefs = props.Prefs.values;\n\n const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n\n const outerClassName = `outer-wrapper${shouldBeFixedToTop ? \" fixed-to-top\" : \"\"} ${prefs.enableWideLayout ? \"wide-layout-enabled\" : \"wide-layout-disabled\"}`;\n\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {prefs.showSearch &&\n \n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {!prefs.migrationExpired && }\n {prefs.showTopSites && }\n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {initialized &&\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs}))(_Base);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Base/Base.jsx","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/lib/constants.js","import {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW = 3;\n\nfunction getFormattedMessage(message) {\n return typeof message === \"string\" ? {message} : ;\n}\n\nexport class Section extends React.PureComponent {\n _dispatchImpressionStats() {\n const {props} = this;\n const maxCards = 3 * props.maxRows;\n const cards = props.rows.slice(0, maxCards);\n\n if (this.needsImpressionStats(cards)) {\n props.dispatch(ac.ImpressionStats({\n source: props.eventSource,\n tiles: cards.map(link => ({id: link.guid}))\n }));\n this.impressionCardGuids = cards.map(link => link.guid);\n }\n }\n\n // This sends an event when a user sees a set of new content. If content\n // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n // only send the event if the page becomes visible again.\n sendImpressionStatsOrAddListener() {\n const {props} = this;\n\n if (!props.shouldSendImpressionStats || !props.dispatch) {\n return;\n }\n\n if (props.document.visibilityState === VISIBLE) {\n this._dispatchImpressionStats();\n } else {\n // We should only ever send the latest impression stats ping, so remove any\n // older listeners.\n if (this._onVisibilityChange) {\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n\n // When the page becoems visible, send the impression stats ping if the section isn't collapsed.\n this._onVisibilityChange = () => {\n if (props.document.visibilityState === VISIBLE) {\n const {id, Prefs} = this.props;\n const isCollapsed = Prefs.values[`section.${id}.collapsed`];\n if (!isCollapsed) {\n this._dispatchImpressionStats();\n }\n props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n };\n props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n }\n }\n\n componentDidMount() {\n const {id, rows, Prefs} = this.props;\n const isCollapsed = Prefs.values[`section.${id}.collapsed`];\n if (rows.length && !isCollapsed) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {props} = this;\n const {id, Prefs} = props;\n const isCollapsedPref = `section.${id}.collapsed`;\n const isCollapsed = Prefs.values[isCollapsedPref];\n const wasCollapsed = prevProps.Prefs.values[isCollapsedPref];\n if (\n // Don't send impression stats for the empty state\n props.rows.length &&\n (\n // We only want to send impression stats if the content of the cards has changed\n // and the section is not collapsed...\n (props.rows !== prevProps.rows && !isCollapsed) ||\n // or if we are expanding a section that was collapsed.\n (wasCollapsed && !isCollapsed)\n )\n ) {\n this.sendImpressionStatsOrAddListener();\n }\n }\n\n needsImpressionStats(cards) {\n if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n return true;\n }\n\n for (let i = 0; i < cards.length; i++) {\n if (cards[i].guid !== this.impressionCardGuids[i]) {\n return true;\n }\n }\n\n return false;\n }\n\n numberOfPlaceholders(items) {\n if (items === 0) {\n return CARDS_PER_ROW;\n }\n const remainder = items % CARDS_PER_ROW;\n if (remainder === 0) {\n return 0;\n }\n return CARDS_PER_ROW - remainder;\n }\n\n render() {\n const {\n id, eventSource, title, icon, rows,\n infoOption, emptyState, dispatch, maxRows,\n contextMenuOptions, initialized, disclaimer\n } = this.props;\n const maxCards = CARDS_PER_ROW * maxRows;\n\n // Show topics only for top stories and if it's not initialized yet (so\n // content doesn't shift when it is loaded) or has loaded with topics\n const shouldShowTopics = (id === \"topstories\" &&\n (!this.props.topics || this.props.topics.length > 0));\n\n const realRows = rows.slice(0, maxCards);\n const placeholders = this.numberOfPlaceholders(realRows.length);\n\n // The empty state should only be shown after we have initialized and there is no content.\n // Otherwise, we should show placeholders.\n const shouldShowEmptyState = initialized && !rows.length;\n\n //
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <-- React component\n //
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <-- HTML5 element\n return (\n \n\n {!shouldShowEmptyState && (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n {realRows.map((link, index) => link &&\n )}\n {placeholders > 0 && [...new Array(placeholders)].map((_, i) => )}\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    )}\n {shouldShowEmptyState &&\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n :\n }\n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {getFormattedMessage(emptyState.message)}\n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    }\n {shouldShowTopics && }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\n\nSection.defaultProps = {\n document: global.document,\n rows: [],\n emptyState: {},\n title: \"\"\n};\n\nexport const SectionIntl = injectIntl(Section);\n\nexport class _Sections extends React.PureComponent {\n render() {\n const sections = this.props.Sections;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {sections\n .filter(section => section.enabled)\n .map(section => )}\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Sections/Sections.jsx","export const cardContextTypes = {\n history: {\n intlID: \"type_label_visited\",\n icon: \"historyItem\"\n },\n bookmark: {\n intlID: \"type_label_bookmarked\",\n icon: \"bookmark-added\"\n },\n trending: {\n intlID: \"type_label_recommended\",\n icon: \"trending\"\n },\n now: {\n intlID: \"type_label_now\",\n icon: \"now\"\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Card/types.js","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {cardContextTypes} from \"./types\";\nimport {FormattedMessage} from \"react-intl\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class Card extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n activeCard: null,\n imageLoaded: false,\n showContextMenu: false\n };\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n this.onLinkClick = this.onLinkClick.bind(this);\n }\n\n /**\n * Helper to conditionally load an image and update state when it loads.\n */\n async maybeLoadImage() {\n // No need to load if it's already loaded or no image\n const {image} = this.props.link;\n if (!this.state.imageLoaded && image) {\n // Initialize a promise to share a load across multiple card updates\n if (!gImageLoading.has(image)) {\n const loaderPromise = new Promise((resolve, reject) => {\n const loader = new Image();\n loader.addEventListener(\"load\", resolve);\n loader.addEventListener(\"error\", reject);\n loader.src = image;\n });\n\n // Save and remove the promise only while it's pending\n gImageLoading.set(image, loaderPromise);\n loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(image)).catch();\n }\n\n // Wait for the image whether just started loading or reused promise\n await gImageLoading.get(image);\n\n // Only update state if we're still waiting to load the original image\n if (this.props.link.image === image && !this.state.imageLoaded) {\n this.setState({imageLoaded: true});\n }\n }\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.setState({\n activeCard: this.props.index,\n showContextMenu: true\n });\n }\n\n onLinkClick(event) {\n event.preventDefault();\n const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n this.props.dispatch(ac.AlsoToMain({\n type: at.OPEN_LINK,\n data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n }));\n\n if (this.props.isWebExtension) {\n this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n source: this.props.eventSource,\n url: this.props.link.url,\n action_position: this.props.index\n }));\n } else {\n this.props.dispatch(ac.UserEvent({\n event: \"CLICK\",\n source: this.props.eventSource,\n action_position: this.props.index\n }));\n\n if (this.props.shouldSendImpressionStats) {\n this.props.dispatch(ac.ImpressionStats({\n source: this.props.eventSource,\n click: 0,\n tiles: [{id: this.props.link.guid, pos: this.props.index}]\n }));\n }\n }\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n componentDidMount() {\n this.maybeLoadImage();\n }\n\n componentDidUpdate() {\n this.maybeLoadImage();\n }\n\n componentWillReceiveProps(nextProps) {\n // Clear the image state if changing images\n if (nextProps.link.image !== this.props.link.image) {\n this.setState({imageLoaded: false});\n }\n }\n\n render() {\n const {index, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n const {props} = this;\n const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n // Display \"now\" as \"trending\" until we have new strings #3402\n const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n const hasImage = link.image || link.hasImage;\n const imageStyle = {backgroundImage: link.image ? `url(${link.image})` : \"none\"};\n\n return (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\nCard.defaultProps = {link: {}};\n\nexport const PlaceholderCard = () => ;\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Card/Card.jsx","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n render() {\n const {url, name} = this.props;\n return (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • {name}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\n\nexport class Topics extends React.PureComponent {\n render() {\n const {topics, read_more_endpoint} = this.props;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {topics && topics.map(t => )}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n\n {read_more_endpoint && \n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/Topics/Topics.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n const countTopSitesTypes = (acc, link) => {\n if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n acc.tippytop++;\n } else if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n acc.rich_icon++;\n } else if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n acc.screenshot_with_icon++;\n } else if (link.screenshot) {\n acc.screenshot++;\n } else {\n acc.no_image++;\n }\n\n return acc;\n };\n\n return topSites.reduce(countTopSitesTypes, {\n \"screenshot_with_icon\": 0,\n \"screenshot\": 0,\n \"tippytop\": 0,\n \"rich_icon\": 0,\n \"no_image\": 0\n });\n}\n\nexport class _TopSites extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onAddButtonClick = this.onAddButtonClick.bind(this);\n this.onFormClose = this.onFormClose.bind(this);\n }\n\n /**\n * Dispatch session statistics about the quality of TopSites icons and pinned count.\n */\n _dispatchTopSitesStats() {\n const topSites = this._getVisibleTopSites();\n const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n // Dispatch telemetry event with the count of TopSites images types.\n this.props.dispatch(ac.AlsoToMain({\n type: at.SAVE_SESSION_PERF_DATA,\n data: {topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned}\n }));\n }\n\n /**\n * Return the TopSites that are visible based on prefs and window width.\n */\n _getVisibleTopSites() {\n // We hide 2 sites per row when not in the wide layout.\n let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n // $break-point-widest = 1072px (from _variables.scss)\n if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n sitesPerRow -= 2;\n }\n return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n }\n\n componentDidUpdate() {\n this._dispatchTopSitesStats();\n }\n\n componentDidMount() {\n this._dispatchTopSitesStats();\n }\n\n onAddButtonClick() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_ADD_FORM_OPEN\"\n }));\n // Negative index will prepend the TopSite at the beginning of the list\n this.props.dispatch({type: at.TOP_SITES_EDIT, data: {index: -1}});\n }\n\n onFormClose() {\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT_CLOSE\"\n }));\n this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n }\n\n render() {\n const {props} = this;\n const infoOption = {\n header: {id: \"settings_pane_topsites_header\"},\n body: {id: \"settings_pane_topsites_body\"}\n };\n const {editForm} = props.TopSites;\n\n return (\n } infoOption={infoOption} prefName=\"collapseTopSites\" Prefs={props.Prefs} dispatch={props.dispatch}>\n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n {editForm &&\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n );\n }\n}\n\nexport const TopSites = connect(state => ({\n TopSites: state.TopSites,\n Prefs: state.Prefs,\n TopSitesRows: state.Prefs.values.topSitesRows\n}))(injectIntl(_TopSites));\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSites.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\n\nexport class TopSiteForm extends React.PureComponent {\n constructor(props) {\n super(props);\n const {site} = props;\n this.state = {\n label: site ? (site.label || site.hostname) : \"\",\n url: site ? site.url : \"\",\n validationError: false\n };\n this.onLabelChange = this.onLabelChange.bind(this);\n this.onUrlChange = this.onUrlChange.bind(this);\n this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n this.onUrlInputMount = this.onUrlInputMount.bind(this);\n }\n\n onLabelChange(event) {\n this.resetValidation();\n this.setState({\"label\": event.target.value});\n }\n\n onUrlChange(event) {\n this.resetValidation();\n this.setState({\"url\": event.target.value});\n }\n\n onCancelButtonClick(ev) {\n ev.preventDefault();\n this.props.onClose();\n }\n\n onDoneButtonClick(ev) {\n ev.preventDefault();\n\n if (this.validateForm()) {\n const site = {url: this.cleanUrl()};\n const {index} = this.props;\n if (this.state.label !== \"\") {\n site.label = this.state.label;\n }\n\n this.props.dispatch(ac.AlsoToMain({\n type: at.TOP_SITES_PIN,\n data: {site, index}\n }));\n this.props.dispatch(ac.UserEvent({\n source: TOP_SITES_SOURCE,\n event: \"TOP_SITES_EDIT\",\n action_position: index\n }));\n\n this.props.onClose();\n }\n }\n\n cleanUrl() {\n let {url} = this.state;\n // If we are missing a protocol, prepend http://\n if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n url = `http://${url}`;\n }\n return url;\n }\n\n resetValidation() {\n if (this.state.validationError) {\n this.setState({validationError: false});\n }\n }\n\n validateUrl() {\n try {\n return !!new URL(this.cleanUrl());\n } catch (e) {\n return false;\n }\n }\n\n validateForm() {\n this.resetValidation();\n // Only the URL is required and must be valid.\n if (!this.state.url || !this.validateUrl()) {\n this.setState({validationError: true});\n this.inputUrl.focus();\n return false;\n }\n return true;\n }\n\n onUrlInputMount(input) {\n this.inputUrl = input;\n }\n\n render() {\n // For UI purposes, editing without an existing link is \"add\"\n const showAsAdd = !this.props.site;\n\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n {this.state.validationError &&\n \n }\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n );\n }\n}\n\nTopSiteForm.defaultProps = {\n TopSite: null,\n index: -1\n};\n\n\n\n// WEBPACK FOOTER //\n// ./system-addon/content-src/components/TopSites/TopSiteForm.jsx","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n MIN_CORNER_FAVICON_SIZE,\n MIN_RICH_FAVICON_SIZE,\n TOP_SITES_CONTEXT_MENU_OPTIONS,\n TOP_SITES_SOURCE\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onDragEvent = this.onDragEvent.bind(this);\n }\n\n /*\n * Helper to determine whether the drop zone should allow a drop. We only allow\n * dropping top sites for now.\n */\n _allowDrop(e) {\n return e.dataTransfer.types.includes(\"text/topsite-index\");\n }\n\n onDragEvent(event) {\n switch (event.type) {\n case \"click\":\n // Stop any link clicks if we started any dragging\n if (this.dragged) {\n event.preventDefault();\n }\n break;\n case \"dragstart\":\n this.dragged = true;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n event.target.blur();\n this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n break;\n case \"dragend\":\n this.props.onDragEvent(event);\n break;\n case \"dragenter\":\n case \"dragover\":\n case \"drop\":\n if (this._allowDrop(event)) {\n event.preventDefault();\n this.props.onDragEvent(event, this.props.index);\n }\n break;\n case \"mousedown\":\n // Reset at the first mouse event of a potential drag\n this.dragged = false;\n break;\n }\n }\n\n render() {\n const {children, className, isDraggable, link, onClick, title} = this.props;\n const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}`;\n const {tippyTopIcon, faviconSize} = link;\n const [letterFallback] = title;\n let imageClassName;\n let imageStyle;\n let showSmallFavicon = false;\n let smallFaviconStyle;\n let smallFaviconFallback;\n if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n // styles and class names for top sites with rich icons\n imageClassName = \"top-site-icon rich-icon\";\n imageStyle = {\n backgroundColor: link.backgroundColor,\n backgroundImage: `url(${tippyTopIcon || link.favicon})`\n };\n } else {\n // styles and class names for top sites with screenshot + small icon in top left corner\n imageClassName = `screenshot${link.screenshot ? \" active\" : \"\"}`;\n imageStyle = {backgroundImage: link.screenshot ? `url(${link.screenshot})` : \"none\"};\n\n // only show a favicon in top left if it's greater than 16x16\n if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n showSmallFavicon = true;\n smallFaviconStyle = {backgroundImage: `url(${link.favicon})`};\n } else if (link.screenshot) {\n // Don't show a small favicon if there is no screenshot, because that\n // would result in two fallback icons\n showSmallFavicon = true;\n smallFaviconFallback = true;\n }\n }\n let draggableProps = {};\n if (isDraggable) {\n draggableProps = {\n onClick: this.onDragEvent,\n onDragEnd: this.onDragEvent,\n onDragStart: this.onDragEvent,\n onMouseDown: this.onDragEvent\n };\n }\n return (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • );\n }\n}\nTopSiteLink.defaultProps = {\n title: \"\",\n link: {},\n isDraggable: true\n};\n\nexport class TopSite extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {showContextMenu: false};\n this.onLinkClick = this.onLinkClick.bind(this);\n this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n this.onMenuUpdate = this.onMenuUpdate.bind(this);\n }\n\n userEvent(event) {\n this.props.dispatch(ac.UserEvent({\n event,\n source: TOP_SITES_SOURCE,\n action_position: this.props.index\n }));\n }\n\n onLinkClick(ev) {\n this.userEvent(\"CLICK\");\n }\n\n onMenuButtonClick(event) {\n event.preventDefault();\n this.props.onActivate(this.props.index);\n this.setState({showContextMenu: true});\n }\n\n onMenuUpdate(showContextMenu) {\n this.setState({showContextMenu});\n }\n\n render() {\n const {props} = this;\n const {link} = props;\n const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n const title = link.label || link.hostname;\n return (\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n \n \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    );\n }\n}\nTopSite.defaultProps = {\n link: {},\n onActivate() {}\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onEditButtonClick = this.onEditButtonClick.bind(this);\n }\n\n onEditButtonClick() {\n this.props.dispatch(\n {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n }\n\n render() {\n return (\n

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Kakube maloyo

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Lami tam obedo Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Lok macuk gi lamal:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wiye madito

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Kakube maloyo

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Lami tam obedo Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Lok macuk gi lamal:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wiye madito

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js index a5a2157e8053..167f26b5a1dc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ach/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ityeko weng. Rot doki lacen pi lok madito mapol ki bot {provider}. Pe itwero kuro? Yer lok macuke lamal me nongo lok mabeco mapol ki i but kakube.", "manual_migration_explanation2": "Tem Firefox ki alamabuk, gin mukato ki mung me donyo ki ii layeny mukene.", "manual_migration_cancel_button": "Pe Apwoyo", - "manual_migration_import_button": "Kel kombedi" + "manual_migration_import_button": "Kel kombedi", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html index 5c5f4a6645f9..45b56ea38578 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        المواقع الأكثر زيارة

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ينصح به Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        المواضيع الشائعة:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          أهم الأحداث

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          المواقع الأكثر زيارة

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ينصح به Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          المواضيع الشائعة:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            أهم الأحداث

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js index f29ba945cc40..473e5b5fbd84 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ar/activity-stream-strings.js @@ -10,7 +10,7 @@ window.gActivityStreamStrings = { "header_recommended_by": "ينصح به {provider}", "header_bookmarks_placeholder": "لا علامات لديك بعد.", "header_stories_from": "من", - "context_menu_button_sr": "Open context menu for {title}", + "context_menu_button_sr": "افتح قائمة {title} السياقية", "type_label_visited": "مُزارة", "type_label_bookmarked": "معلّمة", "type_label_synced": "مُزامنة من جهاز آخر", @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "حرّر هذا الموقع", "edit_topsites_dismiss_button": "احذف هذا الموقع", "edit_topsites_add_button": "أضِفْ", - "edit_topsites_add_button_tooltip": "Add Top Site", + "edit_topsites_add_button_tooltip": "أضف موقعًا شائعًا", "topsites_form_add_header": "موقع شائع جديد", "topsites_form_edit_header": "حرّر الموقع الشائع", "topsites_form_title_placeholder": "أدخل عنوانًا", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "لا جديد. تحقق لاحقًا للحصول على مزيد من أهم الأخبار من {provider}. لا يمكنك الانتظار؟ اختر موضوعًا شائعًا للعثور على المزيد من القصص الرائعة من جميع أنحاء الوِب.", "manual_migration_explanation2": "جرب فَيَرفُكس مع العلامات، و التأريخ، و كلمات السر من متصفح آخر.", "manual_migration_cancel_button": "لا شكرًا", - "manual_migration_import_button": "استورد الآن" + "manual_migration_import_button": "استورد الآن", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html index adf154b53ce4..f1de95c07453 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Más visitaos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendáu por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Temes populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destacaos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Más visitaos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendáu por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Temes populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destacaos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js index 96dacf771d79..1e09d8dcbeb9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ast/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Prueba Firefox colos marcadores, hestorial y contraseñes d'otru restolador.", "manual_migration_cancel_button": "Non, gracies", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html index 71a76c266f5e..d718c27a66e6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Qabaqcıl Saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket məsləhət görür

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Məşhur Mövzular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Seçilmişlər

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Qabaqcıl Saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket məsləhət görür

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Məşhur Mövzular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Seçilmişlər

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js index ed3d804b8e57..42a0b5436091 100644 --- a/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/az/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Hamısını oxudunuz. Yeni {provider} məqalələri üçün daha sonra təkrar yoxlayın. Gözləyə bilmirsiz? Məşhur mövzu seçərək internetdən daha çox gözəl məqalələr tapın.", "manual_migration_explanation2": "Firefox səyyahını digər səyyahlardan olan əlfəcin, tarixçə və parollar ilə yoxlayın.", "manual_migration_cancel_button": "Xeyr, Təşəkkürlər", - "manual_migration_import_button": "İndi idxal et" + "manual_migration_import_button": "İndi idxal et", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html index ab581f40cdfa..8c55f735e8f6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Папулярныя сайты

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Рэкамендавана Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Папулярныя тэмы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Выбранае

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Папулярныя сайты

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Рэкамендавана Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Папулярныя тэмы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Выбранае

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js index de6c0a2154c9..84c976f21a83 100644 --- a/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/be/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Гатова. Праверце пазней, каб убачыць больш матэрыялаў ад {provider}. Не жадаеце чакаць? Выберыце папулярную тэму, каб знайсці больш цікавых матэрыялаў з усяго Інтэрнэту.", "manual_migration_explanation2": "Паспрабуйце Firefox з закладкамі, гісторыяй і паролямі з іншага браўзера.", "manual_migration_cancel_button": "Не, дзякуй", - "manual_migration_import_button": "Імпартаваць зараз" + "manual_migration_import_button": "Імпартаваць зараз", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html index 06616bca876c..1334f0149666 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Често посещавани

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Препоръчано от Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярни теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Акценти

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Често посещавани

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Препоръчано от Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярни теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Акценти

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js index f2da3753bf7d..b03014f9e145 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bg/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Разгледахте всичко. Проверете по-късно за повече истории от {provider}. Нямате търпение? Изберете популярна тема, за да откриете повече истории из цялата Мрежа.", "manual_migration_explanation2": "Опитайте Firefox с отметките, историята и паролите от друг четец.", "manual_migration_cancel_button": "Не, благодаря", - "manual_migration_import_button": "Внасяне" + "manual_migration_import_button": "Внасяне", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html index 4ca874307090..e78e1f3699a1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            শীর্ঘ সাইট

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              শীর্ঘ সাইট

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js index f997503331b5..33e36bd87be1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bn-BD/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন" + "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html index dbe87d8bbed4..1212089ea788 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                শীর্ষ সাইটগুলি

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  শীর্ষ সাইটগুলি

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket দ্বারা সুপারিশকৃত

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  জনপ্রিয় বিষয়:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    হাইলাইটস

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js index 4827249b28b5..ecd084886f35 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bn-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।", "manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।", "manual_migration_cancel_button": "প্রয়োজন নেই", - "manual_migration_import_button": "এখনই ইম্পোর্ট করুন" + "manual_migration_import_button": "এখনই ইম্পোর্ট করুন", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html index 2a9a48cf149f..e7e9874954f4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Lec'hiennoù pennañ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Erbedet gant Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Danvezioù brudet:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Mareoù pouezus

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Lec'hiennoù pennañ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Erbedet gant Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Danvezioù brudet:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Mareoù pouezus

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js index 87f6303c631f..4d034aa5b49b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/br/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Aet oc'h betek penn. Distroit diwezhatoc'h evit muioc’h a istorioù digant {provider}. N’oc'h ket evit gortoz? Dibabit un danvez brudet evit klask muioc’h a bennadoù dedennus eus pep lec’h er web.", "manual_migration_explanation2": "Amprouit Firefox gant sinedoù, roll istor ha gerioù-tremen ur merdeer all.", "manual_migration_cancel_button": "N'am bo ket", - "manual_migration_import_button": "Emporzhiañ bremañ" + "manual_migration_import_button": "Emporzhiañ bremañ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html index 2ec670717798..be0b94dd6622 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Najposjećenije stranice

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Najposjećenije stranice

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js index 011b24c66ff1..35c87091ee8e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/bs/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", "manual_migration_explanation2": "Probajte Firefox s zabilješkama, historijom i lozinkama iz drugog pretraživača.", "manual_migration_cancel_button": "Ne, hvala", - "manual_migration_import_button": "Uvezi sada" + "manual_migration_import_button": "Uvezi sada", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html index 594dd3a3fd0f..01cbe0ebc77c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Llocs principals

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomanat per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Temes populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destacats

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Llocs principals

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomanat per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Temes populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destacats

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js index 2fbcf7c0015c..5767ffa6c7da 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ca/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ja esteu al dia. Torneu més tard per veure més articles populars de {provider}. No podeu esperar? Trieu un tema popular per descobrir els articles més interessants de tot el web.", "manual_migration_explanation2": "Proveu el Firefox amb les adreces d'interès, l'historial i les contrasenyes d'un altre navegador.", "manual_migration_cancel_button": "No, gràcies", - "manual_migration_import_button": "Importa-ho ara" + "manual_migration_import_button": "Importa-ho ara", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html index b666c9f1f8f3..fcbe15acbb52 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Utziläj taq Ruxaq K'amaya'l

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Chilab'en ruma Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Nima'q taq Na'oj:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Taq k'ewachinïk

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Utziläj taq Ruxaq K'amaya'l

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Chilab'en ruma Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Nima'q taq Na'oj:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Taq k'ewachinïk

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js index 744997be6ebb..4a46e5f49f71 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cak/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Xaq'i'. Katzolin chik pe richin ye'ak'ül ri utziläj taq rub'anob'al {provider}. ¿La man noyob'en ta? Tacha' jun ütz na'oj richin nawïl ch'aqa' chik taq b'anob'äl e k'o chi rij ri ajk'amaya'l.", "manual_migration_explanation2": "Tatojtob'ej Firefox kik'in ri taq ruyaketal, runatab'äl chuqa' taq ewan rutzij jun chik okik'amaya'l.", "manual_migration_cancel_button": "Mani matyox", - "manual_migration_import_button": "Tijik' pe" + "manual_migration_import_button": "Tijik' pe", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html index daa9c83e579e..76fa8c14ac7b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Doporučení ze služby Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Populární témata:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Vybrané

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Doporučení ze služby Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Populární témata:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Vybrané

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js index af679f66a7f7..4a7ba6c888e7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cs/activity-stream-strings.js @@ -32,9 +32,9 @@ window.gActivityStreamStrings = { "confirm_history_delete_notice_p2": "Tuto akci nelze vzít zpět.", "menu_action_save_to_pocket": "Uložit do služby Pocket", "search_for_something_with": "Vyhledat {search_term} s:", - "search_button": "Hledat", + "search_button": "Vyhledat", "search_header": "Vyhledat pomocí {search_engine_name}", - "search_web_placeholder": "Hledat na webu", + "search_web_placeholder": "Vyhledat na webu", "search_settings": "Změnit nastavení vyhledávání", "section_info_option": "Informace", "section_info_send_feedback": "Zpětná vazba", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Už jste všechno přečetli. Další příběhy ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké příběhy z celého webu.", "manual_migration_explanation2": "Vyzkoušejte Firefox se záložkami, historií a hesly z jiného vašeho prohlížeče.", "manual_migration_cancel_button": "Ne, děkuji", - "manual_migration_import_button": "Importovat nyní" + "manual_migration_import_button": "Importovat nyní", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html index 866001a7eb01..b550d753191d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Hoff Wefannau

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Argymhellwyd gan Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pynciau Poblogaidd:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Goreuon

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Hoff Wefannau

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Argymhellwyd gan Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pynciau Poblogaidd:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Goreuon

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js index 5ffbbf400f06..877a6e257df7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/cy/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Rydych wedi dal i fynDewch nôl rhywbryd eto am fwy o'r straeon pwysicaf gan {provider}. Methu aros? Dewiswch bwnc poblogaidd i ganfod straeon da o ar draws y we. ", "manual_migration_explanation2": "Profwch Firefox gyda nodau tudalen, hanes a chyfrineiriau o borwr arall.", "manual_migration_cancel_button": "Dim Diolch", - "manual_migration_import_button": "Mewnforio Nawr" + "manual_migration_import_button": "Mewnforio Nawr", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html index 2e20542146eb..20a50a04ee9d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Mest besøgte websider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Anbefalet af Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Fremhævede

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Mest besøgte websider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Anbefalet af Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Fremhævede

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js index 9504be838021..a3e9e6c48cc9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/da/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Der er ikke flere nye historier. Kom tilbage senere for at se flere tophistorier fra {provider}. Kan du ikke vente? Vælg et populært emne og find flere spændende historier fra hele verden.", "manual_migration_explanation2": "Prøv Firefox med bogmærkerne, historikken og adgangskoderne fra en anden browser.", "manual_migration_cancel_button": "Nej tak", - "manual_migration_import_button": "Importer nu" + "manual_migration_import_button": "Importer nu", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html index 7ea300ae9cc8..d881892625eb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Wichtige Seiten

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Empfohlen von Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Beliebte Themen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Überblick

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Wichtige Seiten

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Empfohlen von Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Beliebte Themen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Überblick

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js index f72bba7876f8..2b0332d048f1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/de/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Jetzt kennen Sie die Neuigkeiten. Schauen Sie später wieder vorbei, um neue Informationen von {provider} zu erhalten. Können Sie nicht warten? Wählen Sie ein beliebtes Thema und lesen Sie weitere interessante Geschichten aus dem Internet.", "manual_migration_explanation2": "Probieren Sie Firefox aus und importieren Sie die Lesezeichen, Chronik und Passwörter eines anderen Browsers.", "manual_migration_cancel_button": "Nein, danke", - "manual_migration_import_button": "Jetzt importieren" + "manual_migration_import_button": "Jetzt importieren", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html index 6d1c00faf2de..eaba676b3247 100644 --- a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Nejcesćej woglědane sedła

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Wót Pocket dopórucony

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Nejcesćej woglědane sedła

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wót Pocket dopórucony

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js index 13f718652397..69654bb1dee4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/dsb/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To jo nachylu wšykno. Wrośćo se pózdźej wjelicnych tšojeńkow dla wót {provider}. Njamóžośo cakaś? Wubjeŕśo woblubowanu temu, aby dalšne wjelicne tšojeńka we webje namakał.", "manual_migration_explanation2": "Wopytajśo Firefox z cytanskimi znamjenjami, historiju a gronidłami z drugego wobglědowaka.", "manual_migration_cancel_button": "Ně, źěkujom se", - "manual_migration_import_button": "Něnto importěrowaś" + "manual_migration_import_button": "Něnto importěrowaś", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html index 2c14b5c97819..51cbc14f1f4e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Κορυφαίες ιστοσελίδες

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Προτεινόμενο από τον πάροχο Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Δημοφιλή θέματα:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Κορυφαίες στιγμές

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Κορυφαίες ιστοσελίδες

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Προτεινόμενο από τον πάροχο Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Δημοφιλή θέματα:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Κορυφαίες στιγμές

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js index 2dfc5bce643b..681ce4318084 100644 --- a/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/el/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Δεν υπάρχει κάτι νεότερο. Ελέγξτε αργότερα για περισσότερες ιστορίες από τον πάροχο {provider}. Δεν μπορείτε να περιμένετε; Διαλέξτε κάποιο από τα δημοφιλή θέματα και ανακαλύψτε ενδιαφέρουσες ιστορίες από όλο τον Ιστό.", "manual_migration_explanation2": "Δοκιμάστε το Firefox με τους σελιδοδείκτες, το ιστορικό και τους κωδικούς πρόσβασης από ένα άλλο πρόγραμμα περιήγησης.", "manual_migration_cancel_button": "Όχι ευχαριστώ", - "manual_migration_import_button": "Εισαγωγή τώρα" + "manual_migration_import_button": "Εισαγωγή τώρα", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html index ccb0c8605e94..45ec68125e39 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js index f8fd16c0af44..613bf9027257 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/en-GB/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now" + "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html index d663a948d4c0..0e999c083a28 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js index bd378325eb67..6e63faffd579 100644 --- a/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/en-US/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now" + "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html index 2b56de74518f..d252cd8bf147 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Plej vizititaj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Rekomendita de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ĉefaj temoj:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Elstaraĵoj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Plej vizititaj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Rekomendita de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Ĉefaj temoj:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Elstaraĵoj

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js index e20a9cb7450d..a8f9b7dd909c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/eo/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Vi legis ĉion. Kontrolu denove poste ĉu estas pli da novaĵon de {provider}. Ĉu vi ne povas atendi? Elektu popularan temon por trovi pli da interesaj artikoloj en la tuta teksaĵo.", "manual_migration_explanation2": "Provu Firefox kun la legosignoj, historio kaj pasvortoj de alia retumilo.", "manual_migration_cancel_button": "Ne, dankon", - "manual_migration_import_button": "Importi nun" + "manual_migration_import_button": "Importi nun", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html index 6ef7c01c2e0c..492ba1fb73ee 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Más visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Más visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js index 7073abdf9f07..c5ff6797cbc1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-AR/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya te pusiste al día. Volvé más tarde para más historias de {provider}. ¿No podés esperar? Seleccioná un tema popular para encontrar más historias de todo el mundo.", "manual_migration_explanation2": "Probá Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html index f9a60e8df6f6..418b004bfa16 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sitios frecuentes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sitios frecuentes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js index 3aeb49d3c8d1..288020c88439 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-CL/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Te has puesto al día. Revisa más tarde para ver más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular para encontrar más historias de todo el mundo.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html index d66e9654f338..d4b83e9d981a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js index 68a3b3382847..f264c75cb067 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-ES/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya estás al día. Vuelve luego y busca más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular y encontrás más historias alucinantes por toda la web.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html index 18e48be5a12d..70a6707bfd95 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js index c2ead8caca99..15fde5242030 100644 --- a/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/es-MX/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ya estás al día. Vuelve luego y busca más historias de {provider}. ¿No puedes esperar? Selecciona un tema popular y encontrarás más historias interesantes por toda la web.", "manual_migration_explanation2": "Prueba Firefox con los marcadores, historial y contraseñas de otro navegador.", "manual_migration_cancel_button": "No, gracias", - "manual_migration_import_button": "Importar ahora" + "manual_migration_import_button": "Importar ahora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html index 7c2764ea85de..cfe0a958793d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Top saidid

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pocket soovitab

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populaarsed teemad:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Esiletõstetud

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Top saidid

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pocket soovitab

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populaarsed teemad:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Esiletõstetud

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js index 916da87348b1..60e378a09211 100644 --- a/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/et/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Vaata hiljem uuesti, et näha parimaid postitusi teenusepakkujalt {provider}. Ei suuda oodata? Vali populaarne teema, et leida veel suurepärast sisu internetist.", "manual_migration_explanation2": "Proovi Firefoxi teisest brauserist pärinevate järjehoidjate, ajaloo ja paroolidega.", "manual_migration_cancel_button": "Ei soovi", - "manual_migration_import_button": "Impordi kohe" + "manual_migration_import_button": "Impordi kohe", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html index db9ab1b44c5b..04c7c5df8065 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Gune erabilienak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket hornitzaileak gomendatuta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Gai ezagunak:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Nabarmendutakoak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Gune erabilienak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket hornitzaileak gomendatuta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Gai ezagunak:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Nabarmendutakoak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js index ce2e727750e2..009013d6c0d3 100644 --- a/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/eu/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Egunean zaude jada. Etorri berriro geroago {provider} hornitzailearen istorio ezagun gehiagorako. Ezin duzu itxaron? Hautatu gai ezagun bat webeko istorio gehiago aurkitzeko.", "manual_migration_explanation2": "Probatu Firefox beste nabigatzaile batetik ekarritako laster-marka, historia eta pasahitzekin.", "manual_migration_cancel_button": "Ez, eskerrik asko", - "manual_migration_import_button": "Inportatu orain" + "manual_migration_import_button": "Inportatu orain", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html index 7f9bb93dcb56..cae68ce22a58 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                سایت‌های برتر

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                پیشنهاد شده توسط Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                موضوع‌های محبوب:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  برجسته‌ها

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  سایت‌های برتر

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  پیشنهاد شده توسط Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  موضوع‌های محبوب:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    برجسته‌ها

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js index 81b2ed2f56e8..daa52d7028d8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fa/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "فعلا تموم شد. بعدا دوباره سر بزن تا مطالب جدید از {provider} ببینی. نمی‌تونی صبر کنی؟ یک موضوع محبوب رو انتخاب کن تا مطالب جالب مرتبط از سراسر دنیا رو پیدا کنی.", "manual_migration_explanation2": "فایرفاکس را با نشانک‌ها،‌ تاریخچه‌ها و کلمات عبور از سایر مرورگر ها تجربه کنید.", "manual_migration_cancel_button": "نه ممنون", - "manual_migration_import_button": "هم‌اکنون وارد شوند" + "manual_migration_import_button": "هم‌اکنون وارد شوند", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html index a9b727edccd7..232dca915a31 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Lowe dowrowe

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Loowdiiji lolluɗi:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Jalbine

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Lowe dowrowe

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Loowdiiji lolluɗi:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Jalbine

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js index 199305252291..306fdce579eb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ff/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Ƴeewndo Firefox wonndude e maantore ɗee, aslol kam e finndeeji iwde e wanngorde woɗnde.", "manual_migration_cancel_button": "Alaa, moƴƴii", - "manual_migration_import_button": "Jiggo Jooni" + "manual_migration_import_button": "Jiggo Jooni", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html index f1700ce65a14..3fb29cfc0701 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ykkössivustot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Suositukset lähteestä Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Suositut aiheet:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Nostot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ykkössivustot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Suositukset lähteestä Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Suositut aiheet:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Nostot

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js index bd9247361e67..205641b8798b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fi/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ei enempää suosituksia juuri nyt. Katso myöhemmin uudestaan lisää ykkösjuttuja lähteestä {provider}. Etkö malta odottaa? Valitse suosittu aihe ja löydä lisää hyviä juttuja ympäri verkkoa.", "manual_migration_explanation2": "Kokeile Firefoxia toisesta selaimesta tuotujen kirjanmerkkien, historian ja salasanojen kanssa.", "manual_migration_cancel_button": "Ei kiitos", - "manual_migration_import_button": "Tuo nyt" + "manual_migration_import_button": "Tuo nyt", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html index e66f4caec385..436992de05ea 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sites les plus visités

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommandations par Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sujets populaires :

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Éléments-clés

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sites les plus visités

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommandations par Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sujets populaires :

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Éléments-clés

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js index cd98a6e2ee48..a8fd46aebb4a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Il n’y en a pas d’autres. Revenez plus tard pour plus d’articles de {provider}. Vous ne voulez pas attendre ? Choisissez un sujet parmi les plus populaires pour découvrir d’autres articles intéressants sur le Web.", "manual_migration_explanation2": "Essayez Firefox en important les marque-pages, l’historique et les mots de passe depuis un autre navigateur.", "manual_migration_cancel_button": "Non merci", - "manual_migration_import_button": "Importer" + "manual_migration_import_button": "Importer", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html index 7ee7c81d6a72..da513838827d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Oanrekommandearre troch Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populêre ûnderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Hichtepunten

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Oanrekommandearre troch Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populêre ûnderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Hichtepunten

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js index 81103d06054b..18ab87b213fd 100644 --- a/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/fy-NL/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Jo binne by. Kom letter werom foar mear ferhalen fan {provider}. Kin jo net wachtsje? Selektearje in populêr ûnderwerp om mear ferhalen fan it ynternet te finen.", "manual_migration_explanation2": "Probearje Firefox en ymportearje de blêdwizers, skiednis en wachtwurden fan oare browsers.", "manual_migration_cancel_button": "Nee tankewol", - "manual_migration_import_button": "No ymportearje" + "manual_migration_import_button": "No ymportearje", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html index 151af55169cd..db7516737e26 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Barrshuímh

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Topaicí i mbéal an phobail:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Barrshuímh

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Topaicí i mbéal an phobail:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js index e6441650d4be..78578ef40569 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ga-IE/activity-stream-strings.js @@ -97,6 +97,8 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "Roghnaigh na rudaí a fheicfidh tú nuair a osclóidh tú cluaisín nua.", "settings_pane_pocketstories_header": "Barrscéalta", "settings_pane_pocketstories_body": "Le Pocket, ball de theaghlach Mozilla, beidh tú ábalta teacht ar ábhar den chéad scoth go héasca.", diff --git a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html index bd88a8c1c730..e722efedc042 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Brod nan làrach

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ’Ga mholadh le Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Cuspairean fèillmhor:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Sàr-roghainn

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Brod nan làrach

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ’Ga mholadh le Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Cuspairean fèillmhor:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sàr-roghainn

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js index 6c06ffc87ea5..95600fb13f75 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gd/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Sin na naidheachdan uile o {provider} an-dràsta ach bidh barrachd ann a dh’aithghearr. No thoir sùil air cuspair air a bheil fèill mhòr is leugh na tha a’ dol mun cuairt air an lìon an-dràsta.", "manual_migration_explanation2": "Feuch Firefox leis na comharran-lìn, an eachdraidh ’s na faclan-faire o bhrabhsair eile.", "manual_migration_cancel_button": "Chan eil, tapadh leibh", - "manual_migration_import_button": "Ion-phortaich an-dràsta" + "manual_migration_import_button": "Ion-phortaich an-dràsta", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html index af90cc553025..83eb8b31693a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sitios favoritos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Temas populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destacados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js index ead635e9a81d..1edf45a98eaf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "Non, grazas", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html index a76a1e142188..90bf41807b1a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Tenda Ojehechavéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket he'i ndéve reike hag̃ua

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ñe'ẽmbyrã Ojehayhuvéva:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mba'eporãitéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Tenda Ojehechavéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket he'i ndéve reike hag̃ua

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ñe'ẽmbyrã Ojehayhuvéva:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Mba'eporãitéva

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js index 5a8a87ec6d9e..10a637d518f4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gn/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ko'ág̃a reikuaapáma ipyahúva. Eikejey ag̃ave ápe eikuaávo mombe'upy pyahu {provider} oikuave'ẽva ndéve. Ndaikatuvéima reha'ãrõ? Eiporavo peteĩ ñe'ẽmbyrã ha emoñe'ẽve oĩvéva ñande yvy ape ári.", "manual_migration_explanation2": "Eipuru Firefox reheve techaukaha, tembiasakue ha ñe'ẽñemi ambue kundaharapegua.", "manual_migration_cancel_button": "Ag̃amiénte", - "manual_migration_import_button": "Egueroike Ko'ág̃a" + "manual_migration_import_button": "Egueroike Ko'ág̃a", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html index 954013e2606a..650f306da9cf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ટોપ સાઇટ્સ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    દ્વારા ભલામણ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    લોકપ્રિય વિષયો:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      વીતી ગયેલું

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ટોપ સાઇટ્સ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      દ્વારા ભલામણ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      લોકપ્રિય વિષયો:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        વીતી ગયેલું

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js index 66708ef76d51..761b6714e2af 100644 --- a/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/gu-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "તમે પકડાઈ ગયા છો. {પ્રદાતા} તરફથી વધુ ટોચની વાતો માટે પછીથી પાછા તપાસો. રાહ નથી જોઈ શકતા? સમગ્ર વેબ પરથી વધુ સુંદર વાર્તાઓ શોધવા માટે એક લોકપ્રિય વિષય પસંદ કરો.", "manual_migration_explanation2": "અન્ય બ્રાઉઝરથી બુકમાર્ક્સ, ઇતિહાસ અને પાસવર્ડ્સ સાથે ફાયરફોક્સ અજમાવો.", "manual_migration_cancel_button": "ના અભાર", - "manual_migration_import_button": "હવે આયાત કરો" + "manual_migration_import_button": "હવે આયાત કરો", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html index fd0092a3869b..530ccd480809 100644 --- a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        אתרים מובילים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        מומלץ על ידי Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        נושאים פופולריים:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          מומלצים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          אתרים מובילים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          מומלץ על ידי Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          נושאים פופולריים:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            מומלצים

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js index b361b4a468c4..2274570ef47e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/he/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "התעדכנת בכל הסיפורים. כדאי לנסות שוב מאוחר יותר כדי לקבל עוד סיפורים מובילים מאת {provider}. לא רוצה לחכות? ניתן לבחור נושא נפוץ כדי למצוא עוד סיפורים נפלאים מרחבי הרשת.", "manual_migration_explanation2": "ניתן להתנסות ב־Firefox עם הסימניות, ההיסטוריה והססמאות מדפדפן אחר.", "manual_migration_cancel_button": "לא תודה", - "manual_migration_import_button": "ייבוא כעת" + "manual_migration_import_button": "ייבוא כעת", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html index 7dcde4841d10..3b485fa46f1a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            सर्वोच्च साइटें

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket द्वारा अनुशंसित

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            लोकप्रिय विषय:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              झलकियाँ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              सर्वोच्च साइटें

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket द्वारा अनुशंसित

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              लोकप्रिय विषय:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                झलकियाँ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js index 04a888cf0980..4d02d0c36185 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hi-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "आप अंत तक आ गए हैं. {provider} से और शीर्ष घटनाओं के लिए कुछ समय में पुनः आइए. इंतज़ार नहीं कर सकते? वेब से और प्रमुख घटनाएं ढूंढने के लिए एक लोकप्रिय विषय चुनें.", "manual_migration_explanation2": "Firefox को किसी अन्य ब्राउज़र के पुस्तचिह्नों, इतिहास और पासवर्डों के साथ आज़माएं.", "manual_migration_cancel_button": "नहीं शुक्रिया", - "manual_migration_import_button": "अब आयात करें" + "manual_migration_import_button": "अब आयात करें", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html index a54be4f10c02..cc4dde7b31b9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Najbolje stranice

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Najbolje stranice

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Preporučeno od Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popularne teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Istaknuto

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js index 2d1cdf973acf..e34da10de0ba 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Provjerite kasnije za više najpopularnijih priča od {provider}. Ne možete čekati? Odaberite popularne teme kako biste pronašli više kvalitetnih priča s cijelog weba.", "manual_migration_explanation2": "Probajte Firefox s zabilješkama, povijesti i lozinkama iz drugog pretraživača.", "manual_migration_cancel_button": "Ne hvala", - "manual_migration_import_button": "Uvezi sada" + "manual_migration_import_button": "Uvezi sada", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html index ee9c871082db..b4bbc353edbd 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Najhusćišo wopytane sydła

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Wot Pocket doporučeny

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Najhusćišo wopytane sydła

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wot Pocket doporučeny

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Woblubowane temy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wjerški

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js index 67885712e17c..4955b375c739 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hsb/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To je nachwilu wšitko. Wróćće so pozdźišo dalšich wulkotnych stawiznow dla wot {provider}. Njemóžeće čakać? Wubjerće woblubowanu temu, zo byšće dalše wulkotne stawizny z weba namakał.", "manual_migration_explanation2": "Wupruwujće Firefox ze zapołožkami, historiju a hesłami z druheho wobhladowaka.", "manual_migration_cancel_button": "Ně, dźakuju so", - "manual_migration_import_button": "Nětko importować" + "manual_migration_import_button": "Nětko importować", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html index 0e7e5d0bf7a8..781debc7a3cc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Népszerű oldalak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        A(z) Pocket ajánlásával

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Népszerű témák:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Kiemelések

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Népszerű oldalak

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          A(z) Pocket ajánlásával

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Népszerű témák:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Kiemelések

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js index 8aaa000e8e9f..cec877aca1ca 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hu/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Már felzárkózott. Nézzen vissza később a legújabb {provider} hírekért. Nem tud várni? Válasszon egy népszerű témát, hogy még több sztorit találjon a weben.", "manual_migration_explanation2": "Próbálja ki a Firefoxot másik böngészőből származó könyvjelzőkkel, előzményekkel és jelszavakkal.", "manual_migration_cancel_button": "Köszönöm, nem", - "manual_migration_import_button": "Importálás most" + "manual_migration_import_button": "Importálás most", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html index 9cf920c40e91..0aca327c2520 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Լավագույն կայքեր

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Գունանշում

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Լավագույն կայքեր

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Գունանշում

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js index 587d1efd3922..d697fb15079b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/hy-AM/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", - "manual_migration_import_button": "Import Now" + "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html index 3fe0bf061ba7..4652a283a553 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Sitos popular

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recommendate per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Subjectos popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  In evidentia

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Sitos popular

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recommendate per Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Subjectos popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    In evidentia

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js index 188da3c37914..e9a46d052236 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ia/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Tu ja es in die con toto. Reveni plus tarde pro plus historias popular de {provider}. Non vole attender? Selectiona un subjecto popular pro trovar plus altere historias interessante del web.", "manual_migration_explanation2": "Essaya Firefox con le marcapaginas, le chronologia e le contrasignos de un altere navigator.", "manual_migration_cancel_button": "No, gratias", - "manual_migration_import_button": "Importar ora" + "manual_migration_import_button": "Importar ora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html index b8ad0409b734..d058cfd21746 100644 --- a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Situs Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Disarankan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Topik Populer:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sorotan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Situs Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Disarankan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Topik Populer:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Sorotan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js index a29af241a619..715aa21f91d1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/id/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Maaf Anda tercegat. Periksa lagi nanti untuk lebih banyak cerita terbaik dari {provider}. Tidak mau menunggu? Pilih topik populer untuk menemukan lebih banyak cerita hebat dari seluruh web.", "manual_migration_explanation2": "Coba Firefox dengan markah, riwayat, dan sandi dari peramban lain.", "manual_migration_cancel_button": "Tidak, Terima kasih", - "manual_migration_import_button": "Impor Sekarang" + "manual_migration_import_button": "Impor Sekarang", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html index bc303710c1e5..8cb5200f9feb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Siti principali

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Consigliati da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Argomenti popolari:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          In evidenza

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Siti principali

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Consigliati da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Argomenti popolari:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            In evidenza

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js index 4069c24a8030..e2255bd26617 100644 --- a/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/it/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Non c'è altro. Controlla più tardi per altre storie da {provider}. Non vuoi aspettare? Seleziona un argomento tra quelli più popolari per scoprire altre notizie interessanti dal Web.", "manual_migration_explanation2": "Prova Firefox con i segnalibri, la cronologia e le password di un altro browser.", "manual_migration_cancel_button": "No grazie", - "manual_migration_import_button": "Importa adesso" + "manual_migration_import_button": "Importa adesso", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html index 53c599d4500d..47f98d27e7bf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            トップサイト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket のおすすめ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            人気のトピック:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ハイライト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              トップサイト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket のおすすめ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              人気のトピック:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ハイライト

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js index da73834a77ef..4f606248ff67 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ja/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "すべて既読です。また後で戻って {provider} からのおすすめ記事をチェックしてください。もし待ちきれないなら、人気のトピックを選択すれば、他にもウェブ上の優れた記事を見つけられます。", "manual_migration_explanation2": "他のブラウザーからブックマークや履歴、パスワードを取り込んで Firefox を使ってみましょう。", "manual_migration_cancel_button": "今はしない", - "manual_migration_import_button": "今すぐインポート" + "manual_migration_import_button": "今すぐインポート", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html index adbbe8790095..628ad71a8a90 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                რჩეული საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                რეკომენდებულია Pocket-ის მიერ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                პოპულარული თემები:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  მნიშვნელოვანი საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  რჩეული საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  რეკომენდებულია Pocket-ის მიერ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  პოპულარული თემები:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    მნიშვნელოვანი საიტები

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js index bca1eb51e803..b97ad254602f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ka/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "უკვე ყველაფერი წაკითხული გაქვთ. {provider}-იდან ახალი რჩეული სტატიების მისაღებად, მოგვიანებით შემოიარეთ. თუ ვერ ითმენთ, აირჩიეთ რომელიმე მოთხოვნადი თემა, ახალი საინტერესო სტატიების მოსაძიებლად.", "manual_migration_explanation2": "გადმოიტანეთ სხვა ბრაუზერებიდან თქვენი სანიშნები, ისტორია და პაროლები Firefox-ში.", "manual_migration_cancel_button": "არა, გმადლობთ", - "manual_migration_import_button": "ახლავე გადმოტანა" + "manual_migration_import_button": "ახლავე გადმოტანა", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html index d74c51076033..2fdf9c755f1e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ismal ifazen

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Iwelleh-it-id Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Isental ittwasnen aṭas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Asebrureq

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Ismal ifazen

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Iwelleh-it-id Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Isental ittwasnen aṭas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Asebrureq

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js index f4d759f1df41..dd6f7f769ce4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kab/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ulac wiyaḍ. Uɣal-d ticki s wugar n imagraden seg {provider}. Ur tebɣiḍ ara ad terǧuḍ? Fren asentel seg wid yettwasnen akken ad twaliḍ imagraden yelhan di Web.", "manual_migration_explanation2": "Σreḍ Firefox s ticṛaḍ n isebtar, amazray akked awalen uffiren sγur ilinigen nniḍen.", "manual_migration_cancel_button": "Ala, tanemmirt", - "manual_migration_import_button": "Kter tura" + "manual_migration_import_button": "Kter tura", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html index 4a28dc6769b1..d3f07e6380e0 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Үздік сайттар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ұсынушы Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Әйгілі тақырыптар:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ерекше жаңалықтар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Үздік сайттар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ұсынушы Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Әйгілі тақырыптар:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Ерекше жаңалықтар

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js index 4e5215352f00..2e5095eedebe 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Дайын. {provider} ұсынған көбірек мақалаларды алу үшін кейінірек тексеріңіз. Күте алмайсыз ба? Интернеттен көбірек тамаша мақалаларды алу үшін әйгілі теманы таңдаңыз.", "manual_migration_explanation2": "Firefox қолданбасын басқа браузер бетбелгілері, тарихы және парольдерімен қолданып көріңіз.", "manual_migration_cancel_button": "Жоқ, рахмет", - "manual_migration_import_button": "Қазір импорттау" + "manual_migration_import_button": "Қазір импорттау", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html index eaaba600f3b7..51a112c8bf8e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            វិបសាយ​លើ​គេ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            បានណែនាំដោយ Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ប្រធានបទកំពុងពេញនិយម៖

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              រឿងសំខាន់ៗ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              វិបសាយ​លើ​គេ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              បានណែនាំដោយ Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ប្រធានបទកំពុងពេញនិយម៖

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                រឿងសំខាន់ៗ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js index 26c2acdad370..f3ff78cd257d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/km/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "សាកល្បងប្រើ Firefox ជាមួយចំណាំ ប្រវត្តិ និងពាក្យសម្ងាត់ពីកម្មវិធីរុករកផ្សេងទៀត។", "manual_migration_cancel_button": "ទេ អរគុណ", - "manual_migration_import_button": "នាំចូលឥឡូវនេះ" + "manual_migration_import_button": "នាំចូលឥឡូវនេះ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html index 10bb46de6e6e..ccc9b34e6b0f 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ಪ್ರಮುಖ ತಾಣಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket ರಿಂದ ಶಿಫಾರಸುಮಾಡುಲಾಗಿದೆ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ಜನಪ್ರಿಯವಾದ ವಿಷಯಗಳು:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ಮುಖ್ಯಾಂಶಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ಪ್ರಮುಖ ತಾಣಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket ರಿಂದ ಶಿಫಾರಸುಮಾಡುಲಾಗಿದೆ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ಜನಪ್ರಿಯವಾದ ವಿಷಯಗಳು:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ಮುಖ್ಯಾಂಶಗಳು

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js index bc7a782435de..d89f660451f8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/kn/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ಪರವಾಗಿಲ್ಲ", - "manual_migration_import_button": "ಈಗ ಆಮದು ಮಾಡು" + "manual_migration_import_button": "ಈಗ ಆಮದು ಮಾಡು", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html index 465320c4a1cf..91ffd586a1b6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    상위 사이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket 추천

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    인기 주제:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      하이라이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      상위 사이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket 추천

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      인기 주제:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        하이라이트

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js index 1eed5d748af3..0106972b3e78 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ko/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "다 왔습니다. {provider}에서 제공하는 주요 기사를 다시 확인해 보세요. 기다릴 수가 없나요? 주제를 선택하면 웹에서 볼 수 있는 가장 재미있는 글을 볼 수 있습니다.", "manual_migration_explanation2": "다른 브라우저에 있는 북마크, 기록, 비밀번호를 사용해 Firefox를 이용해 보세요.", "manual_migration_cancel_button": "괜찮습니다", - "manual_migration_import_button": "지금 가져오기" + "manual_migration_import_button": "지금 가져오기", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html index 30dfe466f5d8..cd0820b4832b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        I megio sciti

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          In evidensa

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          I megio sciti

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            In evidensa

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js index 1e1e626860dc..0a274e725087 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lij/activity-stream-strings.js @@ -97,6 +97,8 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "Çerni cöse ti veu vedde quande t'arvi 'n neuvo feuggio.", "settings_pane_highlights_body": "Veddi i elementi ciù neuvi inta stöia e i urtimi segnalibbri creæ." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html index 1f34df06c9b7..302a08c6bd16 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ເວັບໄຊຕ໌ຍອດນິຍົມ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ຫົວຂໍ້ຍອດນິຍົມ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ລາຍການເດັ່ນ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ເວັບໄຊຕ໌ຍອດນິຍົມ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ຫົວຂໍ້ຍອດນິຍົມ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ລາຍການເດັ່ນ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js index 5b8e9a42141b..24485e3fd240 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lo/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ບໍ່, ຂອບໃຈ", - "manual_migration_import_button": "ນຳເຂົ້າຕອນນີ້" + "manual_migration_import_button": "ນຳເຂົ້າຕອນນີ້", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html index 709482cc6e3e..209ea2fbf020 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Lankomiausios svetainės

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rekomendavo „Pocket“

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populiarios temos:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Akcentai

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Lankomiausios svetainės

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rekomendavo „Pocket“

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populiarios temos:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Akcentai

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js index 812001cc0722..eba57bb88b7d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lt/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Viską perskaitėte. Užsukite vėliau, norėdami rasti daugiau gerų straipsnių iš „{provider}“. Nekantraujate? Pasirinkite populiarią temą, norėdami rasti daugiau puikių straipsnių saityne.", "manual_migration_explanation2": "Išbandykite „Firefox“ su adresynu, žurnalu bei slaptažodžiais iš kitos naršyklės.", "manual_migration_cancel_button": "Ačiū, ne", - "manual_migration_import_button": "Importuoti dabar" + "manual_migration_import_button": "Importuoti dabar", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html index 16f507cfbd7a..be6036e0dccf 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularōkōs lopys

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket īsaceitōs

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularas tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Izraudzeitī

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularōkōs lopys

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket īsaceitōs

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularas tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Izraudzeitī

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js index 39d2dc6da221..f7f27fae0ce9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ltg/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Esi vysu izlasiejs. Īej vāļōk, kab redzēt vaira ziņu nu {provider}. Nagribi gaidēt? Izavielej popularu tēmu, kab atrostu vaira interesantu rokstu nu vysa interneta.", "manual_migration_explanation2": "Paraugi Firefox ar grōmotzeimem, viesturi un parolem nu cyta porlyuka.", "manual_migration_cancel_button": "Nā, paļdis", - "manual_migration_import_button": "Importeit" + "manual_migration_import_button": "Importeit", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html index a481be39955f..94455a418109 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populārākās lapas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Iesaka Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populārās tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Aktualitātes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populārākās lapas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Iesaka Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populārās tēmas:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Aktualitātes

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js index 26f300d3b02b..cfa3bebf5a7a 100644 --- a/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/lv/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Viss ir apskatīts! Atnāciet atpakaļ nedaudz vēlāk, lai redzētu populāros stāstus no {provider}. Nevarat sagaidīt? Izvēlieties kādu no tēmām jau tagad.", "manual_migration_explanation2": "Izmēģiniet Firefox ar grāmatzīmēm, vēsturi un parolēm no cita pārlūka.", "manual_migration_cancel_button": "Nē, paldies", - "manual_migration_import_button": "Importē tagad" + "manual_migration_import_button": "Importē tagad", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html index a5e0b4a093fc..405cbbab0333 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Популарни мрежни места

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Препорачано од Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Популарни теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Интереси

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Популарни мрежни места

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Препорачано од Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Популарни теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Интереси

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js index b5bd17daddb1..5e8ba99a5085 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/mk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Имате видено сѐ! Навратете се подоцна за нови содржини од {provider}. Не можете да чекате? Изберете популарна тема и откријте уште одлични содржини ширум Интернет.", "manual_migration_explanation2": "Пробајте го Firefox со обележувачите, историјата и лозинките на друг прелистувач.", "manual_migration_cancel_button": "Не, благодарам", - "manual_migration_import_button": "Увези сега" + "manual_migration_import_button": "Увези сега", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html index ef637d89a8a3..148d90c945fe 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                മികച്ച സൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket ശുപാർശ ചെയ്തത്

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ജനപ്രിയ വിഷയങ്ങൾ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ഹൈലൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  മികച്ച സൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket ശുപാർശ ചെയ്തത്

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ജനപ്രിയ വിഷയങ്ങൾ:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ഹൈലൈറ്റുകൾ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js index 04d0b5a7bb43..cfe76b2217d6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ml/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "നിങ്ങൾ ഇവിടെ വരെ എത്തി. {Provider}ൽ നിന്നുള്ള കൂടുതൽ പ്രധാന വാർത്തകൾക്കായി പിന്നീട് വീണ്ടും പരിശോധിക്കുക. കാത്തിരിക്കാൻ പറ്റില്ലേ? വെബിൽ നിന്ന് കൂടുതൽ മികച്ച കഥകൾ കണ്ടെത്തുന്നതിന് ഒരു ജനപ്രിയ വിഷയം തിരഞ്ഞെടുക്കുക.", "manual_migration_explanation2": "മറ്റൊരു ബ്രൗസറിൽ നിന്നുള്ള ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ എന്നിവ ഉപയോഗിച്ച് ഫയർഫോക്സ് പരീക്ഷിക്കുക.", "manual_migration_cancel_button": "വേണ്ട, നന്ദി", - "manual_migration_import_button": "ഇപ്പോൾ ഇറക്കുമതി ചെയ്യുക" + "manual_migration_import_button": "ഇപ്പോൾ ഇറക്കുമതി ചെയ്യുക", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html index 1daf76efcb7d..4d737e765da1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    खास साईट्स

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ठळक

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      खास साईट्स

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ठळक

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js index 2fa51c2834a2..c7125f27a9b1 100644 --- a/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/mr/activity-stream-strings.js @@ -97,5 +97,7 @@ window.gActivityStreamStrings = { "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "No Thanks", "manual_migration_import_button": "Import Now", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again.", "settings_pane_body": "नवीन टॅब उघडल्यानंतर काय दिसायला हवे ते निवडा." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html index 70c7185c4d8c..1766baaf2f53 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Laman Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Disyorkan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Topik Popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Serlahan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Laman Teratas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Disyorkan oleh Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Topik Popular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Serlahan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js index c833b6c7cac1..373a68e6f781 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ms/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Anda sudah di sini. Tapi sila datang lagi untuk mendapatkan lebih banyak berita hangat daripada {provider}. Tidak boleh tunggu? Pilih topik untuk mendapatkannya dari serata dunia.", "manual_migration_explanation2": "Cuba Firefox dengan tandabuku, sejarah dan kata laluan yang disimpan dalam pelayar lain.", "manual_migration_cancel_button": "Tidak, Terima kasih", - "manual_migration_import_button": "Import Sekarang" + "manual_migration_import_button": "Import Sekarang", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html index 75bcf4748482..191eafb0b454 100644 --- a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            အများဆုံးသုံးဆိုက်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket က အကြံပြုထားသည်

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            လူကြိုက်များခေါင်းစဉ်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ဦးစားပေးအကြောင်းအရာများ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              အများဆုံးသုံးဆိုက်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket က အကြံပြုထားသည်

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              လူကြိုက်များခေါင်းစဉ်များ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ဦးစားပေးအကြောင်းအရာများ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js index 13f5af336f75..43b9e314f5a6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/my/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "အခြားဘရောင်ဇာမှ စာမှတ်များ၊ မှတ်တမ်းများ၊ စကားဝှက်များနှင့်အတူ Firefox တွင် စမ်းသုံးကြည့်ပါ။", "manual_migration_cancel_button": "မလိုတော့ပါ၊ ကျေးဇူးတင်ပါသည်။", - "manual_migration_import_button": "ထည့်သွင်းရန်" + "manual_migration_import_button": "ထည့်သွင်းရန်", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html index ddad57f27bd2..21c24e8f9599 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Anbefalt av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Høydepunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Anbefalt av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populære emner:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Høydepunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js index 39fbbf6291a0..5d319d47cb91 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nb-NO/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Du har tatt igjen. Kom tilbake senere for flere topphistorier fra {provider}. Kan du ikke vente? Velg et populært emne for å finne flere gode artikler fra hele Internett.", "manual_migration_explanation2": "Prøv Firefox med bokmerkene, historikk og passord fra en annen nettleser.", "manual_migration_cancel_button": "Nei takk", - "manual_migration_import_button": "Importer nå" + "manual_migration_import_button": "Importer nå", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html index 7ec3e2282ac6..05dab86d2f05 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    शीर्ष साइटहरु

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket द्वारा सिफारिस गरिएको

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    लोकप्रिय शीर्षकहरू:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      विशेषताहरू

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      शीर्ष साइटहरु

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket द्वारा सिफारिस गरिएको

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      लोकप्रिय शीर्षकहरू:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        विशेषताहरू

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js index e7c9db8eb8b2..56bfd2578183 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ne-NP/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "पर्दैन, धन्यबाद", - "manual_migration_import_button": "अहिले आयात गर्नुहोस्" + "manual_migration_import_button": "अहिले आयात गर्नुहोस्", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html index 6ffa9ce69075..9a1acc4e68fe 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Aanbevolen door Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Populaire onderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Topwebsites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Aanbevolen door Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Populaire onderwerpen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js index 137efd9a9aa1..c15a02245d8d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "U bent weer bij. Kijk later nog eens voor meer topverhalen van {provider}. Kunt u niet wachten? Selecteer een populair onderwerp voor meer geweldige verhalen van het hele web.", "manual_migration_explanation2": "Probeer Firefox met de bladwijzers, geschiedenis en wachtwoorden van een andere browser.", "manual_migration_cancel_button": "Nee bedankt", - "manual_migration_import_button": "Nu importeren" + "manual_migration_import_button": "Nu importeren", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html index e5e587c937d2..178d48509767 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Tilrådd av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Populære emne:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Høgdepunkt

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Mest besøkte nettsider

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Tilrådd av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Populære emne:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Høgdepunkt

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js index b1adaa98be41..cbf083531fd8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/nn-NO/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Det finst ikkje fleire. Kom tilbake seinare for fleire topphistoriar frå {provider}. Kan du ikkje vente? Vel eit populært emne for å finne fleire gode artiklar frå heile nettet.", "manual_migration_explanation2": "Prøv Firefox med bokmerka, historikk og passord frå ein annan nettlesar.", "manual_migration_cancel_button": "Nei takk", - "manual_migration_import_button": "Importer no" + "manual_migration_import_button": "Importer no", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html index 911a2d887494..d6284170e1e7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ਸੁਰਖੀਆਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ਸਿਖਰਲੀਆਂ ਸਾਈਟਾਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket ਵਲੋਂ ਸਿਫਾਰਸ਼ੀ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ਸੁਰਖੀਆਂ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js index 1003d242e4ce..2baef6950049 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pa-IN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "ਨਹੀਂ, ਧੰਨਵਾਦ", - "manual_migration_import_button": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ" + "manual_migration_import_button": "ਹੁਣੇ ਇੰਪੋਰਟ ਕਰੋ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html index 30519b7fd13a..8a52082a08cc 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularne

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Poleca: Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popularne tematy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Wyróżnione

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularne

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Poleca: Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popularne tematy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Wyróżnione

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js index 04dac3f4d334..409cd84bc71b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "To na razie wszystko. {provider} później będzie mieć więcej popularnych artykułów. Nie możesz się doczekać? Wybierz popularny temat, aby znaleźć więcej artykułów z całego Internetu.", "manual_migration_explanation2": "Używaj Firefoksa z zakładkami, historią i hasłami z innej przeglądarki.", "manual_migration_cancel_button": "Nie, dziękuję", - "manual_migration_import_button": "Importuj teraz" + "manual_migration_import_button": "Importuj teraz", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html index e7f91dd194fa..1458c44bc385 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Sites preferidos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Sites preferidos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js index 315db11d66ef..ed9bc8e0ce70 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pt-BR/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Você já viu tudo. Volte mais tarde para mais histórias do {provider}. Não consegue esperar? Escolha um assunto popular para encontrar mais grandes histórias através da web.", "manual_migration_explanation2": "Experimente o Firefox com os favoritos, histórico e senhas salvas em outro navegador.", "manual_migration_cancel_button": "Não, obrigado", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html index ce83f92725ff..9f10a7760ef5 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Sites mais visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Sites mais visitados

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Recomendado por Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Tópicos populares:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Destaques

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js index f489c56f84bf..853005b90d27 100644 --- a/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/pt-PT/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Já apanhou tudo. Verifique mais tarde para mais histórias principais de {provider}. Não pode esperar? Selecione um tópico popular para encontrar mais boas histórias de toda a web.", "manual_migration_explanation2": "Experimente o Firefox com marcadores, histórico e palavras-passe de outro navegador.", "manual_migration_cancel_button": "Não, obrigado", - "manual_migration_import_button": "Importar agora" + "manual_migration_import_button": "Importar agora", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html index 1a10d0a29196..2b80269d0ae9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Paginas preferidas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recumandà da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Temas populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Accents

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Paginas preferidas

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recumandà da Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Temas populars:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Accents

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js index 0774ea3e3bae..7e23403ee60c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/rm/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ussa has ti legì tut las novitads. Turna pli tard per ulteriuras novitads da {provider}. Na pos betg spetgar? Tscherna in tema popular per chattar ulteriuras istorgias ord il web.", "manual_migration_explanation2": "Emprova Firefox cun ils segnapaginas, la cronologia ed ils pleds-clav importads d'in auter navigatur.", "manual_migration_cancel_button": "Na, grazia", - "manual_migration_import_button": "Importar ussa" + "manual_migration_import_button": "Importar ussa", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html index 5f16a4c37299..2174d5b892ce 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Site-uri de top

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Recomandat de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Subiecte populare:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Evidențieri

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Site-uri de top

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Recomandat de Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Subiecte populare:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Evidențieri

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js index 121bfeb2cb0b..47ba2bb02399 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ro/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Ai ajuns la capăt. Revino mai târziu pentru alte articole de la {provider}. Nu mai vrei să aștepți? Alege un subiect popular și găsește alte articole interesante de pe web.", "manual_migration_explanation2": "Încearcă Firefox cu marcajele, istoricul și parolele din alt navigator.", "manual_migration_cancel_button": "Nu, mulțumesc", - "manual_migration_import_button": "Importă acum" + "manual_migration_import_button": "Importă acum", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html index 9f4d6587f0ca..89771940a0f4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Топ сайтов

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярные темы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Избранное

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Топ сайтов

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярные темы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Избранное

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js index af28459ea278..7c2719cd963d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ru/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Вы всё прочитали. Зайдите попозже, чтобы увидеть больше лучших статей от {provider}. Не можете ждать? Выберите популярную тему, чтобы найти больше интересных статей со всего Интернета.", "manual_migration_explanation2": "Попробуйте Firefox с закладками, историей и паролями из другого браузера.", "manual_migration_cancel_button": "Нет, спасибо", - "manual_migration_import_button": "Импортировать сейчас" + "manual_migration_import_button": "Импортировать сейчас", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html index a5fdbf4ece7f..c5387ba6dc27 100644 --- a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ප්‍රමුඛ අඩවි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket විසින් නිර්දේශිතයි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ජනප්‍රිය මාතෘකා:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ඉස්මතු කිරීම්

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ප්‍රමුඛ අඩවි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket විසින් නිර්දේශිතයි

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ජනප්‍රිය මාතෘකා:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ඉස්මතු කිරීම්

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js index 4f045b3470b0..cfc3c8b85465 100644 --- a/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/si/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Firefox වෙනත් ගවේශයකය පිටය සලකුණු, අතීතය සහ මුරපද සමග උත්සාහ කර බලන්න.", "manual_migration_cancel_button": "එපා, ස්තුතියි", - "manual_migration_import_button": "දැන් ආයාත කරන්න" + "manual_migration_import_button": "දැන් ආයාත කරන්න", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html index 9cabb71df99c..44d4b27071bb 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Odporúča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populárne témy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Vybrané stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Top stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Odporúča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populárne témy:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Vybrané stránky

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js index bdc9e7f89993..5be01623d39e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Už ste prečítali všetko. Ďalšie príbehy zo služby {provider} tu nájdete opäť neskôr. Nemôžete sa dočkať? Vyberte si populárnu tému a pozrite sa na ďalšie skvelé príbehy z celého webu.", "manual_migration_explanation2": "Vyskúšajte Firefox so záložkami, históriou prehliadania a heslami s iných prehliadačov.", "manual_migration_cancel_button": "Nie, ďakujem", - "manual_migration_import_button": "Importovať teraz" + "manual_migration_import_button": "Importovať teraz", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html index 22a86f693ccf..996b3c87e6fa 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Glavne strani

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Priporoča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Priljubljene teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Poudarki

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Glavne strani

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Priporoča Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Priljubljene teme:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Poudarki

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js index 8c04e84fa51e..609095ff1c85 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Zdaj ste seznanjeni z novicami. Vrnite se pozneje in si oglejte nove prispevke iz {provider}. Komaj čakate? Izberite priljubljeno temo in odkrijte več velikih zgodb na spletu.", "manual_migration_explanation2": "Preskusite Firefox z zaznamki, zgodovino in gesli iz drugega brskalnika.", "manual_migration_cancel_button": "Ne, hvala", - "manual_migration_import_button": "Uvozi zdaj" + "manual_migration_import_button": "Uvozi zdaj", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html index 13f17adeb58c..2ddd500629ed 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Sajte Kryesues

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Rekomanduar nga Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Tema Popullore:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Sajte Kryesues

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Rekomanduar nga Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Tema Popullore:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js index 670e13ee9246..726c37dd1e45 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sq/activity-stream-strings.js @@ -10,7 +10,7 @@ window.gActivityStreamStrings = { "header_recommended_by": "Rekomanduar nga {provider}", "header_bookmarks_placeholder": "Ende s’keni faqerojtës.", "header_stories_from": "nga", - "context_menu_button_sr": "Open context menu for {title}", + "context_menu_button_sr": "Hapni menu konteksti për {title}", "type_label_visited": "Të vizituara", "type_label_bookmarked": "Të faqeruajtura", "type_label_synced": "Njëkohësuar prej pajisjeje tjetër", @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "Përpunoni këtë sajt", "edit_topsites_dismiss_button": "Hidhe tej këtë sajt", "edit_topsites_add_button": "Shtoni", - "edit_topsites_add_button_tooltip": "Add Top Site", + "edit_topsites_add_button_tooltip": "Shtoni Sajt Kryesues", "topsites_form_add_header": "Sajt i Ri Kryesues", "topsites_form_edit_header": "Përpunoni Sajtin Kryesues", "topsites_form_title_placeholder": "Jepni një titull", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Gjithë ç’kish, e dini. Rikontrolloni më vonë për më tepër histori nga {provider}. S’pritni dot? Përzgjidhni një temë popullore që të gjenden në internet më tepër histori të goditura.", "manual_migration_explanation2": "Provojeni Firefox-in me faqerojtës, historik dhe fjalëkalime nga një tjetër shfletues.", "manual_migration_cancel_button": "Jo, Faleminderit", - "manual_migration_import_button": "Importoje Tani" + "manual_migration_import_button": "Importoje Tani", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html index bd6f5b7e4856..46e04572ff03 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Омиљени сајтови

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Предложио Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Популарне теме:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Истакнуто

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Омиљени сајтови

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Предложио Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Популарне теме:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Истакнуто

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js index 1740ae28ab6a..9195367420a8 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Вратите се касније за нове вести {provider}. Не можете дочекати? Изаберите популарну тему да пронађете још занимљивих вести из света.", "manual_migration_explanation2": "Пробајте FIrefox са коришћењем забелешки, историјата и лозинки из другог прегледача.", "manual_migration_cancel_button": "Не, хвала", - "manual_migration_import_button": "Увези сада" + "manual_migration_import_button": "Увези сада", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html index 3ae0ab799a0a..60b47b9cc517 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Mest besökta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rekommenderas av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Populära ämnen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Höjdpunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mest besökta

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rekommenderas av Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Populära ämnen:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Höjdpunkter

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js index 2bcfee5fe91f..36cb83669a24 100644 --- a/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/sv-SE/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Det finns inte fler. Kom tillbaka senare för fler huvudnyheter från {provider}. Kan du inte vänta? Välj ett populärt ämne för att hitta fler bra nyheter från hela världen.", "manual_migration_explanation2": "Testa Firefox med bokmärken, historik och lösenord från en annan webbläsare.", "manual_migration_cancel_button": "Nej tack", - "manual_migration_import_button": "Importera nu" + "manual_migration_import_button": "Importera nu", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html index a4def70a5ac7..18339b1d0cb4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    சிறந்த தளங்கள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket என்பவரால் பரிந்துரைக்கப்பட்டது

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    பிரபலமான தலைப்புகள்:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      மிளிர்ப்புகள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      சிறந்த தளங்கள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket என்பவரால் பரிந்துரைக்கப்பட்டது

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      பிரபலமான தலைப்புகள்:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        மிளிர்ப்புகள்

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js index 44d2fb486594..fc6155ba2747 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ta/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "பரவாயில்லை", - "manual_migration_import_button": "இப்போது இறக்கு" + "manual_migration_import_button": "இப்போது இறக்கு", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html index 649f728f8c63..6b55dbdb0b1c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        మేటి సైట్లు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pocketచే సిఫార్సు చేయబడినది

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ప్రముఖ అంశాలు:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          విశేషాలు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          మేటి సైట్లు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pocketచే సిఫార్సు చేయబడినది

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ప్రముఖ అంశాలు:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            విశేషాలు

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js index 5b70d287646a..309e440524fa 100644 --- a/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/te/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "మీరు పట్టుబడ్డారు. {provider} నుండి మరింత అగ్ర కథనాల కోసం తరువాత తనిఖీ చేయండి. వేచి ఉండలేరా? జాలములోని అంతటి నుండి మరింత గొప్ప కథనాలను కనుగొనడానికి ప్రసిద్ధ అంశం ఎంచుకోండి.", "manual_migration_explanation2": "మరొక విహారిణి లోని ఇష్టాంశాలు, చరిత్ర, సంకేతపదాలతో Firefoxను ప్రయత్నించండి.", "manual_migration_cancel_button": "అడిగినందుకు ధన్యవాదాలు, వద్దు", - "manual_migration_import_button": "ఇప్పుడే దిగుమతి చేయండి" + "manual_migration_import_button": "ఇప్పుడే దిగుమతి చేయండి", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html index 315421c30a02..e98a6d521fad 100644 --- a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ไซต์เด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            แนะนำโดย Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            หัวข้อยอดนิยม:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              รายการเด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ไซต์เด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              แนะนำโดย Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              หัวข้อยอดนิยม:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                รายการเด่น

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js index abd5696009ee..5fc132dba9ca 100644 --- a/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/th/activity-stream-strings.js @@ -79,7 +79,7 @@ window.gActivityStreamStrings = { "edit_topsites_edit_button": "แก้ไขไซต์นี้", "edit_topsites_dismiss_button": "ไม่สนใจไซต์นี้", "edit_topsites_add_button": "เพิ่ม", - "edit_topsites_add_button_tooltip": "Add Top Site", + "edit_topsites_add_button_tooltip": "เพิ่มไซต์เด่น", "topsites_form_add_header": "ไซต์เด่นใหม่", "topsites_form_edit_header": "แก้ไขไซต์เด่น", "topsites_form_title_placeholder": "ป้อนชื่อเรื่อง", @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "คุณได้อ่านเรื่องราวครบทั้งหมดแล้ว คุณสามารถกลับมาตรวจดูเรื่องราวเด่นจาก {provider} ได้ภายหลัง อดใจรอไม่ได้งั้นหรือ? เลือกหัวข้อยอดนิยมเพื่อค้นหาเรื่องราวที่ยอดเยี่ยมจากเว็บต่าง ๆ", "manual_migration_explanation2": "ลอง Firefox ด้วยที่คั่นหน้า, ประวัติ และรหัสผ่านจากเบราว์เซอร์อื่น", "manual_migration_cancel_button": "ไม่ ขอบคุณ", - "manual_migration_import_button": "นำเข้าตอนนี้" + "manual_migration_import_button": "นำเข้าตอนนี้", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html index 4aed35a4d776..baffebc18703 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Tuktok na mga Site

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Inirekomenda ni Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Tanyag na mga paksa:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Naka-highlight

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Tuktok na mga Site

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Inirekomenda ni Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Tanyag na mga paksa:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Naka-highlight

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js index 25d578fdf2b2..3dfb49051ab9 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/tl/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Nakahabol ka na. Bumalik sa ibang pagkakataon para sa higit pang mga nangungunang kuwento mula sa {provider}. Hindi makapaghintay? Pumili ng isang tanyag na paksa upang makahanap ng higit pang mahusay na mga kuwento mula sa buong web.", "manual_migration_explanation2": "Subukan ang Firefox gamit ang mga bookmark, kasaysayan at mga password mula sa isa pang browser.", "manual_migration_cancel_button": "Salamat na lang", - "manual_migration_import_button": "Angkatin Ngayon" + "manual_migration_import_button": "Angkatin Ngayon", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html index 2616509e9fce..48d70c22e864 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Sık Kullanılan Siteler

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Pocket öneriyor

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Popüler konular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Öne Çıkanlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sık Kullanılan Siteler

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Pocket öneriyor

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Popüler konular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Öne Çıkanlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js index 9ee44ff2d3e7..fd5687cc96f6 100644 --- a/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/tr/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Hepsini bitirdiniz. Yeni {provider} haberleri için daha fazla yine gelin. Beklemek istemiyor musunuz? İlginç yazılara ulaşmak için popüler konulardan birini seçebilirsiniz.", "manual_migration_explanation2": "Öteki tarayıcılarınızdaki yer imlerinizi, geçmişinizi ve parolalarınızı Firefox’a aktarabilirsiniz.", "manual_migration_cancel_button": "Gerek yok", - "manual_migration_import_button": "Olur, aktaralım" + "manual_migration_import_button": "Olur, aktaralım", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html index eebf154fba91..678fc35bc68d 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярні сайти

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Популярні теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Обране

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярні сайти

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Рекомендовано Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Популярні теми:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Обране

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js index ce5fea6781d5..fa8f1435be5b 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/uk/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "Готово. Перевірте згодом, щоб побачити більше матеріалів від {provider}. Не хочете чекати? Оберіть популярну тему, щоб знайти більше цікавих матеріалів з усього Інтернету.", "manual_migration_explanation2": "Спробуйте Firefox із закладками, історією та паролями з іншого браузера.", "manual_migration_cancel_button": "Ні, дякую", - "manual_migration_import_button": "Імпортувати зараз" + "manual_migration_import_button": "Імпортувати зараз", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html index bf7f33fb6826..67730533c8ce 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            بہترین سائٹیں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket کی جانب سے تجویز کردہ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            مشہور مضامین:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              شہ سرخياں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              بہترین سائٹیں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket کی جانب سے تجویز کردہ

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              مشہور مضامین:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                شہ سرخياں

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js index 511ebfa071fc..d23eed48ca53 100644 --- a/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/ur/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "نہیں شکریہ", - "manual_migration_import_button": "ابھی درآمد کری" + "manual_migration_import_button": "ابھی درآمد کری", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html index 33074817b78d..c3e33e340450 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ommabop saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Pocket tomonidan tavsiya qilingan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Mashhur mavzular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ajratilgan saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ommabop saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Pocket tomonidan tavsiya qilingan

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Mashhur mavzular:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ajratilgan saytlar

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js index a0edbe3954b8..7f85d50f61c7 100644 --- a/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/uz/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Try Firefox with the bookmarks, history and passwords from another browser.", "manual_migration_cancel_button": "Yoʻq, kerak emas", - "manual_migration_import_button": "Hozir import qilish" + "manual_migration_import_button": "Hozir import qilish", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html index 26292ed74daf..e5e1a79cb1a4 100644 --- a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Trang web hàng đầu

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Được đề nghị bởi Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Các chủ đề phổ biến:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Nổi bật

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Trang web hàng đầu

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Được đề nghị bởi Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Các chủ đề phổ biến:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Nổi bật

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        diff --git a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js index 92361d5b7ff9..35464dab4702 100644 --- a/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/vi/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "You’ve caught up. Check back later for more top stories from {provider}. Can’t wait? Select a popular topic to find more great stories from around the web.", "manual_migration_explanation2": "Thử Firefox với trang đánh dấu, lịch sử và mật khẩu từ trình duyệt khác.", "manual_migration_cancel_button": "Không, cảm ơn", - "manual_migration_import_button": "Nhập ngay bây giờ" + "manual_migration_import_button": "Nhập ngay bây giờ", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html index 9f556f76de5e..708afb4d6047 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        常用网站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Pocket 推荐

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        热门主题:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          集锦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          常用网站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Pocket 推荐

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          热门主题:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            集锦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js index 9d7edb1457ba..157e7d788f50 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/zh-CN/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "所有文章都读完啦!晚点再来,{provider} 将推荐更多热门文章。等不及了?选择一个热门话题,找到更多网上的好文章。", "manual_migration_explanation2": "把在其他浏览器中保存的书签、历史记录和密码带到 Firefox 吧。", "manual_migration_cancel_button": "不用了", - "manual_migration_import_button": "立即导入" + "manual_migration_import_button": "立即导入", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html index 724ab6ba9a2b..9a86c74c707e 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html +++ b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-prerendered.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            熱門網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Pocket 推薦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            熱門主題:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              精選網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              熱門網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Pocket 推薦

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              熱門主題:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                精選網站

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                diff --git a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js index 675c3901b889..aa961feff52c 100644 --- a/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js +++ b/browser/extensions/activity-stream/prerendered/locales/zh-TW/activity-stream-strings.js @@ -96,5 +96,7 @@ window.gActivityStreamStrings = { "topstories_empty_state": "所有文章都讀完啦!晚點再來,{provider} 將提供更多推薦故事。等不及了?選擇熱門主題,看看 Web 上各式精采資訊。", "manual_migration_explanation2": "試試將其他瀏覽器的書籤、瀏覽記錄與密碼匯入 Firefox。", "manual_migration_cancel_button": "不必了", - "manual_migration_import_button": "立即匯入" + "manual_migration_import_button": "立即匯入", + "error_fallback_default_info": "Oops, something went wrong loading this content.", + "error_fallback_default_refresh_suggestion": "Refresh page to try again." }; diff --git a/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html b/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html index 5b9455cf448f..3bec46f23f74 100644 --- a/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html +++ b/browser/extensions/activity-stream/prerendered/static/activity-stream-prerendered-debug.html @@ -9,7 +9,7 @@ -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Top Sites

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Recommended by Pocket

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Popular Topics:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Highlights

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    diff --git a/browser/extensions/activity-stream/test/schemas/pings.js b/browser/extensions/activity-stream/test/schemas/pings.js index 7eca2638a6ab..e064a1dd0106 100644 --- a/browser/extensions/activity-stream/test/schemas/pings.js +++ b/browser/extensions/activity-stream/test/schemas/pings.js @@ -13,6 +13,14 @@ export const baseKeys = { export const BasePing = Joi.object().keys(baseKeys).options({allowUnknown: true}); +export const eventsTelemetryExtraKeys = Joi.object().keys({ + session_id: baseKeys.session_id.required(), + page: baseKeys.page.required(), + addon_version: baseKeys.addon_version.required(), + user_prefs: baseKeys.user_prefs.required(), + action_position: Joi.string().optional() +}).options({allowUnknown: false}); + export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { session_id: baseKeys.session_id.required(), page: baseKeys.page.required(), @@ -24,6 +32,31 @@ export const UserEventPing = Joi.object().keys(Object.assign({}, baseKeys, { recommender_type: Joi.string() })); +export const UTUserEventPing = Joi.array().items( + Joi.string().required().valid("activity_stream"), + Joi.string().required().valid("event"), + Joi.string().required().valid([ + "CLICK", + "SEARCH", + "BLOCK", + "DELETE", + "DELETE_CONFIRM", + "DIALOG_CANCEL", + "DIALOG_OPEN", + "OPEN_NEW_WINDOW", + "OPEN_PRIVATE_WINDOW", + "OPEN_NEWTAB_PREFS", + "CLOSE_NEWTAB_PREFS", + "BOOKMARK_DELETE", + "BOOKMARK_ADD", + "PIN", + "UNPIN", + "SAVE_TO_POCKET" + ]), + Joi.string().required(), + eventsTelemetryExtraKeys +); + // Use this to validate actions generated from Redux export const UserEventAction = Joi.object().keys({ type: Joi.string().required(), @@ -150,6 +183,14 @@ export const SessionPing = Joi.object().keys(Object.assign({}, baseKeys, { }).required() })); +export const UTSessionPing = Joi.array().items( + Joi.string().required().valid("activity_stream"), + Joi.string().required().valid("end"), + Joi.string().required().valid("session"), + Joi.string().required(), + eventsTelemetryExtraKeys +); + export function chaiAssertions(_chai, utils) { const {Assertion} = _chai; diff --git a/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx b/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx index b4055f0d01bf..566c0caea60b 100644 --- a/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx +++ b/browser/extensions/activity-stream/test/unit/activity-stream-prerender.test.jsx @@ -35,4 +35,16 @@ describe("prerender", () => { const state = store.getState(); assert.equal(state.App.initialized, false); }); + + it("should throw if zero-length HTML content is returned", () => { + const boundPrerender = prerender.bind(null, "en-US", messages, () => ""); + + assert.throws(boundPrerender, Error, /no HTML returned/); + }); + + it("should throw if falsy HTML content is returned", () => { + const boundPrerender = prerender.bind(null, "en-US", messages, () => null); + + assert.throws(boundPrerender, Error, /no HTML returned/); + }); }); diff --git a/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js b/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js index 921c5edb3683..512bad57fcf3 100644 --- a/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/ActivityStreamMessageChannel.test.js @@ -230,16 +230,16 @@ describe("ActivityStreamMessageChannel", () => { let sandbox; beforeEach(() => { sandbox = sinon.sandbox.create(); - sandbox.spy(global.Components.utils, "reportError"); + sandbox.spy(global.Cu, "reportError"); }); afterEach(() => sandbox.restore()); it("should report an error if the msg.data is missing", () => { mm.onMessage({target: {portID: "foo"}}); - assert.calledOnce(global.Components.utils.reportError); + assert.calledOnce(global.Cu.reportError); }); it("should report an error if the msg.data.type is missing", () => { mm.onMessage({target: {portID: "foo"}, data: "foo"}); - assert.calledOnce(global.Components.utils.reportError); + assert.calledOnce(global.Cu.reportError); }); it("should call onActionFromContent", () => { sinon.stub(mm, "onActionFromContent"); diff --git a/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js index 23ed69af5253..2c9afa54311e 100644 --- a/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js @@ -10,7 +10,7 @@ describe("filterAdult", () => { init: sinon.stub(), update: sinon.stub() }; - global.Components.classes["@mozilla.org/security/hash;1"] = { + global.Cc["@mozilla.org/security/hash;1"] = { createInstance() { return hashStub; } diff --git a/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js index b3bd5381da97..f0374ccea1c2 100644 --- a/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/PlacesFeed.test.js @@ -42,19 +42,19 @@ describe("PlacesFeed", () => { } }); globals.set("Pocket", {savePage: sandbox.spy()}); - global.Components.classes["@mozilla.org/browser/nav-history-service;1"] = { + global.Cc["@mozilla.org/browser/nav-history-service;1"] = { getService() { return global.PlacesUtils.history; } }; - global.Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"] = { + global.Cc["@mozilla.org/browser/nav-bookmarks-service;1"] = { getService() { return global.PlacesUtils.bookmarks; } }; sandbox.spy(global.Services.obs, "addObserver"); sandbox.spy(global.Services.obs, "removeObserver"); - sandbox.spy(global.Components.utils, "reportError"); + sandbox.spy(global.Cu, "reportError"); feed = new PlacesFeed(); feed.store = {dispatch: sinon.spy()}; @@ -336,7 +336,7 @@ describe("PlacesFeed", () => { const args = [null, "title", null, null, null, TYPE_BOOKMARK, null, FAKE_BOOKMARK.guid]; await observer.onItemChanged(...args); - assert.calledWith(global.Components.utils.reportError, e); + assert.calledWith(global.Cu.reportError, e); }); it.skip("should ignore events that are not of TYPE_BOOKMARK", async () => { await observer.onItemChanged(null, "title", null, null, null, "nottypebookmark"); diff --git a/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js b/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js index 49218b226c93..46ad45cfe851 100644 --- a/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/SectionsManager.test.js @@ -65,14 +65,14 @@ describe("SectionsManager", () => { }); describe("#addBuiltInSection", () => { it("should not report an error if options is undefined", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); SectionsManager.addBuiltInSection("feeds.section.topstories", undefined); - assert.notCalled(Components.utils.reportError); + assert.notCalled(Cu.reportError); }); it("should report an error if options is malformed", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); SectionsManager.addBuiltInSection("feeds.section.topstories", "invalid"); - assert.calledOnce(Components.utils.reportError); + assert.calledOnce(Cu.reportError); }); }); describe("#addSection", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js index b4427707f718..5e98f20782be 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TelemetryFeed.test.js @@ -25,6 +25,7 @@ describe("TelemetryFeed", () => { let instance; let clock; class PingCentre {sendPing() {} uninit() {}} + class UTEventReporting {sendUserEvent() {} sendSessionEndEvent() {} uninit() {}} class PerfService { getMostRecentAbsMarkStartByName() { return 1234; } mark() {} @@ -37,15 +38,19 @@ describe("TelemetryFeed", () => { USER_PREFS_ENCODING, PREF_IMPRESSION_ID, TELEMETRY_PREF - } = injector({"common/PerfService.jsm": {perfService}}); + } = injector({ + "common/PerfService.jsm": {perfService}, + "lib/UTEventReporting.jsm": {UTEventReporting} + }); beforeEach(() => { globals = new GlobalOverrider(); sandbox = globals.sandbox; clock = sinon.useFakeTimers(); - sandbox.spy(global.Components.utils, "reportError"); + sandbox.spy(global.Cu, "reportError"); globals.set("gUUIDGenerator", {generateUUID: () => FAKE_UUID}); globals.set("PingCentre", PingCentre); + globals.set("UTEventReporting", UTEventReporting); instance = new TelemetryFeed(); instance.store = store; }); @@ -58,6 +63,9 @@ describe("TelemetryFeed", () => { it("should add .pingCentre, a PingCentre instance", () => { assert.instanceOf(instance.pingCentre, PingCentre); }); + it("should add .utEvents, a UTEventReporting instance", () => { + assert.instanceOf(instance.utEvents, UTEventReporting); + }); it("should make this.browserOpenNewtabStart() observe browser-open-newtab-start", () => { sandbox.spy(Services.obs, "addObserver"); @@ -233,13 +241,17 @@ describe("TelemetryFeed", () => { it("should call createSessionSendEvent and sendEvent with the sesssion", () => { sandbox.stub(instance, "sendEvent"); sandbox.stub(instance, "createSessionEndEvent"); + sandbox.stub(instance.utEvents, "sendSessionEndEvent"); const session = instance.addSession("foo"); instance.endSession("foo"); // Did we call sendEvent with the result of createSessionEndEvent? assert.calledWith(instance.createSessionEndEvent, session); - assert.calledWith(instance.sendEvent, instance.createSessionEndEvent.firstCall.returnValue); + + let sessionEndEvent = instance.createSessionEndEvent.firstCall.returnValue; + assert.calledWith(instance.sendEvent, sessionEndEvent); + assert.calledWith(instance.utEvents.sendSessionEndEvent, sessionEndEvent); }); }); describe("ping creators", () => { @@ -524,6 +536,13 @@ describe("TelemetryFeed", () => { assert.calledOnce(stub); }); + it("should call .utEvents.uninit", () => { + const stub = sandbox.stub(instance.utEvents, "uninit"); + + instance.uninit(); + + assert.calledOnce(stub); + }); it("should remove the a-s telemetry pref listener", () => { FakePrefs.prototype.prefs[TELEMETRY_PREF] = true; instance = new TelemetryFeed(); @@ -540,7 +559,7 @@ describe("TelemetryFeed", () => { instance.uninit(); - assert.called(global.Components.utils.reportError); + assert.called(global.Cu.reportError); }); it("should make this.browserOpenNewtabStart() stop observing browser-open-newtab-start", async () => { await instance.init(); @@ -623,12 +642,14 @@ describe("TelemetryFeed", () => { it("should send an event on a TELEMETRY_USER_EVENT action", () => { const sendEvent = sandbox.stub(instance, "sendEvent"); const eventCreator = sandbox.stub(instance, "createUserEvent"); + const sendUserEvent = sandbox.stub(instance.utEvents, "sendUserEvent"); const action = {type: at.TELEMETRY_USER_EVENT}; instance.onAction(action); assert.calledWith(eventCreator, action); assert.calledWith(sendEvent, eventCreator.returnValue); + assert.calledWith(sendUserEvent, eventCreator.returnValue); }); it("should send an event on a TELEMETRY_PERFORMANCE_EVENT action", () => { const sendEvent = sandbox.stub(instance, "sendEvent"); diff --git a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js index f645370838b3..59aeef19fa1e 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js @@ -9,7 +9,7 @@ import {Screenshots} from "lib/Screenshots.jsm"; const FAKE_FAVICON = "data987"; const FAKE_FAVICON_SIZE = 128; const FAKE_FRECENCY = 200; -const FAKE_LINKS = new Array(TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW).fill(null).map((v, i) => ({ +const FAKE_LINKS = new Array(2 * TOP_SITES_MAX_SITES_PER_ROW).fill(null).map((v, i) => ({ frecency: FAKE_FRECENCY, url: `http://www.site${i}.com` })); @@ -344,7 +344,7 @@ describe("Top Sites Feed", () => { const sites = await feed.getLinksWithDefaults(); - assert.lengthOf(sites, TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW); + assert.lengthOf(sites, 2 * TOP_SITES_MAX_SITES_PER_ROW); assert.equal(sites[0].url, fakeNewTabUtils.pinnedLinks.links[0].url); assert.equal(sites[1].url, fakeNewTabUtils.pinnedLinks.links[1].url); assert.equal(sites[0].hostname, sites[1].hostname); @@ -657,17 +657,21 @@ describe("Top Sites Feed", () => { const site4 = {url: "example.biz"}; const site5 = {url: "example.info"}; const site6 = {url: "example.news"}; - fakeNewTabUtils.pinnedLinks.links = [site1, site2, site3, site4, site5, site6]; + const site7 = {url: "example.lol"}; + const site8 = {url: "example.golf"}; + fakeNewTabUtils.pinnedLinks.links = [site1, site2, site3, site4, site5, site6, site7, site8]; feed.store.state.Prefs.values.topSitesRows = 1; const site = {url: "foo.bar", label: "foo"}; feed.insert({data: {site}}); - assert.equal(fakeNewTabUtils.pinnedLinks.pin.callCount, 6); + assert.equal(fakeNewTabUtils.pinnedLinks.pin.callCount, 8); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site, 0); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site1, 1); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site2, 2); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site3, 3); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site4, 4); assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site5, 5); + assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site6, 6); + assert.calledWith(fakeNewTabUtils.pinnedLinks.pin, site7, 7); }); }); describe("#pin", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js index bf6d0343ab2e..ebc29a0a5f15 100644 --- a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js @@ -121,14 +121,14 @@ describe("Top Stories Feed", () => { assert.notCalled(fetchStub); }); it("should report error for invalid configuration", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); sectionsManagerStub.sections.set("topstories", {options: {api_key_pref: "invalid"}}); instance.init(); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); it("should report error for missing api key", () => { - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); sectionsManagerStub.sections.set("topstories", { options: { "stories_endpoint": "https://somedomain.org/stories?key=$apiKey", @@ -137,7 +137,7 @@ describe("Top Stories Feed", () => { }); instance.init(); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); it("should load data from cache on init", () => { instance.loadCachedData = sinon.spy(); @@ -207,7 +207,7 @@ describe("Top Stories Feed", () => { it("should report error for unexpected stories response", async () => { let fetchStub = globals.sandbox.stub(); globals.set("fetch", fetchStub); - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); instance.stories_endpoint = "stories-endpoint"; fetchStub.resolves({ok: false, status: 400}); @@ -216,7 +216,7 @@ describe("Top Stories Feed", () => { assert.calledOnce(fetchStub); assert.calledWithExactly(fetchStub, instance.stories_endpoint); assert.notCalled(sectionsManagerStub.updateSection); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); it("should exclude blocked (dismissed) URLs", async () => { let fetchStub = globals.sandbox.stub(); @@ -283,7 +283,7 @@ describe("Top Stories Feed", () => { it("should report error for unexpected topics response", async () => { let fetchStub = globals.sandbox.stub(); globals.set("fetch", fetchStub); - globals.sandbox.spy(global.Components.utils, "reportError"); + globals.sandbox.spy(global.Cu, "reportError"); instance.topics_endpoint = "topics-endpoint"; fetchStub.resolves({ok: false, status: 400}); @@ -292,7 +292,7 @@ describe("Top Stories Feed", () => { assert.calledOnce(fetchStub); assert.calledWithExactly(fetchStub, instance.topics_endpoint); assert.notCalled(instance.store.dispatch); - assert.called(Components.utils.reportError); + assert.called(Cu.reportError); }); }); describe("#personalization", () => { diff --git a/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js b/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js new file mode 100644 index 000000000000..a831f3752be1 --- /dev/null +++ b/browser/extensions/activity-stream/test/unit/lib/UTEventReporting.test.js @@ -0,0 +1,92 @@ +import { + UTSessionPing, + UTUserEventPing +} from "test/schemas/pings"; +import {GlobalOverrider} from "test/unit/utils"; +import {UTEventReporting} from "lib/UTEventReporting.jsm"; + +const FAKE_EVENT_PING_PC = { + "event": "CLICK", + "source": "TOP_SITES", + "addon_version": "123", + "user_prefs": 63, + "session_id": "abc", + "page": "about:newtab", + "action_position": 5, + "locale": "en-US" +}; +const FAKE_SESSION_PING_PC = { + "session_duration": 1234, + "addon_version": "123", + "user_prefs": 63, + "session_id": "abc", + "page": "about:newtab", + "locale": "en-US" +}; +const FAKE_EVENT_PING_UT = [ + "activity_stream", "event", "CLICK", "TOP_SITES", { + "addon_version": "123", + "user_prefs": "63", + "session_id": "abc", + "page": "about:newtab", + "action_position": "5" + } +]; +const FAKE_SESSION_PING_UT = [ + "activity_stream", "end", "session", "1234", { + "addon_version": "123", + "user_prefs": "63", + "session_id": "abc", + "page": "about:newtab" + } +]; + +describe("UTEventReporting", () => { + let globals; + let sandbox; + let utEvents; + + beforeEach(() => { + globals = new GlobalOverrider(); + sandbox = globals.sandbox; + sandbox.stub(global.Services.telemetry, "setEventRecordingEnabled"); + sandbox.stub(global.Services.telemetry, "recordEvent"); + + utEvents = new UTEventReporting(); + }); + + afterEach(() => { + globals.restore(); + }); + + describe("#sendUserEvent()", () => { + it("should queue up the correct data to send to Events Telemetry", async () => { + utEvents.sendUserEvent(FAKE_EVENT_PING_PC); + assert.calledWithExactly(global.Services.telemetry.recordEvent, ...FAKE_EVENT_PING_UT); + + let ping = global.Services.telemetry.recordEvent.firstCall.args; + assert.validate(ping, UTUserEventPing); + }); + }); + + describe("#sendSessionEndEvent()", () => { + it("should queue up the correct data to send to Events Telemetry", async () => { + utEvents.sendSessionEndEvent(FAKE_SESSION_PING_PC); + assert.calledWithExactly(global.Services.telemetry.recordEvent, ...FAKE_SESSION_PING_UT); + + let ping = global.Services.telemetry.recordEvent.firstCall.args; + assert.validate(ping, UTSessionPing); + }); + }); + + describe("#uninit()", () => { + it("should call setEventRecordingEnabled with a false value", () => { + assert.equal(global.Services.telemetry.setEventRecordingEnabled.firstCall.args[0], "activity_stream"); + assert.equal(global.Services.telemetry.setEventRecordingEnabled.firstCall.args[1], true); + + utEvents.uninit(); + assert.equal(global.Services.telemetry.setEventRecordingEnabled.secondCall.args[0], "activity_stream"); + assert.equal(global.Services.telemetry.setEventRecordingEnabled.secondCall.args[1], false); + }); + }); +}); diff --git a/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js b/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js index 0415b7c5c7b8..68166d33deb7 100644 --- a/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js +++ b/browser/extensions/activity-stream/test/unit/lib/UserDomainAffinityProvider.test.js @@ -44,7 +44,7 @@ describe("User Domain Affinity Provider", () => { executeQuery: () => ({root: {childCount: 1, getChild: index => ({uri: "www.somedomain.org", accessCount: 1})}}) } }); - global.Components.classes["@mozilla.org/browser/nav-history-service;1"] = { + global.Cc["@mozilla.org/browser/nav-history-service;1"] = { getService() { return global.PlacesUtils.history; } diff --git a/browser/extensions/activity-stream/test/unit/unit-entry.js b/browser/extensions/activity-stream/test/unit/unit-entry.js index 7b6e188dc28b..2cf49a1de209 100644 --- a/browser/extensions/activity-stream/test/unit/unit-entry.js +++ b/browser/extensions/activity-stream/test/unit/unit-entry.js @@ -1,8 +1,7 @@ import {EventEmitter, FakePerformance, FakePrefs, GlobalOverrider} from "test/unit/utils"; -import Adapter from "enzyme-adapter-react-15"; +import Adapter from "enzyme-adapter-react-16"; import {chaiAssertions} from "test/schemas/pings"; import enzyme from "enzyme"; - enzyme.configure({adapter: new Adapter()}); // Cause React warnings to make tests that trigger them fail @@ -28,23 +27,20 @@ let overrider = new GlobalOverrider(); overrider.set({ AppConstants: {MOZILLA_OFFICIAL: true}, - Components: { - classes: {}, - interfaces: {nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5}}, - utils: { - import() {}, - importGlobalProperties() {}, - reportError() {}, - now: () => window.performance.now() - }, - isSuccessCode: () => true - }, ChromeUtils: { defineModuleGetter() {}, import() {} }, + Components: {isSuccessCode: () => true}, // eslint-disable-next-line object-shorthand ContentSearchUIController: function() {}, // NB: This is a function/constructor + Cc: {}, + Ci: {nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5}}, + Cu: { + importGlobalProperties() {}, + now: () => window.performance.now(), + reportError() {} + }, dump() {}, fetch() {}, // eslint-disable-next-line object-shorthand @@ -66,6 +62,10 @@ overrider.set({ addObserver() {}, removeObserver() {} }, + telemetry: { + setEventRecordingEnabled: () => {}, + recordEvent: eventDetails => {} + }, console: {logStringMessage: () => {}}, prefs: { addObserver() {}, diff --git a/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE b/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE new file mode 100644 index 000000000000..188fb2b0bd8e --- /dev/null +++ b/browser/extensions/activity-stream/vendor/REACT_AND_REACT_DOM_LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/browser/extensions/activity-stream/vendor/react-dev.js b/browser/extensions/activity-stream/vendor/react-dev.js index 9f8f480fcf02..65480887b6de 100644 --- a/browser/extensions/activity-stream/vendor/react-dev.js +++ b/browser/extensions/activity-stream/vendor/react-dev.js @@ -1,3328 +1,27 @@ - /** - * React v15.5.4 - */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oHello World; - * } - * }); - * - * The class specification supports a specific protocol of methods that have - * special meaning (e.g. `render`). See `ReactClassInterface` for - * more the comprehensive protocol. Any other properties and methods in the - * class specification will be available on the prototype. - * - * @interface ReactClassInterface - * @internal - */ -var ReactClassInterface = { - - /** - * An array of Mixin objects to include when defining your component. - * - * @type {array} - * @optional - */ - mixins: 'DEFINE_MANY', - - /** - * An object containing properties and methods that should be defined on - * the component's constructor instead of its prototype (static methods). - * - * @type {object} - * @optional - */ - statics: 'DEFINE_MANY', - - /** - * Definition of prop types for this component. - * - * @type {object} - * @optional - */ - propTypes: 'DEFINE_MANY', - - /** - * Definition of context types for this component. - * - * @type {object} - * @optional - */ - contextTypes: 'DEFINE_MANY', - - /** - * Definition of context types this component sets for its children. - * - * @type {object} - * @optional - */ - childContextTypes: 'DEFINE_MANY', - - // ==== Definition methods ==== - - /** - * Invoked when the component is mounted. Values in the mapping will be set on - * `this.props` if that prop is not specified (i.e. using an `in` check). - * - * This method is invoked before `getInitialState` and therefore cannot rely - * on `this.state` or use `this.setState`. - * - * @return {object} - * @optional - */ - getDefaultProps: 'DEFINE_MANY_MERGED', - - /** - * Invoked once before the component is mounted. The return value will be used - * as the initial value of `this.state`. - * - * getInitialState: function() { - * return { - * isOn: false, - * fooBaz: new BazFoo() - * } - * } - * - * @return {object} - * @optional - */ - getInitialState: 'DEFINE_MANY_MERGED', - - /** - * @return {object} - * @optional - */ - getChildContext: 'DEFINE_MANY_MERGED', - - /** - * Uses props from `this.props` and state from `this.state` to render the - * structure of the component. - * - * No guarantees are made about when or how often this method is invoked, so - * it must not have side effects. - * - * render: function() { - * var name = this.props.name; - * return
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Hello, {name}!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ; - * } - * - * @return {ReactComponent} - * @required - */ - render: 'DEFINE_ONCE', - - // ==== Delegate methods ==== - - /** - * Invoked when the component is initially created and about to be mounted. - * This may have side effects, but any external subscriptions or data created - * by this method must be cleaned up in `componentWillUnmount`. - * - * @optional - */ - componentWillMount: 'DEFINE_MANY', - - /** - * Invoked when the component has been mounted and has a DOM representation. - * However, there is no guarantee that the DOM node is in the document. - * - * Use this as an opportunity to operate on the DOM when the component has - * been mounted (initialized and rendered) for the first time. - * - * @param {DOMElement} rootNode DOM element representing the component. - * @optional - */ - componentDidMount: 'DEFINE_MANY', - - /** - * Invoked before the component receives new props. - * - * Use this as an opportunity to react to a prop transition by updating the - * state using `this.setState`. Current props are accessed via `this.props`. - * - * componentWillReceiveProps: function(nextProps, nextContext) { - * this.setState({ - * likesIncreasing: nextProps.likeCount > this.props.likeCount - * }); - * } - * - * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop - * transition may cause a state change, but the opposite is not true. If you - * need it, you are probably looking for `componentWillUpdate`. - * - * @param {object} nextProps - * @optional - */ - componentWillReceiveProps: 'DEFINE_MANY', - - /** - * Invoked while deciding if the component should be updated as a result of - * receiving new props, state and/or context. - * - * Use this as an opportunity to `return false` when you're certain that the - * transition to the new props/state/context will not require a component - * update. - * - * shouldComponentUpdate: function(nextProps, nextState, nextContext) { - * return !equal(nextProps, this.props) || - * !equal(nextState, this.state) || - * !equal(nextContext, this.context); - * } - * - * @param {object} nextProps - * @param {?object} nextState - * @param {?object} nextContext - * @return {boolean} True if the component should update. - * @optional - */ - shouldComponentUpdate: 'DEFINE_ONCE', - - /** - * Invoked when the component is about to update due to a transition from - * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` - * and `nextContext`. - * - * Use this as an opportunity to perform preparation before an update occurs. - * - * NOTE: You **cannot** use `this.setState()` in this method. - * - * @param {object} nextProps - * @param {?object} nextState - * @param {?object} nextContext - * @param {ReactReconcileTransaction} transaction - * @optional - */ - componentWillUpdate: 'DEFINE_MANY', - - /** - * Invoked when the component's DOM representation has been updated. - * - * Use this as an opportunity to operate on the DOM when the component has - * been updated. - * - * @param {object} prevProps - * @param {?object} prevState - * @param {?object} prevContext - * @param {DOMElement} rootNode DOM element representing the component. - * @optional - */ - componentDidUpdate: 'DEFINE_MANY', - - /** - * Invoked when the component is about to be removed from its parent and have - * its DOM representation destroyed. - * - * Use this as an opportunity to deallocate any external resources. - * - * NOTE: There is no `componentDidUnmount` since your component will have been - * destroyed by that point. - * - * @optional - */ - componentWillUnmount: 'DEFINE_MANY', - - // ==== Advanced methods ==== - - /** - * Updates the component's currently mounted DOM representation. - * - * By default, this implements React's rendering and reconciliation algorithm. - * Sophisticated clients may wish to override this. - * - * @param {ReactReconcileTransaction} transaction - * @internal - * @overridable - */ - updateComponent: 'OVERRIDE_BASE' - -}; - -/** - * Mapping from class specification keys to special processing functions. - * - * Although these are declared like instance properties in the specification - * when defining classes using `React.createClass`, they are actually static - * and are accessible on the constructor instead of the prototype. Despite - * being static, they must be defined outside of the "statics" key under - * which all other static methods are defined. - */ -var RESERVED_SPEC_KEYS = { - displayName: function (Constructor, displayName) { - Constructor.displayName = displayName; - }, - mixins: function (Constructor, mixins) { - if (mixins) { - for (var i = 0; i < mixins.length; i++) { - mixSpecIntoComponent(Constructor, mixins[i]); - } - } - }, - childContextTypes: function (Constructor, childContextTypes) { - if ("development" !== 'production') { - validateTypeDef(Constructor, childContextTypes, 'childContext'); - } - Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); - }, - contextTypes: function (Constructor, contextTypes) { - if ("development" !== 'production') { - validateTypeDef(Constructor, contextTypes, 'context'); - } - Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); - }, - /** - * Special case getDefaultProps which should move into statics but requires - * automatic merging. - */ - getDefaultProps: function (Constructor, getDefaultProps) { - if (Constructor.getDefaultProps) { - Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); - } else { - Constructor.getDefaultProps = getDefaultProps; - } - }, - propTypes: function (Constructor, propTypes) { - if ("development" !== 'production') { - validateTypeDef(Constructor, propTypes, 'prop'); - } - Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); - }, - statics: function (Constructor, statics) { - mixStaticSpecIntoComponent(Constructor, statics); - }, - autobind: function () {} }; - -function validateTypeDef(Constructor, typeDef, location) { - for (var propName in typeDef) { - if (typeDef.hasOwnProperty(propName)) { - // use a warning instead of an invariant so components - // don't show up in prod but only in __DEV__ - "development" !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0; - } - } -} - -function validateMethodOverride(isAlreadyDefined, name) { - var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; - - // Disallow overriding of base class methods unless explicitly allowed. - if (ReactClassMixin.hasOwnProperty(name)) { - !(specPolicy === 'OVERRIDE_BASE') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0; - } - - // Disallow defining methods more than once unless explicitly allowed. - if (isAlreadyDefined) { - !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0; - } -} - -/** - * Mixin helper which handles policy validation and reserved - * specification keys when building React classes. - */ -function mixSpecIntoComponent(Constructor, spec) { - if (!spec) { - if ("development" !== 'production') { - var typeofSpec = typeof spec; - var isMixinValid = typeofSpec === 'object' && spec !== null; - - "development" !== 'production' ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0; - } - - return; - } - - !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0; - !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0; - - var proto = Constructor.prototype; - var autoBindPairs = proto.__reactAutoBindPairs; - - // By handling mixins before any other properties, we ensure the same - // chaining order is applied to methods with DEFINE_MANY policy, whether - // mixins are listed before or after these methods in the spec. - if (spec.hasOwnProperty(MIXINS_KEY)) { - RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); - } - - for (var name in spec) { - if (!spec.hasOwnProperty(name)) { - continue; - } - - if (name === MIXINS_KEY) { - // We have already handled mixins in a special case above. - continue; - } - - var property = spec[name]; - var isAlreadyDefined = proto.hasOwnProperty(name); - validateMethodOverride(isAlreadyDefined, name); - - if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { - RESERVED_SPEC_KEYS[name](Constructor, property); - } else { - // Setup methods on prototype: - // The following member methods should not be automatically bound: - // 1. Expected ReactClass methods (in the "interface"). - // 2. Overridden methods (that were mixed in). - var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); - var isFunction = typeof property === 'function'; - var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; - - if (shouldAutoBind) { - autoBindPairs.push(name, property); - proto[name] = property; - } else { - if (isAlreadyDefined) { - var specPolicy = ReactClassInterface[name]; - - // These cases should already be caught by validateMethodOverride. - !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0; - - // For methods which are defined more than once, call the existing - // methods before calling the new property, merging if appropriate. - if (specPolicy === 'DEFINE_MANY_MERGED') { - proto[name] = createMergedResultFunction(proto[name], property); - } else if (specPolicy === 'DEFINE_MANY') { - proto[name] = createChainedFunction(proto[name], property); - } - } else { - proto[name] = property; - if ("development" !== 'production') { - // Add verbose displayName to the function, which helps when looking - // at profiling tools. - if (typeof property === 'function' && spec.displayName) { - proto[name].displayName = spec.displayName + '_' + name; - } - } - } - } - } - } -} - -function mixStaticSpecIntoComponent(Constructor, statics) { - if (!statics) { - return; - } - for (var name in statics) { - var property = statics[name]; - if (!statics.hasOwnProperty(name)) { - continue; - } - - var isReserved = name in RESERVED_SPEC_KEYS; - !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0; - - var isInherited = name in Constructor; - !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0; - Constructor[name] = property; - } -} - -/** - * Merge two objects, but throw if both contain the same key. - * - * @param {object} one The first object, which is mutated. - * @param {object} two The second object - * @return {object} one after it has been mutated to contain everything in two. - */ -function mergeIntoWithNoDuplicateKeys(one, two) { - !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0; - - for (var key in two) { - if (two.hasOwnProperty(key)) { - !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0; - one[key] = two[key]; - } - } - return one; -} - -/** - * Creates a function that invokes two functions and merges their return values. - * - * @param {function} one Function to invoke first. - * @param {function} two Function to invoke second. - * @return {function} Function that invokes the two argument functions. - * @private - */ -function createMergedResultFunction(one, two) { - return function mergedResult() { - var a = one.apply(this, arguments); - var b = two.apply(this, arguments); - if (a == null) { - return b; - } else if (b == null) { - return a; - } - var c = {}; - mergeIntoWithNoDuplicateKeys(c, a); - mergeIntoWithNoDuplicateKeys(c, b); - return c; - }; -} - -/** - * Creates a function that invokes two functions and ignores their return vales. - * - * @param {function} one Function to invoke first. - * @param {function} two Function to invoke second. - * @return {function} Function that invokes the two argument functions. - * @private - */ -function createChainedFunction(one, two) { - return function chainedFunction() { - one.apply(this, arguments); - two.apply(this, arguments); - }; -} - -/** - * Binds a method to the component. - * - * @param {object} component Component whose method is going to be bound. - * @param {function} method Method to be bound. - * @return {function} The bound method. - */ -function bindAutoBindMethod(component, method) { - var boundMethod = method.bind(component); - if ("development" !== 'production') { - boundMethod.__reactBoundContext = component; - boundMethod.__reactBoundMethod = method; - boundMethod.__reactBoundArguments = null; - var componentName = component.constructor.displayName; - var _bind = boundMethod.bind; - boundMethod.bind = function (newThis) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - // User is trying to bind() an autobound method; we effectively will - // ignore the value of "this" that the user is trying to use, so - // let's warn. - if (newThis !== component && newThis !== null) { - "development" !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0; - } else if (!args.length) { - "development" !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0; - return boundMethod; - } - var reboundMethod = _bind.apply(boundMethod, arguments); - reboundMethod.__reactBoundContext = component; - reboundMethod.__reactBoundMethod = method; - reboundMethod.__reactBoundArguments = args; - return reboundMethod; - }; - } - return boundMethod; -} - -/** - * Binds all auto-bound methods in a component. - * - * @param {object} component Component whose method is going to be bound. - */ -function bindAutoBindMethods(component) { - var pairs = component.__reactAutoBindPairs; - for (var i = 0; i < pairs.length; i += 2) { - var autoBindKey = pairs[i]; - var method = pairs[i + 1]; - component[autoBindKey] = bindAutoBindMethod(component, method); - } -} - -/** - * Add more to the ReactClass base class. These are all legacy features and - * therefore not already part of the modern ReactComponent. - */ -var ReactClassMixin = { - - /** - * TODO: This will be deprecated because state should always keep a consistent - * type signature and the only use case for this, is to avoid that. - */ - replaceState: function (newState, callback) { - this.updater.enqueueReplaceState(this, newState); - if (callback) { - this.updater.enqueueCallback(this, callback, 'replaceState'); - } - }, - - /** - * Checks whether or not this composite component is mounted. - * @return {boolean} True if mounted, false otherwise. - * @protected - * @final - */ - isMounted: function () { - return this.updater.isMounted(this); - } -}; - -var ReactClassComponent = function () {}; -_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); - -var didWarnDeprecated = false; - -/** - * Module for creating composite components. - * - * @class ReactClass - */ -var ReactClass = { - - /** - * Creates a composite component class given a class specification. - * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass - * - * @param {object} spec Class specification (which must define `render`). - * @return {function} Component constructor function. - * @public - */ - createClass: function (spec) { - if ("development" !== 'production') { - "development" !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0; - didWarnDeprecated = true; - } - - // To keep our warnings more understandable, we'll use a little hack here to - // ensure that Constructor.name !== 'Constructor'. This makes sure we don't - // unnecessarily identify a class without displayName as 'Constructor'. - var Constructor = identity(function (props, context, updater) { - // This constructor gets overridden by mocks. The argument is used - // by mocks to assert on what gets mounted. - - if ("development" !== 'production') { - "development" !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0; - } - - // Wire up auto-binding - if (this.__reactAutoBindPairs.length) { - bindAutoBindMethods(this); - } - - this.props = props; - this.context = context; - this.refs = emptyObject; - this.updater = updater || ReactNoopUpdateQueue; - - this.state = null; - - // ReactClasses doesn't have constructors. Instead, they use the - // getInitialState and componentWillMount methods for initialization. - - var initialState = this.getInitialState ? this.getInitialState() : null; - if ("development" !== 'production') { - // We allow auto-mocks to proceed as if they're returning null. - if (initialState === undefined && this.getInitialState._isMockFunction) { - // This is probably bad practice. Consider warning here and - // deprecating this convenience. - initialState = null; - } - } - !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0; - - this.state = initialState; - }); - Constructor.prototype = new ReactClassComponent(); - Constructor.prototype.constructor = Constructor; - Constructor.prototype.__reactAutoBindPairs = []; - - injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); - - mixSpecIntoComponent(Constructor, spec); - - // Initialize the defaultProps property after all mixins have been merged. - if (Constructor.getDefaultProps) { - Constructor.defaultProps = Constructor.getDefaultProps(); - } - - if ("development" !== 'production') { - // This is a tag to indicate that the use of these method names is ok, - // since it's used with createClass. If it's not, then it's likely a - // mistake so we'll warn you to use the static property, property - // initializer or constructor respectively. - if (Constructor.getDefaultProps) { - Constructor.getDefaultProps.isReactClassApproved = {}; - } - if (Constructor.prototype.getInitialState) { - Constructor.prototype.getInitialState.isReactClassApproved = {}; - } - } - - !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0; - - if ("development" !== 'production') { - "development" !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0; - "development" !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0; - } - - // Reduce time spent doing lookups by setting these on the prototype. - for (var methodName in ReactClassInterface) { - if (!Constructor.prototype[methodName]) { - Constructor.prototype[methodName] = null; - } - } - - return Constructor; - }, - - injection: { - injectMixin: function (mixin) { - injectedMixins.push(mixin); - } - } - -}; - -module.exports = ReactClass; -},{"10":10,"13":13,"14":14,"25":25,"28":28,"29":29,"30":30,"31":31,"6":6}],6:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactNoopUpdateQueue = _dereq_(13); - -var canDefineProperty = _dereq_(20); -var emptyObject = _dereq_(28); -var invariant = _dereq_(29); -var warning = _dereq_(30); - -/** - * Base class helpers for the updating state of a component. - */ -function ReactComponent(props, context, updater) { - this.props = props; - this.context = context; - this.refs = emptyObject; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -ReactComponent.prototype.isReactComponent = {}; - -/** - * Sets a subset of the state. Always use this to mutate - * state. You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * There is no guarantee that calls to `setState` will run synchronously, - * as they may eventually be batched together. You can provide an optional - * callback that will be executed when the call to setState is actually - * completed. - * - * When a function is provided to setState, it will be called at some point in - * the future (not synchronously). It will be called with the up to date - * component arguments (state, props, context). These values can be different - * from this.* because your function may be called after receiveProps but before - * shouldComponentUpdate, and this new state, props, and context will not yet be - * assigned to this. - * - * @param {object|function} partialState Next partial state or function to - * produce next partial state to be merged with current state. - * @param {?function} callback Called after state is updated. - * @final - * @protected - */ -ReactComponent.prototype.setState = function (partialState, callback) { - !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0; - this.updater.enqueueSetState(this, partialState); - if (callback) { - this.updater.enqueueCallback(this, callback, 'setState'); - } -}; - -/** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {?function} callback Called after update is complete. - * @final - * @protected - */ -ReactComponent.prototype.forceUpdate = function (callback) { - this.updater.enqueueForceUpdate(this); - if (callback) { - this.updater.enqueueCallback(this, callback, 'forceUpdate'); - } -}; - -/** - * Deprecated APIs. These APIs used to exist on classic React classes but since - * we would like to deprecate them, we're not going to move them over to this - * modern base class. Instead, we define a getter that warns if it's accessed. - */ -if ("development" !== 'production') { - var deprecatedAPIs = { - isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], - replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] - }; - var defineDeprecationWarning = function (methodName, info) { - if (canDefineProperty) { - Object.defineProperty(ReactComponent.prototype, methodName, { - get: function () { - "development" !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0; - return undefined; - } - }); - } - }; - for (var fnName in deprecatedAPIs) { - if (deprecatedAPIs.hasOwnProperty(fnName)) { - defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); - } - } -} - -module.exports = ReactComponent; -},{"13":13,"20":20,"25":25,"28":28,"29":29,"30":30}],7:[function(_dereq_,module,exports){ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactCurrentOwner = _dereq_(8); - -var invariant = _dereq_(29); -var warning = _dereq_(30); - -function isNative(fn) { - // Based on isNative() from Lodash - var funcToString = Function.prototype.toString; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var reIsNative = RegExp('^' + funcToString - // Take an example native function source for comparison - .call(hasOwnProperty) - // Strip regex characters so we can use it for regex - .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - // Remove hasOwnProperty from the template to make it generic - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); - try { - var source = funcToString.call(fn); - return reIsNative.test(source); - } catch (err) { - return false; - } -} - -var canUseCollections = -// Array.from -typeof Array.from === 'function' && -// Map -typeof Map === 'function' && isNative(Map) && -// Map.prototype.keys -Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) && -// Set -typeof Set === 'function' && isNative(Set) && -// Set.prototype.keys -Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys); - -var setItem; -var getItem; -var removeItem; -var getItemIDs; -var addRoot; -var removeRoot; -var getRootIDs; - -if (canUseCollections) { - var itemMap = new Map(); - var rootIDSet = new Set(); - - setItem = function (id, item) { - itemMap.set(id, item); - }; - getItem = function (id) { - return itemMap.get(id); - }; - removeItem = function (id) { - itemMap['delete'](id); - }; - getItemIDs = function () { - return Array.from(itemMap.keys()); - }; - - addRoot = function (id) { - rootIDSet.add(id); - }; - removeRoot = function (id) { - rootIDSet['delete'](id); - }; - getRootIDs = function () { - return Array.from(rootIDSet.keys()); - }; -} else { - var itemByKey = {}; - var rootByKey = {}; - - // Use non-numeric keys to prevent V8 performance issues: - // https://github.com/facebook/react/pull/7232 - var getKeyFromID = function (id) { - return '.' + id; - }; - var getIDFromKey = function (key) { - return parseInt(key.substr(1), 10); - }; - - setItem = function (id, item) { - var key = getKeyFromID(id); - itemByKey[key] = item; - }; - getItem = function (id) { - var key = getKeyFromID(id); - return itemByKey[key]; - }; - removeItem = function (id) { - var key = getKeyFromID(id); - delete itemByKey[key]; - }; - getItemIDs = function () { - return Object.keys(itemByKey).map(getIDFromKey); - }; - - addRoot = function (id) { - var key = getKeyFromID(id); - rootByKey[key] = true; - }; - removeRoot = function (id) { - var key = getKeyFromID(id); - delete rootByKey[key]; - }; - getRootIDs = function () { - return Object.keys(rootByKey).map(getIDFromKey); - }; -} - -var unmountedIDs = []; - -function purgeDeep(id) { - var item = getItem(id); - if (item) { - var childIDs = item.childIDs; - - removeItem(id); - childIDs.forEach(purgeDeep); - } -} - -function describeComponentFrame(name, source, ownerName) { - return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); -} - -function getDisplayName(element) { - if (element == null) { - return '#empty'; - } else if (typeof element === 'string' || typeof element === 'number') { - return '#text'; - } else if (typeof element.type === 'string') { - return element.type; - } else { - return element.type.displayName || element.type.name || 'Unknown'; - } -} - -function describeID(id) { - var name = ReactComponentTreeHook.getDisplayName(id); - var element = ReactComponentTreeHook.getElement(id); - var ownerID = ReactComponentTreeHook.getOwnerID(id); - var ownerName; - if (ownerID) { - ownerName = ReactComponentTreeHook.getDisplayName(ownerID); - } - "development" !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0; - return describeComponentFrame(name, element && element._source, ownerName); -} - -var ReactComponentTreeHook = { - onSetChildren: function (id, nextChildIDs) { - var item = getItem(id); - !item ? "development" !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; - item.childIDs = nextChildIDs; - - for (var i = 0; i < nextChildIDs.length; i++) { - var nextChildID = nextChildIDs[i]; - var nextChild = getItem(nextChildID); - !nextChild ? "development" !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0; - !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? "development" !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0; - !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0; - if (nextChild.parentID == null) { - nextChild.parentID = id; - // TODO: This shouldn't be necessary but mounting a new root during in - // componentWillMount currently causes not-yet-mounted components to - // be purged from our tree data so their parent id is missing. - } - !(nextChild.parentID === id) ? "development" !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0; - } - }, - onBeforeMountComponent: function (id, element, parentID) { - var item = { - element: element, - parentID: parentID, - text: null, - childIDs: [], - isMounted: false, - updateCount: 0 - }; - setItem(id, item); - }, - onBeforeUpdateComponent: function (id, element) { - var item = getItem(id); - if (!item || !item.isMounted) { - // We may end up here as a result of setState() in componentWillUnmount(). - // In this case, ignore the element. - return; - } - item.element = element; - }, - onMountComponent: function (id) { - var item = getItem(id); - !item ? "development" !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; - item.isMounted = true; - var isRoot = item.parentID === 0; - if (isRoot) { - addRoot(id); - } - }, - onUpdateComponent: function (id) { - var item = getItem(id); - if (!item || !item.isMounted) { - // We may end up here as a result of setState() in componentWillUnmount(). - // In this case, ignore the element. - return; - } - item.updateCount++; - }, - onUnmountComponent: function (id) { - var item = getItem(id); - if (item) { - // We need to check if it exists. - // `item` might not exist if it is inside an error boundary, and a sibling - // error boundary child threw while mounting. Then this instance never - // got a chance to mount, but it still gets an unmounting event during - // the error boundary cleanup. - item.isMounted = false; - var isRoot = item.parentID === 0; - if (isRoot) { - removeRoot(id); - } - } - unmountedIDs.push(id); - }, - purgeUnmountedComponents: function () { - if (ReactComponentTreeHook._preventPurging) { - // Should only be used for testing. - return; - } - - for (var i = 0; i < unmountedIDs.length; i++) { - var id = unmountedIDs[i]; - purgeDeep(id); - } - unmountedIDs.length = 0; - }, - isMounted: function (id) { - var item = getItem(id); - return item ? item.isMounted : false; - }, - getCurrentStackAddendum: function (topElement) { - var info = ''; - if (topElement) { - var name = getDisplayName(topElement); - var owner = topElement._owner; - info += describeComponentFrame(name, topElement._source, owner && owner.getName()); - } - - var currentOwner = ReactCurrentOwner.current; - var id = currentOwner && currentOwner._debugID; - - info += ReactComponentTreeHook.getStackAddendumByID(id); - return info; - }, - getStackAddendumByID: function (id) { - var info = ''; - while (id) { - info += describeID(id); - id = ReactComponentTreeHook.getParentID(id); - } - return info; - }, - getChildIDs: function (id) { - var item = getItem(id); - return item ? item.childIDs : []; - }, - getDisplayName: function (id) { - var element = ReactComponentTreeHook.getElement(id); - if (!element) { - return null; - } - return getDisplayName(element); - }, - getElement: function (id) { - var item = getItem(id); - return item ? item.element : null; - }, - getOwnerID: function (id) { - var element = ReactComponentTreeHook.getElement(id); - if (!element || !element._owner) { - return null; - } - return element._owner._debugID; - }, - getParentID: function (id) { - var item = getItem(id); - return item ? item.parentID : null; - }, - getSource: function (id) { - var item = getItem(id); - var element = item ? item.element : null; - var source = element != null ? element._source : null; - return source; - }, - getText: function (id) { - var element = ReactComponentTreeHook.getElement(id); - if (typeof element === 'string') { - return element; - } else if (typeof element === 'number') { - return '' + element; - } else { - return null; - } - }, - getUpdateCount: function (id) { - var item = getItem(id); - return item ? item.updateCount : 0; - }, - - - getRootIDs: getRootIDs, - getRegisteredIDs: getItemIDs -}; - -module.exports = ReactComponentTreeHook; -},{"25":25,"29":29,"30":30,"8":8}],8:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -/** - * Keeps track of the current owner. - * - * The current owner is the component who should own any components that are - * currently being constructed. - */ -var ReactCurrentOwner = { - - /** - * @internal - * @type {ReactComponent} - */ - current: null - -}; - -module.exports = ReactCurrentOwner; -},{}],9:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactElement = _dereq_(10); - -/** - * Create a factory that creates HTML tag elements. - * - * @private - */ -var createDOMFactory = ReactElement.createFactory; -if ("development" !== 'production') { - var ReactElementValidator = _dereq_(12); - createDOMFactory = ReactElementValidator.createFactory; -} - -/** - * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes. - * This is also accessible via `React.DOM`. - * - * @public - */ -var ReactDOMFactories = { - a: createDOMFactory('a'), - abbr: createDOMFactory('abbr'), - address: createDOMFactory('address'), - area: createDOMFactory('area'), - article: createDOMFactory('article'), - aside: createDOMFactory('aside'), - audio: createDOMFactory('audio'), - b: createDOMFactory('b'), - base: createDOMFactory('base'), - bdi: createDOMFactory('bdi'), - bdo: createDOMFactory('bdo'), - big: createDOMFactory('big'), - blockquote: createDOMFactory('blockquote'), - body: createDOMFactory('body'), - br: createDOMFactory('br'), - button: createDOMFactory('button'), - canvas: createDOMFactory('canvas'), - caption: createDOMFactory('caption'), - cite: createDOMFactory('cite'), - code: createDOMFactory('code'), - col: createDOMFactory('col'), - colgroup: createDOMFactory('colgroup'), - data: createDOMFactory('data'), - datalist: createDOMFactory('datalist'), - dd: createDOMFactory('dd'), - del: createDOMFactory('del'), - details: createDOMFactory('details'), - dfn: createDOMFactory('dfn'), - dialog: createDOMFactory('dialog'), - div: createDOMFactory('div'), - dl: createDOMFactory('dl'), - dt: createDOMFactory('dt'), - em: createDOMFactory('em'), - embed: createDOMFactory('embed'), - fieldset: createDOMFactory('fieldset'), - figcaption: createDOMFactory('figcaption'), - figure: createDOMFactory('figure'), - footer: createDOMFactory('footer'), - form: createDOMFactory('form'), - h1: createDOMFactory('h1'), - h2: createDOMFactory('h2'), - h3: createDOMFactory('h3'), - h4: createDOMFactory('h4'), - h5: createDOMFactory('h5'), - h6: createDOMFactory('h6'), - head: createDOMFactory('head'), - header: createDOMFactory('header'), - hgroup: createDOMFactory('hgroup'), - hr: createDOMFactory('hr'), - html: createDOMFactory('html'), - i: createDOMFactory('i'), - iframe: createDOMFactory('iframe'), - img: createDOMFactory('img'), - input: createDOMFactory('input'), - ins: createDOMFactory('ins'), - kbd: createDOMFactory('kbd'), - keygen: createDOMFactory('keygen'), - label: createDOMFactory('label'), - legend: createDOMFactory('legend'), - li: createDOMFactory('li'), - link: createDOMFactory('link'), - main: createDOMFactory('main'), - map: createDOMFactory('map'), - mark: createDOMFactory('mark'), - menu: createDOMFactory('menu'), - menuitem: createDOMFactory('menuitem'), - meta: createDOMFactory('meta'), - meter: createDOMFactory('meter'), - nav: createDOMFactory('nav'), - noscript: createDOMFactory('noscript'), - object: createDOMFactory('object'), - ol: createDOMFactory('ol'), - optgroup: createDOMFactory('optgroup'), - option: createDOMFactory('option'), - output: createDOMFactory('output'), - p: createDOMFactory('p'), - param: createDOMFactory('param'), - picture: createDOMFactory('picture'), - pre: createDOMFactory('pre'), - progress: createDOMFactory('progress'), - q: createDOMFactory('q'), - rp: createDOMFactory('rp'), - rt: createDOMFactory('rt'), - ruby: createDOMFactory('ruby'), - s: createDOMFactory('s'), - samp: createDOMFactory('samp'), - script: createDOMFactory('script'), - section: createDOMFactory('section'), - select: createDOMFactory('select'), - small: createDOMFactory('small'), - source: createDOMFactory('source'), - span: createDOMFactory('span'), - strong: createDOMFactory('strong'), - style: createDOMFactory('style'), - sub: createDOMFactory('sub'), - summary: createDOMFactory('summary'), - sup: createDOMFactory('sup'), - table: createDOMFactory('table'), - tbody: createDOMFactory('tbody'), - td: createDOMFactory('td'), - textarea: createDOMFactory('textarea'), - tfoot: createDOMFactory('tfoot'), - th: createDOMFactory('th'), - thead: createDOMFactory('thead'), - time: createDOMFactory('time'), - title: createDOMFactory('title'), - tr: createDOMFactory('tr'), - track: createDOMFactory('track'), - u: createDOMFactory('u'), - ul: createDOMFactory('ul'), - 'var': createDOMFactory('var'), - video: createDOMFactory('video'), - wbr: createDOMFactory('wbr'), - - // SVG - circle: createDOMFactory('circle'), - clipPath: createDOMFactory('clipPath'), - defs: createDOMFactory('defs'), - ellipse: createDOMFactory('ellipse'), - g: createDOMFactory('g'), - image: createDOMFactory('image'), - line: createDOMFactory('line'), - linearGradient: createDOMFactory('linearGradient'), - mask: createDOMFactory('mask'), - path: createDOMFactory('path'), - pattern: createDOMFactory('pattern'), - polygon: createDOMFactory('polygon'), - polyline: createDOMFactory('polyline'), - radialGradient: createDOMFactory('radialGradient'), - rect: createDOMFactory('rect'), - stop: createDOMFactory('stop'), - svg: createDOMFactory('svg'), - text: createDOMFactory('text'), - tspan: createDOMFactory('tspan') -}; - -module.exports = ReactDOMFactories; -},{"10":10,"12":12}],10:[function(_dereq_,module,exports){ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = _dereq_(31); - -var ReactCurrentOwner = _dereq_(8); - -var warning = _dereq_(30); -var canDefineProperty = _dereq_(20); -var hasOwnProperty = Object.prototype.hasOwnProperty; - -var REACT_ELEMENT_TYPE = _dereq_(11); - -var RESERVED_PROPS = { - key: true, - ref: true, - __self: true, - __source: true -}; - -var specialPropKeyWarningShown, specialPropRefWarningShown; - -function hasValidRef(config) { - if ("development" !== 'production') { - if (hasOwnProperty.call(config, 'ref')) { - var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.ref !== undefined; -} - -function hasValidKey(config) { - if ("development" !== 'production') { - if (hasOwnProperty.call(config, 'key')) { - var getter = Object.getOwnPropertyDescriptor(config, 'key').get; - if (getter && getter.isReactWarning) { - return false; - } - } - } - return config.key !== undefined; -} - -function defineKeyPropWarningGetter(props, displayName) { - var warnAboutAccessingKey = function () { - if (!specialPropKeyWarningShown) { - specialPropKeyWarningShown = true; - "development" !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; - } - }; - warnAboutAccessingKey.isReactWarning = true; - Object.defineProperty(props, 'key', { - get: warnAboutAccessingKey, - configurable: true - }); -} - -function defineRefPropWarningGetter(props, displayName) { - var warnAboutAccessingRef = function () { - if (!specialPropRefWarningShown) { - specialPropRefWarningShown = true; - "development" !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; - } - }; - warnAboutAccessingRef.isReactWarning = true; - Object.defineProperty(props, 'ref', { - get: warnAboutAccessingRef, - configurable: true - }); -} - -/** - * Factory method to create a new React element. This no longer adheres to - * the class pattern, so do not use new to call it. Also, no instanceof check - * will work. Instead test $$typeof field against Symbol.for('react.element') to check - * if something is a React Element. - * - * @param {*} type - * @param {*} key - * @param {string|object} ref - * @param {*} self A *temporary* helper to detect places where `this` is - * different from the `owner` when React.createElement is called, so that we - * can warn. We want to get rid of owner and replace string `ref`s with arrow - * functions, and as long as `this` and owner are the same, there will be no - * change in behavior. - * @param {*} source An annotation object (added by a transpiler or otherwise) - * indicating filename, line number, and/or other information. - * @param {*} owner - * @param {*} props - * @internal - */ -var ReactElement = function (type, key, ref, self, source, owner, props) { - var element = { - // This tag allow us to uniquely identify this as a React Element - $$typeof: REACT_ELEMENT_TYPE, - - // Built-in properties that belong on the element - type: type, - key: key, - ref: ref, - props: props, - - // Record the component responsible for creating this element. - _owner: owner - }; - - if ("development" !== 'production') { - // The validation flag is currently mutative. We put it on - // an external backing store so that we can freeze the whole object. - // This can be replaced with a WeakMap once they are implemented in - // commonly used development environments. - element._store = {}; - - // To make comparing ReactElements easier for testing purposes, we make - // the validation flag non-enumerable (where possible, which should - // include every environment we run tests in), so the test framework - // ignores it. - if (canDefineProperty) { - Object.defineProperty(element._store, 'validated', { - configurable: false, - enumerable: false, - writable: true, - value: false - }); - // self and source are DEV only properties. - Object.defineProperty(element, '_self', { - configurable: false, - enumerable: false, - writable: false, - value: self - }); - // Two elements created in two different places should be considered - // equal for testing purposes and therefore we hide it from enumeration. - Object.defineProperty(element, '_source', { - configurable: false, - enumerable: false, - writable: false, - value: source - }); - } else { - element._store.validated = false; - element._self = self; - element._source = source; - } - if (Object.freeze) { - Object.freeze(element.props); - Object.freeze(element); - } - } - - return element; -}; - -/** - * Create and return a new ReactElement of the given type. - * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement - */ -ReactElement.createElement = function (type, config, children) { - var propName; - - // Reserved names are extracted - var props = {}; - - var key = null; - var ref = null; - var self = null; - var source = null; - - if (config != null) { - if (hasValidRef(config)) { - ref = config.ref; - } - if (hasValidKey(config)) { - key = '' + config.key; - } - - self = config.__self === undefined ? null : config.__self; - source = config.__source === undefined ? null : config.__source; - // Remaining properties are added to a new props object - for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - props[propName] = config[propName]; - } - } - } - - // Children can be more than one argument, and those are transferred onto - // the newly allocated props object. - var childrenLength = arguments.length - 2; - if (childrenLength === 1) { - props.children = children; - } else if (childrenLength > 1) { - var childArray = Array(childrenLength); - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 2]; - } - if ("development" !== 'production') { - if (Object.freeze) { - Object.freeze(childArray); - } - } - props.children = childArray; - } - - // Resolve default props - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; - } - } - } - if ("development" !== 'production') { - if (key || ref) { - if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { - var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; - if (key) { - defineKeyPropWarningGetter(props, displayName); - } - if (ref) { - defineRefPropWarningGetter(props, displayName); - } - } - } - } - return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); -}; - -/** - * Return a function that produces ReactElements of a given type. - * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory - */ -ReactElement.createFactory = function (type) { - var factory = ReactElement.createElement.bind(null, type); - // Expose the type on the factory and the prototype so that it can be - // easily accessed on elements. E.g. `.type === Foo`. - // This should not be named `constructor` since this may not be the function - // that created the element, and it may not even be a constructor. - // Legacy hook TODO: Warn if this is accessed - factory.type = type; - return factory; -}; - -ReactElement.cloneAndReplaceKey = function (oldElement, newKey) { - var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); - - return newElement; -}; - -/** - * Clone and return a new ReactElement using element as the starting point. - * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement - */ -ReactElement.cloneElement = function (element, config, children) { - var propName; - - // Original props are copied - var props = _assign({}, element.props); - - // Reserved names are extracted - var key = element.key; - var ref = element.ref; - // Self is preserved since the owner is preserved. - var self = element._self; - // Source is preserved since cloneElement is unlikely to be targeted by a - // transpiler, and the original source is probably a better indicator of the - // true owner. - var source = element._source; - - // Owner will be preserved, unless ref is overridden - var owner = element._owner; - - if (config != null) { - if (hasValidRef(config)) { - // Silently steal the ref from the parent. - ref = config.ref; - owner = ReactCurrentOwner.current; - } - if (hasValidKey(config)) { - key = '' + config.key; - } - - // Remaining properties override existing props - var defaultProps; - if (element.type && element.type.defaultProps) { - defaultProps = element.type.defaultProps; - } - for (propName in config) { - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { - if (config[propName] === undefined && defaultProps !== undefined) { - // Resolve default props - props[propName] = defaultProps[propName]; - } else { - props[propName] = config[propName]; - } - } - } - } - - // Children can be more than one argument, and those are transferred onto - // the newly allocated props object. - var childrenLength = arguments.length - 2; - if (childrenLength === 1) { - props.children = children; - } else if (childrenLength > 1) { - var childArray = Array(childrenLength); - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 2]; - } - props.children = childArray; - } - - return ReactElement(element.type, key, ref, self, source, owner, props); -}; - -/** - * Verifies the object is a ReactElement. - * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement - * @param {?object} object - * @return {boolean} True if `object` is a valid component. - * @final - */ -ReactElement.isValidElement = function (object) { - return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; -}; - -module.exports = ReactElement; -},{"11":11,"20":20,"30":30,"31":31,"8":8}],11:[function(_dereq_,module,exports){ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -// The Symbol used to tag the ReactElement type. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. - -var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; - -module.exports = REACT_ELEMENT_TYPE; -},{}],12:[function(_dereq_,module,exports){ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -/** - * ReactElementValidator provides a wrapper around a element factory - * which validates the props passed to the element. This is intended to be - * used only in DEV and could be replaced by a static type checker for languages - * that support it. - */ - -'use strict'; - -var ReactCurrentOwner = _dereq_(8); -var ReactComponentTreeHook = _dereq_(7); -var ReactElement = _dereq_(10); - -var checkReactTypeSpec = _dereq_(21); - -var canDefineProperty = _dereq_(20); -var getIteratorFn = _dereq_(22); -var warning = _dereq_(30); - -function getDeclarationErrorAddendum() { - if (ReactCurrentOwner.current) { - var name = ReactCurrentOwner.current.getName(); - if (name) { - return ' Check the render method of `' + name + '`.'; - } - } - return ''; -} - -function getSourceInfoErrorAddendum(elementProps) { - if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { - var source = elementProps.__source; - var fileName = source.fileName.replace(/^.*[\\\/]/, ''); - var lineNumber = source.lineNumber; - return ' Check your code at ' + fileName + ':' + lineNumber + '.'; - } - return ''; -} - -/** - * Warn if there's no key explicitly set on dynamic arrays of children or - * object keys are not valid. This allows us to keep track of children between - * updates. - */ -var ownerHasKeyUseWarning = {}; - -function getCurrentComponentErrorInfo(parentType) { - var info = getDeclarationErrorAddendum(); - - if (!info) { - var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; - if (parentName) { - info = ' Check the top-level render call using <' + parentName + '>.'; - } - } - return info; -} - -/** - * Warn if the element doesn't have an explicit key assigned to it. - * This element is in an array. The array could grow and shrink or be - * reordered. All children that haven't already been validated are required to - * have a "key" property assigned to it. Error statuses are cached so a warning - * will only be shown once. - * - * @internal - * @param {ReactElement} element Element that requires a key. - * @param {*} parentType element's parent's type. - */ -function validateExplicitKey(element, parentType) { - if (!element._store || element._store.validated || element.key != null) { - return; - } - element._store.validated = true; - - var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {}); - - var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); - if (memoizer[currentComponentErrorInfo]) { - return; - } - memoizer[currentComponentErrorInfo] = true; - - // Usually the current owner is the offender, but if it accepts children as a - // property, it may be the creator of the child that's responsible for - // assigning it a key. - var childOwner = ''; - if (element && element._owner && element._owner !== ReactCurrentOwner.current) { - // Give the component that originally created this child. - childOwner = ' It was passed a child from ' + element._owner.getName() + '.'; - } - - "development" !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0; -} - -/** - * Ensure that every element either is passed in a static location, in an - * array with an explicit keys property defined, or in an object literal - * with valid key property. - * - * @internal - * @param {ReactNode} node Statically passed child of any type. - * @param {*} parentType node's parent's type. - */ -function validateChildKeys(node, parentType) { - if (typeof node !== 'object') { - return; - } - if (Array.isArray(node)) { - for (var i = 0; i < node.length; i++) { - var child = node[i]; - if (ReactElement.isValidElement(child)) { - validateExplicitKey(child, parentType); - } - } - } else if (ReactElement.isValidElement(node)) { - // This element was passed in a valid location. - if (node._store) { - node._store.validated = true; - } - } else if (node) { - var iteratorFn = getIteratorFn(node); - // Entry iterators provide implicit keys. - if (iteratorFn) { - if (iteratorFn !== node.entries) { - var iterator = iteratorFn.call(node); - var step; - while (!(step = iterator.next()).done) { - if (ReactElement.isValidElement(step.value)) { - validateExplicitKey(step.value, parentType); - } - } - } - } - } -} - -/** - * Given an element, validate that its props follow the propTypes definition, - * provided by the type. - * - * @param {ReactElement} element - */ -function validatePropTypes(element) { - var componentClass = element.type; - if (typeof componentClass !== 'function') { - return; - } - var name = componentClass.displayName || componentClass.name; - if (componentClass.propTypes) { - checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null); - } - if (typeof componentClass.getDefaultProps === 'function') { - "development" !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0; - } -} - -var ReactElementValidator = { - - createElement: function (type, props, children) { - var validType = typeof type === 'string' || typeof type === 'function'; - // We warn in this case but don't throw. We expect the element creation to - // succeed and there will likely be errors in render. - if (!validType) { - if (typeof type !== 'function' && typeof type !== 'string') { - var info = ''; - if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { - info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.'; - } - - var sourceInfo = getSourceInfoErrorAddendum(props); - if (sourceInfo) { - info += sourceInfo; - } else { - info += getDeclarationErrorAddendum(); - } - - info += ReactComponentTreeHook.getCurrentStackAddendum(); - - "development" !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0; - } - } - - var element = ReactElement.createElement.apply(this, arguments); - - // The result can be nullish if a mock or a custom function is used. - // TODO: Drop this when these are no longer allowed as the type argument. - if (element == null) { - return element; - } - - // Skip key warning if the type isn't valid since our key validation logic - // doesn't expect a non-string/function type and can throw confusing errors. - // We don't want exception behavior to differ between dev and prod. - // (Rendering will throw with a helpful message and as soon as the type is - // fixed, the key warnings will appear.) - if (validType) { - for (var i = 2; i < arguments.length; i++) { - validateChildKeys(arguments[i], type); - } - } - - validatePropTypes(element); - - return element; - }, - - createFactory: function (type) { - var validatedFactory = ReactElementValidator.createElement.bind(null, type); - // Legacy hook TODO: Warn if this is accessed - validatedFactory.type = type; - - if ("development" !== 'production') { - if (canDefineProperty) { - Object.defineProperty(validatedFactory, 'type', { - enumerable: false, - get: function () { - "development" !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0; - Object.defineProperty(this, 'type', { - value: type - }); - return type; - } - }); - } - } - - return validatedFactory; - }, - - cloneElement: function (element, props, children) { - var newElement = ReactElement.cloneElement.apply(this, arguments); - for (var i = 2; i < arguments.length; i++) { - validateChildKeys(arguments[i], newElement.type); - } - validatePropTypes(newElement); - return newElement; - } - -}; - -module.exports = ReactElementValidator; -},{"10":10,"20":20,"21":21,"22":22,"30":30,"7":7,"8":8}],13:[function(_dereq_,module,exports){ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var warning = _dereq_(30); - -function warnNoop(publicInstance, callerName) { - if ("development" !== 'production') { - var constructor = publicInstance.constructor; - "development" !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; - } -} - -/** - * This is the abstract API for an update queue. - */ -var ReactNoopUpdateQueue = { - - /** - * Checks whether or not this composite component is mounted. - * @param {ReactClass} publicInstance The instance we want to test. - * @return {boolean} True if mounted, false otherwise. - * @protected - * @final - */ - isMounted: function (publicInstance) { - return false; - }, - - /** - * Enqueue a callback that will be executed after all the pending updates - * have processed. - * - * @param {ReactClass} publicInstance The instance to use as `this` context. - * @param {?function} callback Called after state is updated. - * @internal - */ - enqueueCallback: function (publicInstance, callback) {}, - - /** - * Forces an update. This should only be invoked when it is known with - * certainty that we are **not** in a DOM transaction. - * - * You may want to call this when you know that some deeper aspect of the - * component's state has changed but `setState` was not called. - * - * This will not invoke `shouldComponentUpdate`, but it will invoke - * `componentWillUpdate` and `componentDidUpdate`. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @internal - */ - enqueueForceUpdate: function (publicInstance) { - warnNoop(publicInstance, 'forceUpdate'); - }, - - /** - * Replaces all of the state. Always use this or `setState` to mutate state. - * You should treat `this.state` as immutable. - * - * There is no guarantee that `this.state` will be immediately updated, so - * accessing `this.state` after calling this method may return the old value. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} completeState Next state. - * @internal - */ - enqueueReplaceState: function (publicInstance, completeState) { - warnNoop(publicInstance, 'replaceState'); - }, - - /** - * Sets a subset of the state. This only exists because _pendingState is - * internal. This provides a merging strategy that is not available to deep - * properties which is confusing. TODO: Expose pendingState or don't use it - * during the merge. - * - * @param {ReactClass} publicInstance The instance that should rerender. - * @param {object} partialState Next partial state to be merged with state. - * @internal - */ - enqueueSetState: function (publicInstance, partialState) { - warnNoop(publicInstance, 'setState'); - } -}; - -module.exports = ReactNoopUpdateQueue; -},{"30":30}],14:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var ReactPropTypeLocationNames = {}; - -if ("development" !== 'production') { - ReactPropTypeLocationNames = { - prop: 'prop', - context: 'context', - childContext: 'child context' - }; -} - -module.exports = ReactPropTypeLocationNames; -},{}],15:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _require = _dereq_(10), - isValidElement = _require.isValidElement; - -var factory = _dereq_(33); - -module.exports = factory(isValidElement); -},{"10":10,"33":33}],16:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -module.exports = ReactPropTypesSecret; -},{}],17:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = _dereq_(31); - -var ReactComponent = _dereq_(6); -var ReactNoopUpdateQueue = _dereq_(13); - -var emptyObject = _dereq_(28); - -/** - * Base class helpers for the updating state of a component. - */ -function ReactPureComponent(props, context, updater) { - // Duplicated from ReactComponent. - this.props = props; - this.context = context; - this.refs = emptyObject; - // We initialize the default updater but the real one gets injected by the - // renderer. - this.updater = updater || ReactNoopUpdateQueue; -} - -function ComponentDummy() {} -ComponentDummy.prototype = ReactComponent.prototype; -ReactPureComponent.prototype = new ComponentDummy(); -ReactPureComponent.prototype.constructor = ReactPureComponent; -// Avoid an extra prototype jump for these methods. -_assign(ReactPureComponent.prototype, ReactComponent.prototype); -ReactPureComponent.prototype.isPureReactComponent = true; - -module.exports = ReactPureComponent; -},{"13":13,"28":28,"31":31,"6":6}],18:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = _dereq_(31); - -var React = _dereq_(3); - -// `version` will be added here by the React module. -var ReactUMDEntry = _assign(React, { - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { - ReactCurrentOwner: _dereq_(8) - } -}); - -if ("development" !== 'production') { - _assign(ReactUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { - // ReactComponentTreeHook should not be included in production. - ReactComponentTreeHook: _dereq_(7), - getNextDebugID: _dereq_(23) - }); -} - -module.exports = ReactUMDEntry; -},{"23":23,"3":3,"31":31,"7":7,"8":8}],19:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -module.exports = '15.5.4'; -},{}],20:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var canDefineProperty = false; -if ("development" !== 'production') { - try { - // $FlowFixMe https://github.com/facebook/flow/issues/285 - Object.defineProperty({}, 'x', { get: function () {} }); - canDefineProperty = true; - } catch (x) { - // IE will fail on defineProperty - } -} - -module.exports = canDefineProperty; -},{}],21:[function(_dereq_,module,exports){ -(function (process){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactPropTypeLocationNames = _dereq_(14); -var ReactPropTypesSecret = _dereq_(16); - -var invariant = _dereq_(29); -var warning = _dereq_(30); - -var ReactComponentTreeHook; - -if (typeof process !== 'undefined' && process.env && "development" === 'test') { - // Temporary hack. - // Inline requires don't work well with Jest: - // https://github.com/facebook/react/issues/7240 - // Remove the inline requires when we don't need them anymore: - // https://github.com/facebook/react/pull/7178 - ReactComponentTreeHook = _dereq_(7); -} - -var loggedTypeFailures = {}; - -/** - * Assert that the values match with the type specs. - * Error messages are memorized and will only be shown once. - * - * @param {object} typeSpecs Map of name to a ReactPropType - * @param {object} values Runtime values that need to be type-checked - * @param {string} location e.g. "prop", "context", "child context" - * @param {string} componentName Name of the component for error messages. - * @param {?object} element The React element that is being type-checked - * @param {?number} debugID The React component instance that is being type-checked - * @private - */ -function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { - for (var typeSpecName in typeSpecs) { - if (typeSpecs.hasOwnProperty(typeSpecName)) { - var error; - // Prop type validation may throw. In case they do, we don't want to - // fail the render phase where it didn't fail before. So we log it. - // After these have been cleaned up, we'll let them throw. - try { - // This is intentionally an invariant that gets caught. It's the same - // behavior as without this statement except with a better message. - !(typeof typeSpecs[typeSpecName] === 'function') ? "development" !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); - } catch (ex) { - error = ex; - } - "development" !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - // Only monitor this failure once because there tends to be a lot of the - // same error. - loggedTypeFailures[error.message] = true; - - var componentStackInfo = ''; - - if ("development" !== 'production') { - if (!ReactComponentTreeHook) { - ReactComponentTreeHook = _dereq_(7); - } - if (debugID !== null) { - componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); - } else if (element !== null) { - componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); - } - } - - "development" !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; - } - } - } -} - -module.exports = checkReactTypeSpec; -}).call(this,undefined) -},{"14":14,"16":16,"25":25,"29":29,"30":30,"7":7}],22:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -/* global Symbol */ - -var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; -var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - -/** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ -function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; - } -} - -module.exports = getIteratorFn; -},{}],23:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -'use strict'; - -var nextDebugID = 1; - -function getNextDebugID() { - return nextDebugID++; -} - -module.exports = getNextDebugID; -},{}],24:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ -'use strict'; - -var _prodInvariant = _dereq_(25); - -var ReactElement = _dereq_(10); - -var invariant = _dereq_(29); - -/** - * Returns the first child in a collection of children and verifies that there - * is only one child in the collection. - * - * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only - * - * The current implementation of this function assumes that a single child gets - * passed without a wrapper, but the purpose of this helper function is to - * abstract away the particular structure of children. - * - * @param {?object} children Child collection structure. - * @return {ReactElement} The first and only `ReactElement` contained in the - * structure. - */ -function onlyChild(children) { - !ReactElement.isValidElement(children) ? "development" !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0; - return children; -} - -module.exports = onlyChild; -},{"10":10,"25":25,"29":29}],25:[function(_dereq_,module,exports){ -/** * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ -'use strict'; - -/** - * WARNING: DO NOT manually require this module. - * This is a replacement for `invariant(...)` used by the error code system - * and will _only_ be required by the corresponding babel pass. - * It always throws. - */ - -function reactProdInvariant(code) { - var argCount = arguments.length - 1; - - var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; - - for (var argIdx = 0; argIdx < argCount; argIdx++) { - message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); - } - - message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; - - var error = new Error(message); - error.name = 'Invariant Violation'; - error.framesToPop = 1; // we don't care about reactProdInvariant's own frame - - throw error; -} - -module.exports = reactProdInvariant; -},{}],26:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ 'use strict'; -var _prodInvariant = _dereq_(25); +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.React = factory()); +}(this, (function () { 'use strict'; -var ReactCurrentOwner = _dereq_(8); -var REACT_ELEMENT_TYPE = _dereq_(11); - -var getIteratorFn = _dereq_(22); -var invariant = _dereq_(29); -var KeyEscapeUtils = _dereq_(1); -var warning = _dereq_(30); - -var SEPARATOR = '.'; -var SUBSEPARATOR = ':'; - -/** - * This is inlined from ReactElement since this file is shared between - * isomorphic and renderers. We could extract this to a - * - */ - -/** - * TODO: Test that a single child and an array with one item have the same key - * pattern. - */ - -var didWarnAboutMaps = false; - -/** - * Generate a key string that identifies a component within a set. - * - * @param {*} component A component that could contain a manual key. - * @param {number} index Index that is used if a manual key is not provided. - * @return {string} - */ -function getComponentKey(component, index) { - // Do some typechecking here since we call this blindly. We want to ensure - // that we don't block potential future ES APIs. - if (component && typeof component === 'object' && component.key != null) { - // Explicit key - return KeyEscapeUtils.escape(component.key); - } - // Implicit key determined by the index in the set - return index.toString(36); -} - -/** - * @param {?*} children Children tree container. - * @param {!string} nameSoFar Name of the key path so far. - * @param {!function} callback Callback to invoke with each child found. - * @param {?*} traverseContext Used to pass information throughout the traversal - * process. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { - var type = typeof children; - - if (type === 'undefined' || type === 'boolean') { - // All of the above are perceived as null. - children = null; - } - - if (children === null || type === 'string' || type === 'number' || - // The following is inlined from ReactElement. This means we can optimize - // some checks. React Fiber also inlines this logic for similar purposes. - type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { - callback(traverseContext, children, - // If it's the only child, treat the name as if it was wrapped in an array - // so that it's consistent if the number of children grows. - nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); - return 1; - } - - var child; - var nextName; - var subtreeCount = 0; // Count of children found in the current subtree. - var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; - - if (Array.isArray(children)) { - for (var i = 0; i < children.length; i++) { - child = children[i]; - nextName = nextNamePrefix + getComponentKey(child, i); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } else { - var iteratorFn = getIteratorFn(children); - if (iteratorFn) { - var iterator = iteratorFn.call(children); - var step; - if (iteratorFn !== children.entries) { - var ii = 0; - while (!(step = iterator.next()).done) { - child = step.value; - nextName = nextNamePrefix + getComponentKey(child, ii++); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } else { - if ("development" !== 'production') { - var mapsAsChildrenAddendum = ''; - if (ReactCurrentOwner.current) { - var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); - if (mapsAsChildrenOwnerName) { - mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; - } - } - "development" !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; - didWarnAboutMaps = true; - } - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - child = entry[1]; - nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); - } - } - } - } else if (type === 'object') { - var addendum = ''; - if ("development" !== 'production') { - addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; - if (children._isReactElement) { - addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.'; - } - if (ReactCurrentOwner.current) { - var name = ReactCurrentOwner.current.getName(); - if (name) { - addendum += ' Check the render method of `' + name + '`.'; - } - } - } - var childrenString = String(children); - !false ? "development" !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; - } - } - - return subtreeCount; -} - -/** - * Traverses children that are typically specified as `props.children`, but - * might also be specified through attributes: - * - * - `traverseAllChildren(this.props.children, ...)` - * - `traverseAllChildren(this.props.leftPanelChildren, ...)` - * - * The `traverseContext` is an optional argument that is passed through the - * entire traversal. It can be used to store accumulations or anything else that - * the callback might find relevant. - * - * @param {?*} children Children tree object. - * @param {!function} callback To invoke upon traversing each child. - * @param {?*} traverseContext Context for traversal. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildren(children, callback, traverseContext) { - if (children == null) { - return 0; - } - - return traverseAllChildrenImpl(children, '', callback, traverseContext); -} - -module.exports = traverseAllChildren; -},{"1":1,"11":11,"22":22,"25":25,"29":29,"30":30,"8":8}],27:[function(_dereq_,module,exports){ -"use strict"; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -function makeEmptyFunction(arg) { - return function () { - return arg; - }; -} - -/** - * This function accepts and discards inputs; it has no side effects. This is - * primarily useful idiomatically for overridable function endpoints which - * always need to be callable, since JS lacks a null-call idiom ala Cocoa. - */ -var emptyFunction = function emptyFunction() {}; - -emptyFunction.thatReturns = makeEmptyFunction; -emptyFunction.thatReturnsFalse = makeEmptyFunction(false); -emptyFunction.thatReturnsTrue = makeEmptyFunction(true); -emptyFunction.thatReturnsNull = makeEmptyFunction(null); -emptyFunction.thatReturnsThis = function () { - return this; -}; -emptyFunction.thatReturnsArgument = function (arg) { - return arg; -}; - -module.exports = emptyFunction; -},{}],28:[function(_dereq_,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var emptyObject = {}; - -if ("development" !== 'production') { - Object.freeze(emptyObject); -} - -module.exports = emptyObject; -},{}],29:[function(_dereq_,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var validateFormat = function validateFormat(format) {}; - -if ("development" !== 'production') { - validateFormat = function validateFormat(format) { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - }; -} - -function invariant(condition, format, a, b, c, d, e, f) { - validateFormat(format); - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error(format.replace(/%s/g, function () { - return args[argIndex++]; - })); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -} - -module.exports = invariant; -},{}],30:[function(_dereq_,module,exports){ -/** - * Copyright 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var emptyFunction = _dereq_(27); - -/** - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - -var warning = emptyFunction; - -if ("development" !== 'production') { - (function () { - var printWarning = function printWarning(format) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - warning = function warning(condition, format) { - if (format === undefined) { - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (format.indexOf('Failed Composite propType: ') === 0) { - return; // Ignore CompositeComponent proptype check. - } - - if (!condition) { - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(undefined, [format].concat(args)); - } - }; - })(); -} - -module.exports = warning; -},{"27":27}],31:[function(_dereq_,module,exports){ /* object-assign (c) Sindre Sorhus @license MIT */ -'use strict'; + /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -3380,7 +79,7 @@ function shouldUseNative() { } } -module.exports = shouldUseNative() ? Object.assign : function (target, source) { +var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; @@ -3407,22 +106,1172 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) { return to; }; -},{}],32:[function(_dereq_,module,exports){ +// TODO: this is special because it gets imported during build. + +var ReactVersion = '16.2.0'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol['for']; + +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7; +var REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8; +var REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb; + +var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = '@@iterator'; + +function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable === 'undefined') { + return null; + } + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + if (typeof maybeIterator === 'function') { + return maybeIterator; + } + return null; +} + /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * WARNING: DO NOT manually require this module. + * This is a replacement for `invariant(...)` used by the error code system + * and will _only_ be required by the corresponding babel pass. + * It always throws. */ -'use strict'; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ -if ("development" !== 'production') { - var invariant = _dereq_(29); - var warning = _dereq_(30); - var ReactPropTypesSecret = _dereq_(35); + + +var emptyObject = {}; + +{ + Object.freeze(emptyObject); +} + +var emptyObject_1 = emptyObject; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var validateFormat = function validateFormat(format) {}; + +{ + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; +} + +function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +} + +var invariant_1 = invariant; + +/** + * Forked from fbjs/warning: + * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js + * + * Only change is we use console.warn instead of console.error, + * and do nothing when 'console' is not supported. + * This really simplifies the code. + * --- + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var lowPriorityWarning = function () {}; + +{ + var printWarning = function (format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.warn(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + lowPriorityWarning = function (condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; +} + +var lowPriorityWarning$1 = lowPriorityWarning; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + +function makeEmptyFunction(arg) { + return function () { + return arg; + }; +} + +/** + * This function accepts and discards inputs; it has no side effects. This is + * primarily useful idiomatically for overridable function endpoints which + * always need to be callable, since JS lacks a null-call idiom ala Cocoa. + */ +var emptyFunction = function emptyFunction() {}; + +emptyFunction.thatReturns = makeEmptyFunction; +emptyFunction.thatReturnsFalse = makeEmptyFunction(false); +emptyFunction.thatReturnsTrue = makeEmptyFunction(true); +emptyFunction.thatReturnsNull = makeEmptyFunction(null); +emptyFunction.thatReturnsThis = function () { + return this; +}; +emptyFunction.thatReturnsArgument = function (arg) { + return arg; +}; + +var emptyFunction_1 = emptyFunction; + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + + + + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var warning = emptyFunction_1; + +{ + var printWarning$1 = function printWarning(format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning$1.apply(undefined, [format].concat(args)); + } + }; +} + +var warning_1 = warning; + +var didWarnStateUpdateForUnmountedComponent = {}; + +function warnNoop(publicInstance, callerName) { + { + var constructor = publicInstance.constructor; + var componentName = constructor && (constructor.displayName || constructor.name) || 'ReactClass'; + var warningKey = componentName + '.' + callerName; + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + warning_1(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName); + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } +} + +/** + * This is the abstract API for an update queue. + */ +var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } +}; + +/** + * Base class helpers for the updating state of a component. + */ +function Component(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject_1; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +Component.prototype.isReactComponent = {}; + +/** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ +Component.prototype.setState = function (partialState, callback) { + !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant_1(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0; + this.updater.enqueueSetState(this, partialState, callback, 'setState'); +}; + +/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ +Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); +}; + +/** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ +{ + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + var defineDeprecationWarning = function (methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function () { + lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + return undefined; + } + }); + }; + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } +} + +/** + * Base class helpers for the updating state of a component. + */ +function PureComponent(props, context, updater) { + // Duplicated from Component. + this.props = props; + this.context = context; + this.refs = emptyObject_1; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +function ComponentDummy() {} +ComponentDummy.prototype = Component.prototype; +var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); +pureComponentPrototype.constructor = PureComponent; +// Avoid an extra prototype jump for these methods. +objectAssign(pureComponentPrototype, Component.prototype); +pureComponentPrototype.isPureReactComponent = true; + +function AsyncComponent(props, context, updater) { + // Duplicated from Component. + this.props = props; + this.context = context; + this.refs = emptyObject_1; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +var asyncComponentPrototype = AsyncComponent.prototype = new ComponentDummy(); +asyncComponentPrototype.constructor = AsyncComponent; +// Avoid an extra prototype jump for these methods. +objectAssign(asyncComponentPrototype, Component.prototype); +asyncComponentPrototype.unstable_isAsyncReactComponent = true; +asyncComponentPrototype.render = function () { + return this.props.children; +}; + +/** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ +var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ + current: null +}; + +var hasOwnProperty$1 = Object.prototype.hasOwnProperty; + +var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true +}; + +var specialPropKeyWarningShown; +var specialPropRefWarningShown; + +function hasValidRef(config) { + { + if (hasOwnProperty$1.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; +} + +function hasValidKey(config) { + { + if (hasOwnProperty$1.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; +} + +function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + warning_1(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); +} + +function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + warning_1(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); +} + +/** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, no instanceof check + * will work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} key + * @param {string|object} ref + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @param {*} owner + * @param {*} props + * @internal + */ +var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allow us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + + // Record the component responsible for creating this element. + _owner: owner + }; + + { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; + + // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + // self and source are DEV only properties. + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; +}; + +/** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */ +function createElement(type, config, children) { + var propName; + + // Reserved names are extracted + var props = {}; + + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; + // Remaining properties are added to a new props object + for (propName in config) { + if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + { + if (key || ref) { + if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); +} + +/** + * Return a function that produces ReactElements of a given type. + * See https://reactjs.org/docs/react-api.html#createfactory + */ + + +function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + + return newElement; +} + +/** + * Clone and return a new ReactElement using element as the starting point. + * See https://reactjs.org/docs/react-api.html#cloneelement + */ +function cloneElement(element, config, children) { + var propName; + + // Original props are copied + var props = objectAssign({}, element.props); + + // Reserved names are extracted + var key = element.key; + var ref = element.ref; + // Self is preserved since the owner is preserved. + var self = element._self; + // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + var source = element._source; + + // Owner will be preserved, unless ref is overridden + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + // Remaining properties override existing props + var defaultProps; + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + for (propName in config) { + if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); +} + +/** + * Verifies the object is a ReactElement. + * See https://reactjs.org/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a valid component. + * @final + */ +function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} + +var ReactDebugCurrentFrame = {}; + +{ + // Component that is being worked on + ReactDebugCurrentFrame.getCurrentStack = null; + + ReactDebugCurrentFrame.getStackAddendum = function () { + var impl = ReactDebugCurrentFrame.getCurrentStack; + if (impl) { + return impl(); + } + return null; + }; +} + +var SEPARATOR = '.'; +var SUBSEPARATOR = ':'; + +/** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ +function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = ('' + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + + return '$' + escapedString; +} + +/** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + +var didWarnAboutMaps = false; + +var userProvidedKeyEscapeRegex = /\/+/g; +function escapeUserProvidedKey(text) { + return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); +} + +var POOL_SIZE = 10; +var traverseContextPool = []; +function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) { + if (traverseContextPool.length) { + var traverseContext = traverseContextPool.pop(); + traverseContext.result = mapResult; + traverseContext.keyPrefix = keyPrefix; + traverseContext.func = mapFunction; + traverseContext.context = mapContext; + traverseContext.count = 0; + return traverseContext; + } else { + return { + result: mapResult, + keyPrefix: keyPrefix, + func: mapFunction, + context: mapContext, + count: 0 + }; + } +} + +function releaseTraverseContext(traverseContext) { + traverseContext.result = null; + traverseContext.keyPrefix = null; + traverseContext.func = null; + traverseContext.context = null; + traverseContext.count = 0; + if (traverseContextPool.length < POOL_SIZE) { + traverseContextPool.push(traverseContext); + } +} + +/** + * @param {?*} children Children tree container. + * @param {!string} nameSoFar Name of the key path so far. + * @param {!function} callback Callback to invoke with each child found. + * @param {?*} traverseContext Used to pass information throughout the traversal + * process. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_CALL_TYPE: + case REACT_RETURN_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + } + } + + if (invokeCallback) { + callback(traverseContext, children, + // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows. + nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + if (typeof iteratorFn === 'function') { + { + // Warn about using Maps as children + if (iteratorFn === children.entries) { + warning_1(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum()); + didWarnAboutMaps = true; + } + } + + var iterator = iteratorFn.call(children); + var step; + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else if (type === 'object') { + var addendum = ''; + { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum(); + } + var childrenString = '' + children; + invariant_1(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum); + } + } + + return subtreeCount; +} + +/** + * Traverses children that are typically specified as `props.children`, but + * might also be specified through attributes: + * + * - `traverseAllChildren(this.props.children, ...)` + * - `traverseAllChildren(this.props.leftPanelChildren, ...)` + * + * The `traverseContext` is an optional argument that is passed through the + * entire traversal. It can be used to store accumulations or anything else that + * the callback might find relevant. + * + * @param {?*} children Children tree object. + * @param {!function} callback To invoke upon traversing each child. + * @param {?*} traverseContext Context for traversal. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); +} + +/** + * Generate a key string that identifies a component within a set. + * + * @param {*} component A component that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ +function getComponentKey(component, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (typeof component === 'object' && component !== null && component.key != null) { + // Explicit key + return escape(component.key); + } + // Implicit key determined by the index in the set + return index.toString(36); +} + +function forEachSingleChild(bookKeeping, child, name) { + var func = bookKeeping.func, + context = bookKeeping.context; + + func.call(context, child, bookKeeping.count++); +} + +/** + * Iterates through children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#react.children.foreach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ +function forEachChildren(children, forEachFunc, forEachContext) { + if (children == null) { + return children; + } + var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext); + traverseAllChildren(children, forEachSingleChild, traverseContext); + releaseTraverseContext(traverseContext); +} + +function mapSingleChildIntoContext(bookKeeping, child, childKey) { + var result = bookKeeping.result, + keyPrefix = bookKeeping.keyPrefix, + func = bookKeeping.func, + context = bookKeeping.context; + + + var mappedChild = func.call(context, child, bookKeeping.count++); + if (Array.isArray(mappedChild)) { + mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction_1.thatReturnsArgument); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + mappedChild = cloneAndReplaceKey(mappedChild, + // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); + } + result.push(mappedChild); + } +} + +function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { + var escapedPrefix = ''; + if (prefix != null) { + escapedPrefix = escapeUserProvidedKey(prefix) + '/'; + } + var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context); + traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); + releaseTraverseContext(traverseContext); +} + +/** + * Maps children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#react.children.map + * + * The provided mapFunction(child, key, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ +function mapChildren(children, func, context) { + if (children == null) { + return children; + } + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, func, context); + return result; +} + +/** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://reactjs.org/docs/react-api.html#react.children.count + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ +function countChildren(children, context) { + return traverseAllChildren(children, emptyFunction_1.thatReturnsNull, null); +} + +/** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://reactjs.org/docs/react-api.html#react.children.toarray + */ +function toArray(children) { + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction_1.thatReturnsArgument); + return result; +} + +/** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://reactjs.org/docs/react-api.html#react.children.only + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ +function onlyChild(children) { + !isValidElement(children) ? invariant_1(false, 'React.Children.only expected to receive a single React element child.') : void 0; + return children; +} + +var describeComponentFrame = function (name, source, ownerName) { + return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); +}; + +function getComponentName(fiber) { + var type = fiber.type; + + if (typeof type === 'string') { + return type; + } + if (typeof type === 'function') { + return type.displayName || type.name; + } + return null; +} + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret$1 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +var ReactPropTypesSecret_1 = ReactPropTypesSecret$1; + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +{ + var invariant$2 = invariant_1; + var warning$2 = warning_1; + var ReactPropTypesSecret = ReactPropTypesSecret_1; var loggedTypeFailures = {}; } @@ -3438,7 +1287,7 @@ if ("development" !== 'production') { * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - if ("development" !== 'production') { + { for (var typeSpecName in typeSpecs) { if (typeSpecs.hasOwnProperty(typeSpecName)) { var error; @@ -3448,12 +1297,12 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. - invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); + invariant$2(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } - warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); + warning$2(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. @@ -3461,527 +1310,375 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { var stack = getStack ? getStack() : ''; - warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); + warning$2(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); } } } } } -module.exports = checkPropTypes; +var checkPropTypes_1 = checkPropTypes; -},{"29":29,"30":30,"35":35}],33:[function(_dereq_,module,exports){ /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * ReactElementValidator provides a wrapper around a element factory + * which validates the props passed to the element. This is intended to be + * used only in DEV and could be replaced by a static type checker for languages + * that support it. */ -'use strict'; +{ + var currentlyValidatingElement = null; -// React 15.5 references this module, and assumes PropTypes are still callable in production. -// Therefore we re-export development-only version with all the PropTypes checks here. -// However if one is migrating to the `prop-types` npm library, they will go through the -// `index.js` entry point, and it will branch depending on the environment. -var factory = _dereq_(34); -module.exports = function(isValidElement) { - // It is still allowed in 15.5. - var throwOnDirectAccess = false; - return factory(isValidElement, throwOnDirectAccess); -}; + var propTypesMisspellWarningShown = false; -},{"34":34}],34:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -'use strict'; - -var emptyFunction = _dereq_(27); -var invariant = _dereq_(29); -var warning = _dereq_(30); - -var ReactPropTypesSecret = _dereq_(35); -var checkPropTypes = _dereq_(32); - -module.exports = function(isValidElement, throwOnDirectAccess) { - /* global Symbol */ - var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - - /** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; + var getDisplayName = function (element) { + if (element == null) { + return '#empty'; + } else if (typeof element === 'string' || typeof element === 'number') { + return '#text'; + } else if (typeof element.type === 'string') { + return element.type; + } else if (element.type === REACT_FRAGMENT_TYPE) { + return 'React.Fragment'; + } else { + return element.type.displayName || element.type.name || 'Unknown'; } - } - - /** - * Collection of methods that allow declaration and validation of props that are - * supplied to React components. Example usage: - * - * var Props = require('ReactPropTypes'); - * var MyArticle = React.createClass({ - * propTypes: { - * // An optional string prop named "description". - * description: Props.string, - * - * // A required enum prop named "category". - * category: Props.oneOf(['News','Photos']).isRequired, - * - * // A prop named "dialog" that requires an instance of Dialog. - * dialog: Props.instanceOf(Dialog).isRequired - * }, - * render: function() { ... } - * }); - * - * A more formal specification of how these methods are used: - * - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) - * decl := ReactPropTypes.{type}(.isRequired)? - * - * Each and every declaration produces a function with the same signature. This - * allows the creation of custom validation functions. For example: - * - * var MyLink = React.createClass({ - * propTypes: { - * // An optional string or URI prop named "href". - * href: function(props, propName, componentName) { - * var propValue = props[propName]; - * if (propValue != null && typeof propValue !== 'string' && - * !(propValue instanceof URI)) { - * return new Error( - * 'Expected a string or an URI for ' + propName + ' in ' + - * componentName - * ); - * } - * } - * }, - * render: function() {...} - * }); - * - * @internal - */ - - var ANONYMOUS = '<>'; - - // Important! - // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. - var ReactPropTypes = { - array: createPrimitiveTypeChecker('array'), - bool: createPrimitiveTypeChecker('boolean'), - func: createPrimitiveTypeChecker('function'), - number: createPrimitiveTypeChecker('number'), - object: createPrimitiveTypeChecker('object'), - string: createPrimitiveTypeChecker('string'), - symbol: createPrimitiveTypeChecker('symbol'), - - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker }; - /** - * inlined Object.is polyfill to avoid requiring consumers ship their own - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is - */ - /*eslint-disable no-self-compare*/ - function is(x, y) { - // SameValue algorithm - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; + var getStackAddendum = function () { + var stack = ''; + if (currentlyValidatingElement) { + var name = getDisplayName(currentlyValidatingElement); + var owner = currentlyValidatingElement._owner; + stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner)); + } + stack += ReactDebugCurrentFrame.getStackAddendum() || ''; + return stack; + }; + + var VALID_FRAGMENT_PROPS = new Map([['children', true], ['key', true]]); +} + +function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentName(ReactCurrentOwner.current); + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + return ''; +} + +function getSourceInfoErrorAddendum(elementProps) { + if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { + var source = elementProps.__source; + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + return ''; +} + +/** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ +var ownerHasKeyUseWarning = {}; + +function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + if (parentName) { + info = '\n\nCheck the top-level render call using <' + parentName + '>.'; + } + } + return info; +} + +/** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ +function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + element._store.validated = true; + + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + + // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + var childOwner = ''; + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.'; + } + + currentlyValidatingElement = element; + { + warning_1(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum()); + } + currentlyValidatingElement = null; +} + +/** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ +function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + if (typeof iteratorFn === 'function') { + // Entry iterators used to provide implicit keys, + // but now we print a separate warning for them later. + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } +} + +/** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ +function validatePropTypes(element) { + var componentClass = element.type; + if (typeof componentClass !== 'function') { + return; + } + var name = componentClass.displayName || componentClass.name; + var propTypes = componentClass.propTypes; + if (propTypes) { + currentlyValidatingElement = element; + checkPropTypes_1(propTypes, element.props, 'prop', name, getStackAddendum); + currentlyValidatingElement = null; + } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; + warning_1(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown'); + } + if (typeof componentClass.getDefaultProps === 'function') { + warning_1(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } +} + +/** + * Given a fragment, validate that it can only be provided with fragment props + * @param {ReactElement} fragment + */ +function validateFragmentProps(fragment) { + currentlyValidatingElement = fragment; + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = Object.keys(fragment.props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var key = _step.value; + + if (!VALID_FRAGMENT_PROPS.has(key)) { + warning_1(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum()); + break; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator['return']) { + _iterator['return'](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (fragment.ref !== null) { + warning_1(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum()); + } + + currentlyValidatingElement = null; +} + +function createElementWithValidation(type, props, children) { + var validType = typeof type === 'string' || typeof type === 'function' || typeof type === 'symbol' || typeof type === 'number'; + // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + if (!validType) { + var info = ''; + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendum(props); + if (sourceInfo) { + info += sourceInfo; } else { - // Step 6.a: NaN == NaN - return x !== x && y !== y; + info += getDeclarationErrorAddendum(); + } + + info += getStackAddendum() || ''; + + warning_1(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info); + } + + var element = createElement.apply(this, arguments); + + // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + if (element == null) { + return element; + } + + // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); } } - /*eslint-enable no-self-compare*/ - /** - * We use an Error-like object for backward compatibility as people may call - * PropTypes directly and inspect their output. However, we don't use real - * Errors anymore. We don't inspect their stack anyway, and creating them - * is prohibitively expensive if they are created too often, such as what - * happens in oneOfType() for any type before the one that matched. - */ - function PropTypeError(message) { - this.message = message; - this.stack = ''; + if (typeof type === 'symbol' && type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); } - // Make `instanceof Error` still work for returned errors. - PropTypeError.prototype = Error.prototype; - function createChainableTypeChecker(validate) { - if ("development" !== 'production') { - var manualPropTypeCallCache = {}; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; + return element; +} - if (secret !== ReactPropTypesSecret) { - if (throwOnDirectAccess) { - // New behavior only for users of `prop-types` package - invariant( - false, - 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + - 'Use `PropTypes.checkPropTypes()` to call them. ' + - 'Read more at http://fb.me/use-check-prop-types' - ); - } else if ("development" !== 'production' && typeof console !== 'undefined') { - // Old behavior for people using React.PropTypes - var cacheKey = componentName + ':' + propName; - if (!manualPropTypeCallCache[cacheKey]) { - warning( - false, - 'You are manually calling a React.PropTypes validation ' + - 'function for the `%s` prop on `%s`. This is deprecated ' + - 'and will throw in the standalone `prop-types` package. ' + - 'You may be seeing this warning due to a third-party PropTypes ' + - 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', - propFullName, - componentName - ); - manualPropTypeCallCache[cacheKey] = true; - } - } +function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + // Legacy hook TODO: Warn if this is accessed + validatedFactory.type = type; + + { + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + Object.defineProperty(this, 'type', { + value: type + }); + return type; } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); - } - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - - return chainedCheckType; + }); } - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - // `propValue` being instance of, say, date/regexp, pass the 'object' - // check, but we can offer a more precise error message here rather than - // 'of type `object`'. - var preciseType = getPreciseType(propValue); + return validatedFactory; +} - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); +function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); } + validatePropTypes(newElement); + return newElement; +} - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunction.thatReturnsNull); +var React = { + Children: { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }, + + Component: Component, + PureComponent: PureComponent, + unstable_AsyncComponent: AsyncComponent, + + Fragment: REACT_FRAGMENT_TYPE, + + createElement: createElementWithValidation, + cloneElement: cloneElementWithValidation, + createFactory: createFactoryWithValidation, + isValidElement: isValidElement, + + version: ReactVersion, + + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { + ReactCurrentOwner: ReactCurrentOwner, + // Used by renderers to avoid bundling object-assign twice in UMD bundles: + assign: objectAssign } - - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); - } - for (var i = 0; i < propValue.length; i++) { - var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i = 0; i < expectedValues.length; i++) { - if (is(propValue, expectedValues[i])) { - return null; - } - } - - var valuesString = JSON.stringify(expectedValues); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); - } - return createChainableTypeChecker(validate); - } - - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); - } - for (var key in propValue) { - if (propValue.hasOwnProperty(key)) { - var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { - return null; - } - } - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); - } - return createChainableTypeChecker(validate); - } - - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode(props[propName])) { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - for (var key in shapeTypes) { - var checker = shapeTypes[key]; - if (!checker) { - continue; - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function isNode(propValue) { - switch (typeof propValue) { - case 'number': - case 'string': - case 'undefined': - return true; - case 'boolean': - return !propValue; - case 'object': - if (Array.isArray(propValue)) { - return propValue.every(isNode); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode(step.value)) { - return false; - } - } - } else { - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - - return true; - default: - return false; - } - } - - function isSymbol(propType, propValue) { - // Native Symbol. - if (propType === 'symbol') { - return true; - } - - // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' - if (propValue['@@toStringTag'] === 'Symbol') { - return true; - } - - // Fallback for non-spec compliant Symbols which are polyfilled. - if (typeof Symbol === 'function' && propValue instanceof Symbol) { - return true; - } - - return false; - } - - // Equivalent of `typeof` but with special handling for array and regexp. - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return 'array'; - } - if (propValue instanceof RegExp) { - // Old webkits (at least until Android 4.0) return 'function' rather than - // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ - // passes PropTypes.object. - return 'object'; - } - if (isSymbol(propType, propValue)) { - return 'symbol'; - } - return propType; - } - - // This handles more types than `getPropType`. Only used for error messages. - // See `createPrimitiveTypeChecker`. - function getPreciseType(propValue) { - var propType = getPropType(propValue); - if (propType === 'object') { - if (propValue instanceof Date) { - return 'date'; - } else if (propValue instanceof RegExp) { - return 'regexp'; - } - } - return propType; - } - - // Returns class name of the object, if any. - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - - ReactPropTypes.checkPropTypes = checkPropTypes; - ReactPropTypes.PropTypes = ReactPropTypes; - - return ReactPropTypes; }; -},{"27":27,"29":29,"30":30,"32":32,"35":35}],35:[function(_dereq_,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ +{ + objectAssign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { + // These should not be included in production. + ReactDebugCurrentFrame: ReactDebugCurrentFrame, + // Shim for React DOM 16.0.0 which still destructured (but not used) this. + // TODO: remove in React 17.0. + ReactComponentTreeHook: {} + }); +} -'use strict'; -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; -module.exports = ReactPropTypesSecret; +var React$2 = Object.freeze({ + default: React +}); -},{}]},{},[18])(18) -}); \ No newline at end of file +var React$3 = ( React$2 && React ) || React$2; + +// TODO: decide on the top-level export form. +// This is hacky but makes it work with both Rollup and Jest. +var react = React$3['default'] ? React$3['default'] : React$3; + +return react; + +}))); diff --git a/browser/extensions/activity-stream/vendor/react-dom-dev.js b/browser/extensions/activity-stream/vendor/react-dom-dev.js index f40eeb6fd15f..371c3816e306 100644 --- a/browser/extensions/activity-stream/vendor/react-dom-dev.js +++ b/browser/extensions/activity-stream/vendor/react-dom-dev.js @@ -1,170 +1,2065 @@ - /** - * ReactDOM v15.5.4 - */ +/** @license React v16.2.0 + * react-dom.development.js + * + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ -;(function(f) { - // CommonJS - if (typeof exports === "object" && typeof module !== "undefined") { - module.exports = f(require('react')); +'use strict'; - // RequireJS - } else if (typeof define === "function" && define.amd) { - define(['react'], f); +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react')) : + typeof define === 'function' && define.amd ? define(['react'], factory) : + (global.ReactDOM = factory(global.React)); +}(this, (function (React) { 'use strict'; - //