зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE
This commit is contained in:
Коммит
d753cf6b80
|
@ -3762,7 +3762,7 @@ var homeButtonObserver = {
|
|||
},
|
||||
|
||||
onDragOver(aEvent) {
|
||||
if (Services.prefs.prefIsLocked("browser.startup.homepage")) {
|
||||
if (HomePage.locked) {
|
||||
return;
|
||||
}
|
||||
browserDragAndDrop.dragOver(aEvent);
|
||||
|
|
|
@ -2543,18 +2543,17 @@ BrowserGlue.prototype = {
|
|||
if (currentUIVersion < 81) {
|
||||
// Reset homepage pref for users who have it set to a default from before Firefox 4:
|
||||
// <locale>.(start|start2|start3).mozilla.(com|org)
|
||||
const HOMEPAGE_PREF = "browser.startup.homepage";
|
||||
if (Services.prefs.prefHasUserValue(HOMEPAGE_PREF)) {
|
||||
const DEFAULT = Services.prefs.getDefaultBranch(HOMEPAGE_PREF).getCharPref("");
|
||||
let value = Services.prefs.getCharPref(HOMEPAGE_PREF);
|
||||
if (HomePage.overridden) {
|
||||
const DEFAULT = HomePage.getDefault();
|
||||
let value = HomePage.get();
|
||||
let updated = value.replace(
|
||||
/https?:\/\/([\w\-]+\.)?start\d*\.mozilla\.(org|com)[^|]*/ig, DEFAULT);
|
||||
if (updated != value) {
|
||||
if (updated == DEFAULT) {
|
||||
Services.prefs.clearUserPref(HOMEPAGE_PREF);
|
||||
HomePage.reset();
|
||||
} else {
|
||||
value = updated;
|
||||
Services.prefs.setCharPref(HOMEPAGE_PREF, value);
|
||||
HomePage.set(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,23 +85,15 @@ function templateHTML(options, html) {
|
|||
if (isPrerendered) {
|
||||
scripts.unshift(`${options.baseUrl}prerendered/static/activity-stream-initial-state.js`);
|
||||
}
|
||||
const scriptTag = `
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of ${JSON.stringify(scripts, null, 2)}) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>`;
|
||||
|
||||
// Add spacing and script tags
|
||||
const scriptRender = `\n${scripts.map(script => ` <script src="${script}"></script>`).join("\n")}`;
|
||||
|
||||
return `<!doctype html>
|
||||
<html lang="${options.locale}" dir="${options.direction}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>${options.strings.newtab_page_title}</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -109,9 +101,7 @@ for (const src of ${JSON.stringify(scripts, null, 2)}) {
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root">${isPrerendered ? html : "<!-- Regular React Rendering -->"}</div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>${options.noscripts ? "" : scriptTag}
|
||||
<div id="footer-snippets-container" />${options.noscripts ? "" : scriptRender}
|
||||
</body>
|
||||
</html>
|
||||
`;
|
||||
|
|
|
@ -58,9 +58,6 @@ for (const type of [
|
|||
"HANDOFF_SEARCH_TO_AWESOMEBAR",
|
||||
"HIDE_SEARCH",
|
||||
"INIT",
|
||||
"MIGRATION_CANCEL",
|
||||
"MIGRATION_COMPLETED",
|
||||
"MIGRATION_START",
|
||||
"NEW_TAB_INIT",
|
||||
"NEW_TAB_INITIAL_STATE",
|
||||
"NEW_TAB_LOAD",
|
||||
|
|
|
@ -74,7 +74,6 @@ class _PrerenderData {
|
|||
|
||||
this.PrerenderData = new _PrerenderData({
|
||||
initialPrefs: {
|
||||
"migrationExpired": true,
|
||||
"feeds.topsites": true,
|
||||
"showSearch": true,
|
||||
"topSitesRows": 1,
|
||||
|
|
|
@ -7,12 +7,14 @@ import {LocalizationProvider} from "fluent-react";
|
|||
import {NEWTAB_DARK_THEME} from "content-src/lib/constants";
|
||||
import {OnboardingMessage} from "./templates/OnboardingMessage/OnboardingMessage";
|
||||
import React from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
import {ReturnToAMO} from "./templates/ReturnToAMO/ReturnToAMO";
|
||||
import {SnippetsTemplates} from "./templates/template-manifest";
|
||||
import {StartupOverlay} from "./templates/StartupOverlay/StartupOverlay";
|
||||
|
||||
const INCOMING_MESSAGE_NAME = "ASRouter:parent-to-child";
|
||||
const OUTGOING_MESSAGE_NAME = "ASRouter:child-to-parent";
|
||||
const TEMPLATES_BELOW_SEARCH = ["simple_below_search_snippet"];
|
||||
|
||||
export const ASRouterUtils = {
|
||||
addListener(listener) {
|
||||
|
@ -93,6 +95,9 @@ export class ASRouterUISurface extends React.PureComponent {
|
|||
this.sendImpression = this.sendImpression.bind(this);
|
||||
this.sendUserActionTelemetry = this.sendUserActionTelemetry.bind(this);
|
||||
this.state = {message: {}, bundle: {}};
|
||||
if (props.document) {
|
||||
this.portalContainer = props.document.getElementById("footer-snippets-container");
|
||||
}
|
||||
}
|
||||
|
||||
sendUserActionTelemetry(extraProps = {}) {
|
||||
|
@ -299,14 +304,22 @@ export class ASRouterUISurface extends React.PureComponent {
|
|||
render() {
|
||||
const {message, bundle} = this.state;
|
||||
if (!message.id && !bundle.template) { return null; }
|
||||
return (
|
||||
<React.Fragment>
|
||||
{this.renderPreviewBanner()}
|
||||
{this.renderFirstRunOverlay()}
|
||||
{this.renderOnboarding()}
|
||||
{this.renderSnippets()}
|
||||
</React.Fragment>
|
||||
);
|
||||
const shouldRenderBelowSearch = TEMPLATES_BELOW_SEARCH.includes(message.template);
|
||||
|
||||
return shouldRenderBelowSearch ?
|
||||
// Render special below search snippets in place;
|
||||
<div className="below-search-snippet">{this.renderSnippets()}</div> :
|
||||
// For onboarding, regular snippets etc. we should render
|
||||
// everything in our footer container.
|
||||
ReactDOM.createPortal(
|
||||
<>
|
||||
{this.renderPreviewBanner()}
|
||||
{this.renderFirstRunOverlay()}
|
||||
{this.renderOnboarding()}
|
||||
{this.renderSnippets()}
|
||||
</>,
|
||||
this.portalContainer
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,36 @@ export class SnippetBase extends React.PureComponent {
|
|||
super(props);
|
||||
this.onBlockClicked = this.onBlockClicked.bind(this);
|
||||
this.onDismissClicked = this.onDismissClicked.bind(this);
|
||||
this.setBlockButtonRef = this.setBlockButtonRef.bind(this);
|
||||
this.onBlockButtonMouseEnter = this.onBlockButtonMouseEnter.bind(this);
|
||||
this.onBlockButtonMouseLeave = this.onBlockButtonMouseLeave.bind(this);
|
||||
this.state = {blockButtonHover: false};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.blockButtonRef) {
|
||||
this.blockButtonRef.addEventListener("mouseenter", this.onBlockButtonMouseEnter);
|
||||
this.blockButtonRef.addEventListener("mouseleave", this.onBlockButtonMouseLeave);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
if (this.blockButtonRef) {
|
||||
this.blockButtonRef.removeEventListener("mouseenter", this.onBlockButtonMouseEnter);
|
||||
this.blockButtonRef.removeEventListener("mouseleave", this.onBlockButtonMouseLeave);
|
||||
}
|
||||
}
|
||||
|
||||
setBlockButtonRef(element) {
|
||||
this.blockButtonRef = element;
|
||||
}
|
||||
|
||||
onBlockButtonMouseEnter() {
|
||||
this.setState({blockButtonHover: true});
|
||||
}
|
||||
|
||||
onBlockButtonMouseLeave() {
|
||||
this.setState({blockButtonHover: false});
|
||||
}
|
||||
|
||||
onBlockClicked() {
|
||||
|
@ -41,14 +71,15 @@ export class SnippetBase extends React.PureComponent {
|
|||
|
||||
const defaultTitle = schema.properties.block_button_text.default;
|
||||
return (
|
||||
<button className="blockButton" title={this.props.content.block_button_text || defaultTitle} onClick={this.onBlockClicked} />
|
||||
<button className="blockButton" title={this.props.content.block_button_text || defaultTitle} onClick={this.onBlockClicked} ref={this.setBlockButtonRef} />
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
const {props} = this;
|
||||
const {blockButtonHover} = this.state;
|
||||
|
||||
const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : ""}`;
|
||||
const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : ""}${blockButtonHover ? " active" : ""}`;
|
||||
|
||||
return (<div className={containerClassName} style={this.props.textStyle}>
|
||||
<div className="innerWrapper">
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
.SimpleBelowSearchSnippet {
|
||||
background-color: inherit;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
position: relative;
|
||||
z-index: auto;
|
||||
|
||||
&.active {
|
||||
background: var(--newtab-element-hover-color);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.innerWrapper {
|
||||
flex-direction: column;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
|
||||
@mixin full-width-styles {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
@media (min-width: $break-point-medium) {
|
||||
@include full-width-styles;
|
||||
}
|
||||
|
||||
// Disable breakpoints for now if discovery stream is enabled.
|
||||
.ds-outer-wrapper-breakpoint-override & {
|
||||
@include full-width-styles;
|
||||
}
|
||||
}
|
||||
|
||||
.blockButton {
|
||||
display: block;
|
||||
inset-inline-end: 15px;
|
||||
opacity: 1;
|
||||
top: 20px;
|
||||
|
||||
@media (min-width: $break-point-medium) {
|
||||
top: 50%;
|
||||
}
|
||||
|
||||
// Disable breakpoints for now if discovery stream is enabled.
|
||||
.ds-outer-wrapper-breakpoint-override & {
|
||||
top: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
height: 28px;
|
||||
margin-inline-start: 12px;
|
||||
width: 28px;
|
||||
}
|
||||
|
||||
.body {
|
||||
margin: 5px 0 0;
|
||||
|
||||
@media (min-width: $break-point-medium) {
|
||||
margin: 14px 0;
|
||||
}
|
||||
|
||||
// Disable breakpoints for now if discovery stream is enabled.
|
||||
.ds-outer-wrapper-breakpoint-override & {
|
||||
margin: 14px 0;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,14 +32,14 @@ const LAYOUT_VARIANTS = {
|
|||
"dev-test-feeds": "Stress testing for slow feeds",
|
||||
};
|
||||
|
||||
export class ToggleSpocButton extends React.PureComponent {
|
||||
export class ToggleStoryButton extends React.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.handleClick = this.handleClick.bind(this);
|
||||
}
|
||||
|
||||
handleClick() {
|
||||
this.props.onClick(this.props.spoc);
|
||||
this.props.onClick(this.props.story);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -54,9 +54,9 @@ export class DiscoveryStreamAdmin extends React.PureComponent {
|
|||
super(props);
|
||||
this.onEnableToggle = this.onEnableToggle.bind(this);
|
||||
this.changeEndpointVariant = this.changeEndpointVariant.bind(this);
|
||||
this.onSpocToggle = this.onSpocToggle.bind(this);
|
||||
this.onStoryToggle = this.onStoryToggle.bind(this);
|
||||
this.state = {
|
||||
toggledSpocs: {},
|
||||
toggledStories: {},
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -101,6 +101,28 @@ export class DiscoveryStreamAdmin extends React.PureComponent {
|
|||
return isMatch;
|
||||
}
|
||||
|
||||
renderFeedData(url) {
|
||||
const {feeds} = this.props.state;
|
||||
const feed = feeds.data[url].data;
|
||||
return (
|
||||
<React.Fragment>
|
||||
<h4>Feed url: {url}</h4>
|
||||
<table><tbody>
|
||||
{feed.recommendations.map(story => this.renderStoryData(story))}
|
||||
</tbody></table>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
renderFeedsData() {
|
||||
const {feeds} = this.props.state;
|
||||
return (
|
||||
<React.Fragment>
|
||||
{Object.keys(feeds.data).map(url => this.renderFeedData(url))}
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
renderSpocs() {
|
||||
const {spocs} = this.props.state;
|
||||
let spocsData = [];
|
||||
|
@ -122,38 +144,38 @@ export class DiscoveryStreamAdmin extends React.PureComponent {
|
|||
</tbody></table>
|
||||
<h4>Spoc data</h4>
|
||||
<table><tbody>
|
||||
{spocsData.map(spoc => this.renderSpocData(spoc))}
|
||||
{spocsData.map(spoc => this.renderStoryData(spoc))}
|
||||
</tbody></table>
|
||||
<h4>Spoc frequency caps</h4>
|
||||
<table><tbody>
|
||||
{spocs.frequency_caps.map(spoc => this.renderSpocData(spoc))}
|
||||
{spocs.frequency_caps.map(spoc => this.renderStoryData(spoc))}
|
||||
</tbody></table>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
onSpocToggle(spoc) {
|
||||
const {toggledSpocs} = this.state;
|
||||
onStoryToggle(story) {
|
||||
const {toggledStories} = this.state;
|
||||
this.setState({
|
||||
toggledSpocs: {
|
||||
...toggledSpocs,
|
||||
[spoc.id]: !toggledSpocs[spoc.id],
|
||||
toggledStories: {
|
||||
...toggledStories,
|
||||
[story.id]: !toggledStories[story.id],
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
renderSpocData(spoc) {
|
||||
let spocData = "";
|
||||
if (this.state.toggledSpocs[spoc.id]) {
|
||||
spocData = JSON.stringify(spoc, null, 2);
|
||||
renderStoryData(story) {
|
||||
let storyData = "";
|
||||
if (this.state.toggledStories[story.id]) {
|
||||
storyData = JSON.stringify(story, null, 2);
|
||||
}
|
||||
return (<tr className="message-item" key={spoc.id}>
|
||||
return (<tr className="message-item" key={story.id}>
|
||||
<td className="message-id">
|
||||
<span>{spoc.id} <br /></span>
|
||||
<ToggleSpocButton spoc={spoc} onClick={this.onSpocToggle} />
|
||||
<span>{story.id} <br /></span>
|
||||
<ToggleStoryButton story={story} onClick={this.onStoryToggle} />
|
||||
</td>
|
||||
<td className="message-summary">
|
||||
<pre>{spocData}</pre>
|
||||
<pre>{storyData}</pre>
|
||||
</td>
|
||||
</tr>);
|
||||
}
|
||||
|
@ -212,6 +234,9 @@ export class DiscoveryStreamAdmin extends React.PureComponent {
|
|||
</div>
|
||||
))}
|
||||
|
||||
<h3>Feeds Data</h3>
|
||||
{this.renderFeedsData()}
|
||||
|
||||
<h3>Spocs</h3>
|
||||
{this.renderSpocs()}
|
||||
</div>);
|
||||
|
@ -780,9 +805,15 @@ export class CollapseToggle extends React.PureComponent {
|
|||
render() {
|
||||
const {props} = this;
|
||||
const {renderAdmin} = this;
|
||||
const action = (this.state.collapsed || !renderAdmin) ? "Expand" : "Collapse";
|
||||
const isCollapsed = this.state.collapsed || !renderAdmin;
|
||||
const label = `${isCollapsed ? "Expand" : "Collapse"} devtools`;
|
||||
return (<React.Fragment>
|
||||
<a href="#devtools" className="asrouter-toggle" onClick={this.renderAdmin ? this.onCollapseToggle : null}>{action} Devtools</a>
|
||||
<a href="#devtools"
|
||||
title={label}
|
||||
className={`asrouter-toggle ${isCollapsed ? "collapsed" : "expanded"}`}
|
||||
onClick={this.renderAdmin ? this.onCollapseToggle : null}>
|
||||
<span className="sr-only">{label}</span><span className="icon icon-devtools" />
|
||||
</a>
|
||||
{renderAdmin ? <ASRouterAdminInner {...props} collapsed={this.state.collapsed} /> : null}
|
||||
</React.Fragment>);
|
||||
}
|
||||
|
|
|
@ -1,15 +1,25 @@
|
|||
|
||||
.asrouter-toggle {
|
||||
background: $yellow-50;
|
||||
color: $black;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 43px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 0 0 3px 3px;
|
||||
border: 1px solid $black-10;
|
||||
border-top: 0;
|
||||
top: 15px;
|
||||
right: 48px;
|
||||
border: 0;
|
||||
background: none;
|
||||
z-index: 3000;
|
||||
border-radius: 2px;
|
||||
|
||||
.icon-devtools {
|
||||
background-image: url('chrome://browser/skin/developer.svg');
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: var(--newtab-element-hover-color);
|
||||
}
|
||||
|
||||
&.expanded {
|
||||
background: $black-20;
|
||||
}
|
||||
}
|
||||
|
||||
.asrouter-admin {
|
||||
|
|
|
@ -6,7 +6,6 @@ import {ConfirmDialog} from "content-src/components/ConfirmDialog/ConfirmDialog"
|
|||
import {connect} from "react-redux";
|
||||
import {DiscoveryStreamBase} from "content-src/components/DiscoveryStreamBase/DiscoveryStreamBase";
|
||||
import {ErrorBoundary} from "content-src/components/ErrorBoundary/ErrorBoundary";
|
||||
import {ManualMigration} from "content-src/components/ManualMigration/ManualMigration";
|
||||
import {PrerenderData} from "common/PrerenderData.jsm";
|
||||
import React from "react";
|
||||
import {Search} from "content-src/components/Search/Search";
|
||||
|
@ -159,12 +158,8 @@ export class BaseContent extends React.PureComponent {
|
|||
</ErrorBoundary>
|
||||
</div>
|
||||
}
|
||||
<ASRouterUISurface dispatch={this.props.dispatch} />
|
||||
<div className={`body-wrapper${(initialized ? " on" : "")}`}>
|
||||
{!isDiscoveryStream && !prefs.migrationExpired &&
|
||||
<div className="non-collapsible-section">
|
||||
<ManualMigration />
|
||||
</div>
|
||||
}
|
||||
{isDiscoveryStream ? (
|
||||
<ErrorBoundary className="borderless-error">
|
||||
<DiscoveryStreamBase />
|
||||
|
@ -174,7 +169,6 @@ export class BaseContent extends React.PureComponent {
|
|||
<ConfirmDialog />
|
||||
</main>
|
||||
</div>
|
||||
<ASRouterUISurface dispatch={this.props.dispatch} />
|
||||
</div>);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
import {actionCreators as ac, actionTypes as at} from "common/Actions.jsm";
|
||||
import {connect} from "react-redux";
|
||||
import {FormattedMessage} from "react-intl";
|
||||
import React from "react";
|
||||
|
||||
/**
|
||||
* Manual migration component used to start the profile import wizard.
|
||||
* Message is presented temporarily and will go away if:
|
||||
* 1. User clicks "No Thanks"
|
||||
* 2. User completed the data import
|
||||
* 3. After 3 active days
|
||||
* 4. User clicks "Cancel" on the import wizard (currently not implemented).
|
||||
*/
|
||||
export class _ManualMigration extends React.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.onLaunchTour = this.onLaunchTour.bind(this);
|
||||
this.onCancelTour = this.onCancelTour.bind(this);
|
||||
}
|
||||
|
||||
onLaunchTour() {
|
||||
this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));
|
||||
this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));
|
||||
}
|
||||
|
||||
onCancelTour() {
|
||||
this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));
|
||||
this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));
|
||||
}
|
||||
|
||||
render() {
|
||||
return (<div className="manual-migration-container">
|
||||
<p>
|
||||
<span className="icon icon-import" />
|
||||
<FormattedMessage id="manual_migration_explanation2" />
|
||||
</p>
|
||||
<div className="manual-migration-actions actions">
|
||||
<button className="dismiss" onClick={this.onCancelTour}>
|
||||
<FormattedMessage id="manual_migration_cancel_button" />
|
||||
</button>
|
||||
<button onClick={this.onLaunchTour}>
|
||||
<FormattedMessage id="manual_migration_import_button" />
|
||||
</button>
|
||||
</div>
|
||||
</div>);
|
||||
}
|
||||
}
|
||||
|
||||
export const ManualMigration = connect()(_ManualMigration);
|
|
@ -1,53 +0,0 @@
|
|||
.manual-migration-container {
|
||||
color: var(--newtab-text-conditional-color);
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
margin-bottom: $section-spacing;
|
||||
text-align: center;
|
||||
|
||||
@media (min-width: $break-point-medium) {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
@media (min-width: $break-point-medium) {
|
||||
align-self: center;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
display: none;
|
||||
@media (min-width: $break-point-medium) {
|
||||
align-self: center;
|
||||
display: block;
|
||||
fill: var(--newtab-icon-secondary-color);
|
||||
flex-shrink: 0;
|
||||
margin-inline-end: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.manual-migration-actions {
|
||||
border: 0;
|
||||
display: block;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
@media (min-width: $break-point-medium) {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
align-self: center;
|
||||
height: 26px;
|
||||
margin: 0;
|
||||
margin-inline-start: 20px;
|
||||
padding: 0 12px;
|
||||
}
|
||||
}
|
|
@ -8,12 +8,6 @@ $glyph-forward: url('chrome://browser/skin/forward.svg');
|
|||
.search-wrapper {
|
||||
padding: 34px 0 64px;
|
||||
|
||||
@media (max-height: 700px) {
|
||||
& {
|
||||
padding: 0 0 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.only-search & {
|
||||
padding: 0 0 64px;
|
||||
}
|
||||
|
@ -137,6 +131,44 @@ $glyph-forward: url('chrome://browser/skin/forward.svg');
|
|||
}
|
||||
}
|
||||
|
||||
.below-search-snippet {
|
||||
margin: 0 auto;
|
||||
width: $searchbar-width-small;
|
||||
|
||||
@media (min-width: $break-point-medium) {
|
||||
width: $searchbar-width-medium;
|
||||
}
|
||||
|
||||
@media (min-width: $break-point-large) {
|
||||
width: $searchbar-width-large;
|
||||
}
|
||||
|
||||
// Disable breakpoints for now if discovery stream is enabled.
|
||||
.ds-outer-wrapper-breakpoint-override & {
|
||||
width: $searchbar-width-large;
|
||||
}
|
||||
}
|
||||
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
// If search is enabled, we need to invade its large bottom padding.
|
||||
margin-top: -50px;
|
||||
}
|
||||
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px;
|
||||
}
|
||||
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
// In shorter windows, search doesn't have such a large padding.
|
||||
margin-top: -16px;
|
||||
}
|
||||
|
||||
.below-search-snippet {
|
||||
min-height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.search-handoff-button {
|
||||
background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center no-repeat;
|
||||
background-size: $search-icon-size;
|
||||
|
|
|
@ -128,11 +128,6 @@ input {
|
|||
}
|
||||
}
|
||||
|
||||
// Make sure snippets show up above other UI elements
|
||||
#snippets-container { // sass-lint:disable-line no-ids
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
// Components
|
||||
@import '../components/Base/Base';
|
||||
@import '../components/ErrorBoundary/ErrorBoundary';
|
||||
|
@ -143,7 +138,6 @@ input {
|
|||
@import '../components/ContextMenu/ContextMenu';
|
||||
@import '../components/ConfirmDialog/ConfirmDialog';
|
||||
@import '../components/Card/Card';
|
||||
@import '../components/ManualMigration/ManualMigration';
|
||||
@import '../components/CollapsibleSection/CollapsibleSection';
|
||||
@import '../components/ASRouterAdmin/ASRouterAdmin';
|
||||
@import '../components/PocketLoggedInCta/PocketLoggedInCta';
|
||||
|
@ -170,6 +164,7 @@ input {
|
|||
@import '../asrouter/components/SnippetBase/SnippetBase';
|
||||
@import '../asrouter/components/ModalOverlay/ModalOverlay';
|
||||
@import '../asrouter/templates/ReturnToAMO/ReturnToAMO';
|
||||
@import '../asrouter/templates/SimpleBelowSearchSnippet/SimpleBelowSearchSnippet';
|
||||
@import '../asrouter/templates/SimpleSnippet/SimpleSnippet';
|
||||
@import '../asrouter/templates/SubmitFormSnippet/SubmitFormSnippet';
|
||||
@import '../asrouter/templates/OnboardingMessage/OnboardingMessage';
|
||||
|
|
|
@ -54,10 +54,6 @@
|
|||
background-image: url('#{$image-path}glyph-info-16.svg');
|
||||
}
|
||||
|
||||
&.icon-import {
|
||||
background-image: url('#{$image-path}glyph-import-16.svg');
|
||||
}
|
||||
|
||||
&.icon-new-window {
|
||||
@include flip-icon;
|
||||
background-image: url('#{$image-path}glyph-newWindow-16.svg');
|
||||
|
|
|
@ -148,8 +148,6 @@ body {
|
|||
background-image: url("../data/content/assets/glyph-dismiss-16.svg"); }
|
||||
.icon.icon-info {
|
||||
background-image: url("../data/content/assets/glyph-info-16.svg"); }
|
||||
.icon.icon-import {
|
||||
background-image: url("../data/content/assets/glyph-import-16.svg"); }
|
||||
.icon.icon-new-window {
|
||||
background-image: url("../data/content/assets/glyph-newWindow-16.svg"); }
|
||||
.icon.icon-new-window:dir(rtl) {
|
||||
|
@ -326,9 +324,6 @@ a {
|
|||
input[type='text'], input[type='search'] {
|
||||
border-radius: 3px; }
|
||||
|
||||
#snippets-container {
|
||||
z-index: 1; }
|
||||
|
||||
.outer-wrapper {
|
||||
color: var(--newtab-text-primary-color);
|
||||
display: flex;
|
||||
|
@ -982,9 +977,6 @@ main {
|
|||
|
||||
.search-wrapper {
|
||||
padding: 34px 0 64px; }
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px; } }
|
||||
.only-search .search-wrapper {
|
||||
padding: 0 0 64px; }
|
||||
.search-wrapper .logo-and-wordmark {
|
||||
|
@ -1068,6 +1060,29 @@ main {
|
|||
.search-wrapper .search-button:dir(rtl) {
|
||||
transform: scaleX(-1); }
|
||||
|
||||
.below-search-snippet {
|
||||
margin: 0 auto;
|
||||
width: 224px; }
|
||||
@media (min-width: 610px) {
|
||||
.below-search-snippet {
|
||||
width: 480px; } }
|
||||
@media (min-width: 866px) {
|
||||
.below-search-snippet {
|
||||
width: 736px; } }
|
||||
.ds-outer-wrapper-breakpoint-override .below-search-snippet {
|
||||
width: 736px; }
|
||||
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
margin-top: -50px; }
|
||||
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px; }
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
margin-top: -16px; }
|
||||
.below-search-snippet {
|
||||
min-height: 0; } }
|
||||
|
||||
.search-handoff-button {
|
||||
background: var(--newtab-textbox-background-color) var(--newtab-search-icon) 12px center no-repeat;
|
||||
background-size: 24px;
|
||||
|
@ -1515,50 +1530,6 @@ main {
|
|||
.compact-cards .hide-for-narrow {
|
||||
display: none; } }
|
||||
|
||||
.manual-migration-container {
|
||||
color: var(--newtab-text-conditional-color);
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
margin-bottom: 20px;
|
||||
text-align: center; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
text-align: left; } }
|
||||
.manual-migration-container p {
|
||||
margin: 0; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container p {
|
||||
align-self: center;
|
||||
display: flex;
|
||||
justify-content: space-between; } }
|
||||
.manual-migration-container .icon {
|
||||
display: none; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container .icon {
|
||||
align-self: center;
|
||||
display: block;
|
||||
fill: var(--newtab-icon-secondary-color);
|
||||
flex-shrink: 0;
|
||||
margin-inline-end: 6px; } }
|
||||
|
||||
.manual-migration-actions {
|
||||
border: 0;
|
||||
display: block;
|
||||
flex-wrap: nowrap; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-actions {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0; } }
|
||||
.manual-migration-actions button {
|
||||
align-self: center;
|
||||
height: 26px;
|
||||
margin: 0;
|
||||
margin-inline-start: 20px;
|
||||
padding: 0 12px; }
|
||||
|
||||
.collapsible-section {
|
||||
padding: 10px 25px;
|
||||
transition-delay: 100ms;
|
||||
|
@ -1649,16 +1620,20 @@ main {
|
|||
display: none; } }
|
||||
|
||||
.asrouter-toggle {
|
||||
background: #FFE900;
|
||||
color: #000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 43px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 0 0 3px 3px;
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-top: 0;
|
||||
z-index: 3000; }
|
||||
top: 15px;
|
||||
right: 48px;
|
||||
border: 0;
|
||||
background: none;
|
||||
z-index: 3000;
|
||||
border-radius: 2px; }
|
||||
.asrouter-toggle .icon-devtools {
|
||||
background-image: url("chrome://browser/skin/developer.svg");
|
||||
padding: 15px; }
|
||||
.asrouter-toggle:hover {
|
||||
background: var(--newtab-element-hover-color); }
|
||||
.asrouter-toggle.expanded {
|
||||
background: rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.asrouter-admin {
|
||||
position: fixed;
|
||||
|
@ -3006,6 +2981,53 @@ main {
|
|||
fill: #FFF;
|
||||
vertical-align: sub; }
|
||||
|
||||
.SimpleBelowSearchSnippet {
|
||||
background-color: inherit;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
position: relative;
|
||||
z-index: auto; }
|
||||
.SimpleBelowSearchSnippet.active {
|
||||
background: var(--newtab-element-hover-color);
|
||||
border-radius: 4px; }
|
||||
.SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: column;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
width: 100%; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit; }
|
||||
.SimpleBelowSearchSnippet .blockButton {
|
||||
display: block;
|
||||
inset-inline-end: 15px;
|
||||
opacity: 1;
|
||||
top: 20px; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .blockButton {
|
||||
top: 50%; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .blockButton {
|
||||
top: 50%; }
|
||||
.SimpleBelowSearchSnippet .icon {
|
||||
height: 28px;
|
||||
margin-inline-start: 12px;
|
||||
width: 28px; }
|
||||
.SimpleBelowSearchSnippet .body {
|
||||
margin: 5px 0 0; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .body {
|
||||
margin: 14px 0; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .body {
|
||||
margin: 14px 0; }
|
||||
|
||||
.SimpleSnippet.tall {
|
||||
padding: 27px 0; }
|
||||
|
||||
|
|
|
@ -151,8 +151,6 @@ body {
|
|||
background-image: url("../data/content/assets/glyph-dismiss-16.svg"); }
|
||||
.icon.icon-info {
|
||||
background-image: url("../data/content/assets/glyph-info-16.svg"); }
|
||||
.icon.icon-import {
|
||||
background-image: url("../data/content/assets/glyph-import-16.svg"); }
|
||||
.icon.icon-new-window {
|
||||
background-image: url("../data/content/assets/glyph-newWindow-16.svg"); }
|
||||
.icon.icon-new-window:dir(rtl) {
|
||||
|
@ -329,9 +327,6 @@ a {
|
|||
input[type='text'], input[type='search'] {
|
||||
border-radius: 3px; }
|
||||
|
||||
#snippets-container {
|
||||
z-index: 1; }
|
||||
|
||||
.outer-wrapper {
|
||||
color: var(--newtab-text-primary-color);
|
||||
display: flex;
|
||||
|
@ -985,9 +980,6 @@ main {
|
|||
|
||||
.search-wrapper {
|
||||
padding: 34px 0 64px; }
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px; } }
|
||||
.only-search .search-wrapper {
|
||||
padding: 0 0 64px; }
|
||||
.search-wrapper .logo-and-wordmark {
|
||||
|
@ -1071,6 +1063,29 @@ main {
|
|||
.search-wrapper .search-button:dir(rtl) {
|
||||
transform: scaleX(-1); }
|
||||
|
||||
.below-search-snippet {
|
||||
margin: 0 auto;
|
||||
width: 224px; }
|
||||
@media (min-width: 610px) {
|
||||
.below-search-snippet {
|
||||
width: 480px; } }
|
||||
@media (min-width: 866px) {
|
||||
.below-search-snippet {
|
||||
width: 736px; } }
|
||||
.ds-outer-wrapper-breakpoint-override .below-search-snippet {
|
||||
width: 736px; }
|
||||
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
margin-top: -50px; }
|
||||
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px; }
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
margin-top: -16px; }
|
||||
.below-search-snippet {
|
||||
min-height: 0; } }
|
||||
|
||||
.search-handoff-button {
|
||||
background: var(--newtab-textbox-background-color) var(--newtab-search-icon) 12px center no-repeat;
|
||||
background-size: 24px;
|
||||
|
@ -1518,50 +1533,6 @@ main {
|
|||
.compact-cards .hide-for-narrow {
|
||||
display: none; } }
|
||||
|
||||
.manual-migration-container {
|
||||
color: var(--newtab-text-conditional-color);
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
margin-bottom: 20px;
|
||||
text-align: center; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
text-align: left; } }
|
||||
.manual-migration-container p {
|
||||
margin: 0; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container p {
|
||||
align-self: center;
|
||||
display: flex;
|
||||
justify-content: space-between; } }
|
||||
.manual-migration-container .icon {
|
||||
display: none; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container .icon {
|
||||
align-self: center;
|
||||
display: block;
|
||||
fill: var(--newtab-icon-secondary-color);
|
||||
flex-shrink: 0;
|
||||
margin-inline-end: 6px; } }
|
||||
|
||||
.manual-migration-actions {
|
||||
border: 0;
|
||||
display: block;
|
||||
flex-wrap: nowrap; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-actions {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0; } }
|
||||
.manual-migration-actions button {
|
||||
align-self: center;
|
||||
height: 26px;
|
||||
margin: 0;
|
||||
margin-inline-start: 20px;
|
||||
padding: 0 12px; }
|
||||
|
||||
.collapsible-section {
|
||||
padding: 10px 25px;
|
||||
transition-delay: 100ms;
|
||||
|
@ -1652,16 +1623,20 @@ main {
|
|||
display: none; } }
|
||||
|
||||
.asrouter-toggle {
|
||||
background: #FFE900;
|
||||
color: #000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 43px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 0 0 3px 3px;
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-top: 0;
|
||||
z-index: 3000; }
|
||||
top: 15px;
|
||||
right: 48px;
|
||||
border: 0;
|
||||
background: none;
|
||||
z-index: 3000;
|
||||
border-radius: 2px; }
|
||||
.asrouter-toggle .icon-devtools {
|
||||
background-image: url("chrome://browser/skin/developer.svg");
|
||||
padding: 15px; }
|
||||
.asrouter-toggle:hover {
|
||||
background: var(--newtab-element-hover-color); }
|
||||
.asrouter-toggle.expanded {
|
||||
background: rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.asrouter-admin {
|
||||
position: fixed;
|
||||
|
@ -3009,6 +2984,53 @@ main {
|
|||
fill: #FFF;
|
||||
vertical-align: sub; }
|
||||
|
||||
.SimpleBelowSearchSnippet {
|
||||
background-color: inherit;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
position: relative;
|
||||
z-index: auto; }
|
||||
.SimpleBelowSearchSnippet.active {
|
||||
background: var(--newtab-element-hover-color);
|
||||
border-radius: 4px; }
|
||||
.SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: column;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
width: 100%; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit; }
|
||||
.SimpleBelowSearchSnippet .blockButton {
|
||||
display: block;
|
||||
inset-inline-end: 15px;
|
||||
opacity: 1;
|
||||
top: 20px; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .blockButton {
|
||||
top: 50%; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .blockButton {
|
||||
top: 50%; }
|
||||
.SimpleBelowSearchSnippet .icon {
|
||||
height: 28px;
|
||||
margin-inline-start: 12px;
|
||||
width: 28px; }
|
||||
.SimpleBelowSearchSnippet .body {
|
||||
margin: 5px 0 0; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .body {
|
||||
margin: 14px 0; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .body {
|
||||
margin: 14px 0; }
|
||||
|
||||
.SimpleSnippet.tall {
|
||||
padding: 27px 0; }
|
||||
|
||||
|
|
|
@ -148,8 +148,6 @@ body {
|
|||
background-image: url("../data/content/assets/glyph-dismiss-16.svg"); }
|
||||
.icon.icon-info {
|
||||
background-image: url("../data/content/assets/glyph-info-16.svg"); }
|
||||
.icon.icon-import {
|
||||
background-image: url("../data/content/assets/glyph-import-16.svg"); }
|
||||
.icon.icon-new-window {
|
||||
background-image: url("../data/content/assets/glyph-newWindow-16.svg"); }
|
||||
.icon.icon-new-window:dir(rtl) {
|
||||
|
@ -326,9 +324,6 @@ a {
|
|||
input[type='text'], input[type='search'] {
|
||||
border-radius: 3px; }
|
||||
|
||||
#snippets-container {
|
||||
z-index: 1; }
|
||||
|
||||
.outer-wrapper {
|
||||
color: var(--newtab-text-primary-color);
|
||||
display: flex;
|
||||
|
@ -982,9 +977,6 @@ main {
|
|||
|
||||
.search-wrapper {
|
||||
padding: 34px 0 64px; }
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px; } }
|
||||
.only-search .search-wrapper {
|
||||
padding: 0 0 64px; }
|
||||
.search-wrapper .logo-and-wordmark {
|
||||
|
@ -1068,6 +1060,29 @@ main {
|
|||
.search-wrapper .search-button:dir(rtl) {
|
||||
transform: scaleX(-1); }
|
||||
|
||||
.below-search-snippet {
|
||||
margin: 0 auto;
|
||||
width: 224px; }
|
||||
@media (min-width: 610px) {
|
||||
.below-search-snippet {
|
||||
width: 480px; } }
|
||||
@media (min-width: 866px) {
|
||||
.below-search-snippet {
|
||||
width: 736px; } }
|
||||
.ds-outer-wrapper-breakpoint-override .below-search-snippet {
|
||||
width: 736px; }
|
||||
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
margin-top: -50px; }
|
||||
|
||||
@media (max-height: 700px) {
|
||||
.search-wrapper {
|
||||
padding: 0 0 30px; }
|
||||
.non-collapsible-section + .below-search-snippet {
|
||||
margin-top: -16px; }
|
||||
.below-search-snippet {
|
||||
min-height: 0; } }
|
||||
|
||||
.search-handoff-button {
|
||||
background: var(--newtab-textbox-background-color) var(--newtab-search-icon) 12px center no-repeat;
|
||||
background-size: 24px;
|
||||
|
@ -1515,50 +1530,6 @@ main {
|
|||
.compact-cards .hide-for-narrow {
|
||||
display: none; } }
|
||||
|
||||
.manual-migration-container {
|
||||
color: var(--newtab-text-conditional-color);
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
margin-bottom: 20px;
|
||||
text-align: center; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
text-align: left; } }
|
||||
.manual-migration-container p {
|
||||
margin: 0; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container p {
|
||||
align-self: center;
|
||||
display: flex;
|
||||
justify-content: space-between; } }
|
||||
.manual-migration-container .icon {
|
||||
display: none; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-container .icon {
|
||||
align-self: center;
|
||||
display: block;
|
||||
fill: var(--newtab-icon-secondary-color);
|
||||
flex-shrink: 0;
|
||||
margin-inline-end: 6px; } }
|
||||
|
||||
.manual-migration-actions {
|
||||
border: 0;
|
||||
display: block;
|
||||
flex-wrap: nowrap; }
|
||||
@media (min-width: 610px) {
|
||||
.manual-migration-actions {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0; } }
|
||||
.manual-migration-actions button {
|
||||
align-self: center;
|
||||
height: 26px;
|
||||
margin: 0;
|
||||
margin-inline-start: 20px;
|
||||
padding: 0 12px; }
|
||||
|
||||
.collapsible-section {
|
||||
padding: 10px 25px;
|
||||
transition-delay: 100ms;
|
||||
|
@ -1649,16 +1620,20 @@ main {
|
|||
display: none; } }
|
||||
|
||||
.asrouter-toggle {
|
||||
background: #FFE900;
|
||||
color: #000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 43px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 0 0 3px 3px;
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-top: 0;
|
||||
z-index: 3000; }
|
||||
top: 15px;
|
||||
right: 48px;
|
||||
border: 0;
|
||||
background: none;
|
||||
z-index: 3000;
|
||||
border-radius: 2px; }
|
||||
.asrouter-toggle .icon-devtools {
|
||||
background-image: url("chrome://browser/skin/developer.svg");
|
||||
padding: 15px; }
|
||||
.asrouter-toggle:hover {
|
||||
background: var(--newtab-element-hover-color); }
|
||||
.asrouter-toggle.expanded {
|
||||
background: rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.asrouter-admin {
|
||||
position: fixed;
|
||||
|
@ -3006,6 +2981,53 @@ main {
|
|||
fill: #FFF;
|
||||
vertical-align: sub; }
|
||||
|
||||
.SimpleBelowSearchSnippet {
|
||||
background-color: inherit;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
position: relative;
|
||||
z-index: auto; }
|
||||
.SimpleBelowSearchSnippet.active {
|
||||
background: var(--newtab-element-hover-color);
|
||||
border-radius: 4px; }
|
||||
.SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: column;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
width: 100%; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .innerWrapper {
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
padding-inline-end: 36px;
|
||||
text-align: inherit; }
|
||||
.SimpleBelowSearchSnippet .blockButton {
|
||||
display: block;
|
||||
inset-inline-end: 15px;
|
||||
opacity: 1;
|
||||
top: 20px; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .blockButton {
|
||||
top: 50%; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .blockButton {
|
||||
top: 50%; }
|
||||
.SimpleBelowSearchSnippet .icon {
|
||||
height: 28px;
|
||||
margin-inline-start: 12px;
|
||||
width: 28px; }
|
||||
.SimpleBelowSearchSnippet .body {
|
||||
margin: 5px 0 0; }
|
||||
@media (min-width: 610px) {
|
||||
.SimpleBelowSearchSnippet .body {
|
||||
margin: 14px 0; } }
|
||||
.ds-outer-wrapper-breakpoint-override .SimpleBelowSearchSnippet .body {
|
||||
margin: 14px 0; }
|
||||
|
||||
.SimpleSnippet.tall {
|
||||
padding: 27px 0; }
|
||||
|
||||
|
|
|
@ -92,15 +92,15 @@
|
|||
__webpack_require__.r(__webpack_exports__);
|
||||
/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var content_src_components_Base_Base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
|
||||
/* harmony import */ var content_src_lib_detect_user_session_start__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51);
|
||||
/* harmony import */ var content_src_lib_detect_user_session_start__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(50);
|
||||
/* harmony import */ var content_src_lib_init_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28);
|
||||
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);
|
||||
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_6__);
|
||||
/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(56);
|
||||
/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(55);
|
||||
|
||||
|
||||
|
||||
|
@ -197,7 +197,7 @@ const globalImportContext = typeof Window === "undefined" ? BACKGROUND_PROCESS :
|
|||
// }
|
||||
const actionTypes = {};
|
||||
|
||||
for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_INITIALIZED", "AS_ROUTER_PREF_CHANGED", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DISCOVERY_STREAM_CONFIG_CHANGE", "DISCOVERY_STREAM_CONFIG_SETUP", "DISCOVERY_STREAM_CONFIG_SET_VALUE", "DISCOVERY_STREAM_FEEDS_UPDATE", "DISCOVERY_STREAM_IMPRESSION_STATS", "DISCOVERY_STREAM_LAYOUT_RESET", "DISCOVERY_STREAM_LAYOUT_UPDATE", "DISCOVERY_STREAM_LOADED_CONTENT", "DISCOVERY_STREAM_OPT_OUT", "DISCOVERY_STREAM_SPOCS_CAPS", "DISCOVERY_STREAM_SPOCS_ENDPOINT", "DISCOVERY_STREAM_SPOCS_UPDATE", "DISCOVERY_STREAM_SPOC_IMPRESSION", "DOWNLOAD_CHANGED", "FAKE_FOCUS_SEARCH", "FILL_SEARCH_TERM", "HANDOFF_SEARCH_TO_AWESOMEBAR", "HIDE_SEARCH", "INIT", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "POCKET_CTA", "POCKET_LINK_DELETED_OR_ARCHIVED", "POCKET_LOGGED_IN", "POCKET_WAITING_FOR_SPOC", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SHOW_SEARCH", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_PREVIEW_MODE", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_PINNED_SEARCH_SHORTCUTS", "UPDATE_SEARCH_SHORTCUTS", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
|
||||
for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_INITIALIZED", "AS_ROUTER_PREF_CHANGED", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DISCOVERY_STREAM_CONFIG_CHANGE", "DISCOVERY_STREAM_CONFIG_SETUP", "DISCOVERY_STREAM_CONFIG_SET_VALUE", "DISCOVERY_STREAM_FEEDS_UPDATE", "DISCOVERY_STREAM_IMPRESSION_STATS", "DISCOVERY_STREAM_LAYOUT_RESET", "DISCOVERY_STREAM_LAYOUT_UPDATE", "DISCOVERY_STREAM_LOADED_CONTENT", "DISCOVERY_STREAM_OPT_OUT", "DISCOVERY_STREAM_SPOCS_CAPS", "DISCOVERY_STREAM_SPOCS_ENDPOINT", "DISCOVERY_STREAM_SPOCS_UPDATE", "DISCOVERY_STREAM_SPOC_IMPRESSION", "DOWNLOAD_CHANGED", "FAKE_FOCUS_SEARCH", "FILL_SEARCH_TERM", "HANDOFF_SEARCH_TO_AWESOMEBAR", "HIDE_SEARCH", "INIT", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "POCKET_CTA", "POCKET_LINK_DELETED_OR_ARCHIVED", "POCKET_LOGGED_IN", "POCKET_WAITING_FOR_SPOC", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SHOW_SEARCH", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_PREVIEW_MODE", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_PINNED_SEARCH_SHORTCUTS", "UPDATE_SEARCH_SHORTCUTS", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
|
||||
actionTypes[type] = type;
|
||||
} // These are acceptable actions for AS Router messages to have. They can show up
|
||||
// as call-to-action buttons in snippets, onboarding tour, etc.
|
||||
|
@ -550,17 +550,16 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var content_src_components_ASRouterAdmin_ASRouterAdmin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
|
||||
/* harmony import */ var _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
|
||||
/* harmony import */ var content_src_components_ConfirmDialog_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(27);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
|
||||
/* harmony import */ var content_src_components_ConfirmDialog_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(28);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var content_src_components_DiscoveryStreamBase_DiscoveryStreamBase__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(52);
|
||||
/* harmony import */ var content_src_components_DiscoveryStreamBase_DiscoveryStreamBase__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(51);
|
||||
/* harmony import */ var content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(34);
|
||||
/* harmony import */ var content_src_components_ManualMigration_ManualMigration__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44);
|
||||
/* harmony import */ var common_PrerenderData_jsm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(45);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_10__);
|
||||
/* harmony import */ var content_src_components_Search_Search__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(46);
|
||||
/* harmony import */ var content_src_components_Sections_Sections__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(47);
|
||||
/* harmony import */ var common_PrerenderData_jsm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__);
|
||||
/* harmony import */ var content_src_components_Search_Search__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(45);
|
||||
/* harmony import */ var content_src_components_Sections_Sections__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(46);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
||||
|
@ -575,10 +574,9 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|||
|
||||
|
||||
|
||||
|
||||
const PrefsButton = Object(react_intl__WEBPACK_IMPORTED_MODULE_1__["injectIntl"])(props => react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("div", {
|
||||
const PrefsButton = Object(react_intl__WEBPACK_IMPORTED_MODULE_1__["injectIntl"])(props => react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", {
|
||||
className: "prefs-button"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("button", {
|
||||
}, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("button", {
|
||||
className: "icon icon-settings",
|
||||
onClick: props.onClick,
|
||||
title: props.intl.formatMessage({
|
||||
|
@ -613,7 +611,7 @@ function debounce(func, wait) {
|
|||
};
|
||||
}
|
||||
|
||||
class _Base extends react__WEBPACK_IMPORTED_MODULE_10___default.a.PureComponent {
|
||||
class _Base extends react__WEBPACK_IMPORTED_MODULE_9___default.a.PureComponent {
|
||||
componentWillMount() {
|
||||
const {
|
||||
locale
|
||||
|
@ -672,16 +670,16 @@ class _Base extends react__WEBPACK_IMPORTED_MODULE_10___default.a.PureComponent
|
|||
return null;
|
||||
}
|
||||
|
||||
return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__["IntlProvider"], {
|
||||
return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__["IntlProvider"], {
|
||||
locale: locale,
|
||||
messages: strings
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__["ErrorBoundary"], {
|
||||
}, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__["ErrorBoundary"], {
|
||||
className: "base-content-fallback"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_10___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(BaseContent, this.props), isDevtoolsEnabled ? react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_ASRouterAdmin_ASRouterAdmin__WEBPACK_IMPORTED_MODULE_2__["ASRouterAdmin"], null) : null)));
|
||||
}, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_9___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(BaseContent, this.props), isDevtoolsEnabled ? react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_ASRouterAdmin_ASRouterAdmin__WEBPACK_IMPORTED_MODULE_2__["ASRouterAdmin"], null) : null)));
|
||||
}
|
||||
|
||||
}
|
||||
class BaseContent extends react__WEBPACK_IMPORTED_MODULE_10___default.a.PureComponent {
|
||||
class BaseContent extends react__WEBPACK_IMPORTED_MODULE_9___default.a.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.openPreferences = this.openPreferences.bind(this);
|
||||
|
@ -733,29 +731,27 @@ class BaseContent extends react__WEBPACK_IMPORTED_MODULE_10___default.a.PureComp
|
|||
initialized
|
||||
} = App;
|
||||
const prefs = props.Prefs.values;
|
||||
const shouldBeFixedToTop = common_PrerenderData_jsm__WEBPACK_IMPORTED_MODULE_9__["PrerenderData"].arePrefsValid(name => prefs[name]);
|
||||
const shouldBeFixedToTop = common_PrerenderData_jsm__WEBPACK_IMPORTED_MODULE_8__["PrerenderData"].arePrefsValid(name => prefs[name]);
|
||||
const noSectionsEnabled = !prefs["feeds.topsites"] && props.Sections.filter(section => section.enabled).length === 0;
|
||||
const isDiscoveryStream = props.DiscoveryStream.config && props.DiscoveryStream.config.enabled;
|
||||
const searchHandoffEnabled = prefs["improvesearch.handoffToAwesomebar"];
|
||||
const outerClassName = ["outer-wrapper", isDiscoveryStream && "ds-outer-wrapper-search-alignment", isDiscoveryStream && "ds-outer-wrapper-breakpoint-override", shouldBeFixedToTop && "fixed-to-top", prefs.showSearch && this.state.fixedSearch && !noSectionsEnabled && "fixed-search", prefs.showSearch && noSectionsEnabled && "only-search"].filter(v => v).join(" ");
|
||||
return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("div", null, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("div", {
|
||||
return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", null, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", {
|
||||
className: outerClassName
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("main", null, prefs.showSearch && react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("div", {
|
||||
}, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("main", null, prefs.showSearch && react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", {
|
||||
className: "non-collapsible-section"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__["ErrorBoundary"], null, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_Search_Search__WEBPACK_IMPORTED_MODULE_11__["Search"], _extends({
|
||||
}, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__["ErrorBoundary"], null, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_Search_Search__WEBPACK_IMPORTED_MODULE_10__["Search"], _extends({
|
||||
showLogo: noSectionsEnabled,
|
||||
handoffEnabled: searchHandoffEnabled
|
||||
}, props.Search)))), react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("div", {
|
||||
className: `body-wrapper${initialized ? " on" : ""}`
|
||||
}, !isDiscoveryStream && !prefs.migrationExpired && react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement("div", {
|
||||
className: "non-collapsible-section"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_ManualMigration_ManualMigration__WEBPACK_IMPORTED_MODULE_8__["ManualMigration"], null)), isDiscoveryStream ? react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__["ErrorBoundary"], {
|
||||
className: "borderless-error"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_DiscoveryStreamBase_DiscoveryStreamBase__WEBPACK_IMPORTED_MODULE_6__["DiscoveryStreamBase"], null)) : react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_Sections_Sections__WEBPACK_IMPORTED_MODULE_12__["Sections"], null), react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(PrefsButton, {
|
||||
onClick: this.openPreferences
|
||||
})), react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(content_src_components_ConfirmDialog_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__["ConfirmDialog"], null))), react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(_asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_3__["ASRouterUISurface"], {
|
||||
}, props.Search)))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_3__["ASRouterUISurface"], {
|
||||
dispatch: this.props.dispatch
|
||||
}));
|
||||
}), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement("div", {
|
||||
className: `body-wrapper${initialized ? " on" : ""}`
|
||||
}, isDiscoveryStream ? react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_ErrorBoundary_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__["ErrorBoundary"], {
|
||||
className: "borderless-error"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_DiscoveryStreamBase_DiscoveryStreamBase__WEBPACK_IMPORTED_MODULE_6__["DiscoveryStreamBase"], null)) : react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_Sections_Sections__WEBPACK_IMPORTED_MODULE_11__["Sections"], null), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(PrefsButton, {
|
||||
onClick: this.openPreferences
|
||||
})), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(content_src_components_ConfirmDialog_ConfirmDialog__WEBPACK_IMPORTED_MODULE_4__["ConfirmDialog"], null))));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -780,19 +776,19 @@ module.exports = ReactIntl;
|
|||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToggleSpocButton", function() { return ToggleSpocButton; });
|
||||
/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToggleStoryButton", function() { return ToggleStoryButton; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DiscoveryStreamAdmin", function() { return DiscoveryStreamAdmin; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ASRouterAdminInner", function() { return ASRouterAdminInner; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CollapseToggle", function() { return CollapseToggle; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ASRouterAdmin", function() { return ASRouterAdmin; });
|
||||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var _asrouter_asrouter_content__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var _asrouter_components_ModalOverlay_ModalOverlay__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
|
||||
/* harmony import */ var _SimpleHashRouter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
|
||||
/* harmony import */ var _SimpleHashRouter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(27);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
||||
|
@ -833,14 +829,14 @@ const LAYOUT_VARIANTS = {
|
|||
"dev-test-all": "A little bit of everything. Good layout for testing all components",
|
||||
"dev-test-feeds": "Stress testing for slow feeds"
|
||||
};
|
||||
class ToggleSpocButton extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent {
|
||||
class ToggleStoryButton extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.handleClick = this.handleClick.bind(this);
|
||||
}
|
||||
|
||||
handleClick() {
|
||||
this.props.onClick(this.props.spoc);
|
||||
this.props.onClick(this.props.story);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -855,9 +851,9 @@ class DiscoveryStreamAdmin extends react__WEBPACK_IMPORTED_MODULE_4___default.a.
|
|||
super(props);
|
||||
this.onEnableToggle = this.onEnableToggle.bind(this);
|
||||
this.changeEndpointVariant = this.changeEndpointVariant.bind(this);
|
||||
this.onSpocToggle = this.onSpocToggle.bind(this);
|
||||
this.onStoryToggle = this.onStoryToggle.bind(this);
|
||||
this.state = {
|
||||
toggledSpocs: {}
|
||||
toggledStories: {}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -901,6 +897,21 @@ class DiscoveryStreamAdmin extends react__WEBPACK_IMPORTED_MODULE_4___default.a.
|
|||
return isMatch;
|
||||
}
|
||||
|
||||
renderFeedData(url) {
|
||||
const {
|
||||
feeds
|
||||
} = this.props.state;
|
||||
const feed = feeds.data[url].data;
|
||||
return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_4___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h4", null, "Feed url: ", url), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("table", null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("tbody", null, feed.recommendations.map(story => this.renderStoryData(story)))));
|
||||
}
|
||||
|
||||
renderFeedsData() {
|
||||
const {
|
||||
feeds
|
||||
} = this.props.state;
|
||||
return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_4___default.a.Fragment, null, Object.keys(feeds.data).map(url => this.renderFeedData(url)));
|
||||
}
|
||||
|
||||
renderSpocs() {
|
||||
const {
|
||||
spocs
|
||||
|
@ -915,38 +926,38 @@ class DiscoveryStreamAdmin extends react__WEBPACK_IMPORTED_MODULE_4___default.a.
|
|||
className: "min"
|
||||
}, "spocs_endpoint"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("td", null, spocs.spocs_endpoint)), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Row, null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("td", {
|
||||
className: "min"
|
||||
}, "Data last fetched"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("td", null, relativeTime(spocs.lastUpdated))))), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h4", null, "Spoc data"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("table", null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("tbody", null, spocsData.map(spoc => this.renderSpocData(spoc)))), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h4", null, "Spoc frequency caps"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("table", null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("tbody", null, spocs.frequency_caps.map(spoc => this.renderSpocData(spoc)))));
|
||||
}, "Data last fetched"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("td", null, relativeTime(spocs.lastUpdated))))), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h4", null, "Spoc data"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("table", null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("tbody", null, spocsData.map(spoc => this.renderStoryData(spoc)))), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h4", null, "Spoc frequency caps"), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("table", null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("tbody", null, spocs.frequency_caps.map(spoc => this.renderStoryData(spoc)))));
|
||||
}
|
||||
|
||||
onSpocToggle(spoc) {
|
||||
onStoryToggle(story) {
|
||||
const {
|
||||
toggledSpocs
|
||||
toggledStories
|
||||
} = this.state;
|
||||
this.setState({
|
||||
toggledSpocs: { ...toggledSpocs,
|
||||
[spoc.id]: !toggledSpocs[spoc.id]
|
||||
toggledStories: { ...toggledStories,
|
||||
[story.id]: !toggledStories[story.id]
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
renderSpocData(spoc) {
|
||||
let spocData = "";
|
||||
renderStoryData(story) {
|
||||
let storyData = "";
|
||||
|
||||
if (this.state.toggledSpocs[spoc.id]) {
|
||||
spocData = JSON.stringify(spoc, null, 2);
|
||||
if (this.state.toggledStories[story.id]) {
|
||||
storyData = JSON.stringify(story, null, 2);
|
||||
}
|
||||
|
||||
return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("tr", {
|
||||
className: "message-item",
|
||||
key: spoc.id
|
||||
key: story.id
|
||||
}, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("td", {
|
||||
className: "message-id"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("span", null, spoc.id, " ", react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("br", null)), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ToggleSpocButton, {
|
||||
spoc: spoc,
|
||||
onClick: this.onSpocToggle
|
||||
}, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("span", null, story.id, " ", react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("br", null)), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ToggleStoryButton, {
|
||||
story: story,
|
||||
onClick: this.onStoryToggle
|
||||
})), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("td", {
|
||||
className: "message-summary"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("pre", null, spocData)));
|
||||
}, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("pre", null, storyData)));
|
||||
}
|
||||
|
||||
renderFeed(feed) {
|
||||
|
@ -1008,7 +1019,7 @@ class DiscoveryStreamAdmin extends react__WEBPACK_IMPORTED_MODULE_4___default.a.
|
|||
}, row.components.map((component, componentIndex) => react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("div", {
|
||||
key: `component-${componentIndex}`,
|
||||
className: "ds-component"
|
||||
}, this.renderComponent(row.width, component))))), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h3", null, "Spocs"), this.renderSpocs());
|
||||
}, this.renderComponent(row.width, component))))), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h3", null, "Feeds Data"), this.renderFeedsData(), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("h3", null, "Spocs"), this.renderSpocs());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1693,12 +1704,18 @@ class CollapseToggle extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureCo
|
|||
const {
|
||||
renderAdmin
|
||||
} = this;
|
||||
const action = this.state.collapsed || !renderAdmin ? "Expand" : "Collapse";
|
||||
const isCollapsed = this.state.collapsed || !renderAdmin;
|
||||
const label = `${isCollapsed ? "Expand" : "Collapse"} devtools`;
|
||||
return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_4___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("a", {
|
||||
href: "#devtools",
|
||||
className: "asrouter-toggle",
|
||||
title: label,
|
||||
className: `asrouter-toggle ${isCollapsed ? "collapsed" : "expanded"}`,
|
||||
onClick: this.renderAdmin ? this.onCollapseToggle : null
|
||||
}, action, " Devtools"), renderAdmin ? react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ASRouterAdminInner, _extends({}, props, {
|
||||
}, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("span", {
|
||||
className: "sr-only"
|
||||
}, label), react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement("span", {
|
||||
className: "icon icon-devtools"
|
||||
})), renderAdmin ? react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ASRouterAdminInner, _extends({}, props, {
|
||||
collapsed: this.state.collapsed
|
||||
})) : null);
|
||||
}
|
||||
|
@ -1728,14 +1745,16 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var content_src_lib_init_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
|
||||
/* harmony import */ var _rich_text_strings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
|
||||
/* harmony import */ var _components_ImpressionsWrapper_ImpressionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10);
|
||||
/* harmony import */ var fluent_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55);
|
||||
/* harmony import */ var fluent_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(54);
|
||||
/* harmony import */ var content_src_lib_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
|
||||
/* harmony import */ var _templates_OnboardingMessage_OnboardingMessage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__);
|
||||
/* harmony import */ var _templates_ReturnToAMO_ReturnToAMO__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(16);
|
||||
/* harmony import */ var _templates_template_manifest__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(53);
|
||||
/* harmony import */ var _templates_StartupOverlay_StartupOverlay__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(24);
|
||||
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(16);
|
||||
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_9__);
|
||||
/* harmony import */ var _templates_ReturnToAMO_ReturnToAMO__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(17);
|
||||
/* harmony import */ var _templates_template_manifest__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(52);
|
||||
/* harmony import */ var _templates_StartupOverlay_StartupOverlay__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(25);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
||||
|
@ -1750,8 +1769,10 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|||
|
||||
|
||||
|
||||
|
||||
const INCOMING_MESSAGE_NAME = "ASRouter:parent-to-child";
|
||||
const OUTGOING_MESSAGE_NAME = "ASRouter:child-to-parent";
|
||||
const TEMPLATES_BELOW_SEARCH = ["simple_below_search_snippet"];
|
||||
const ASRouterUtils = {
|
||||
addListener(listener) {
|
||||
if (global.RPMAddMessageListener) {
|
||||
|
@ -1878,6 +1899,10 @@ class ASRouterUISurface extends react__WEBPACK_IMPORTED_MODULE_8___default.a.Pur
|
|||
message: {},
|
||||
bundle: {}
|
||||
};
|
||||
|
||||
if (props.document) {
|
||||
this.portalContainer = props.document.getElementById("footer-snippets-container");
|
||||
}
|
||||
}
|
||||
|
||||
sendUserActionTelemetry(extraProps = {}) {
|
||||
|
@ -2069,7 +2094,7 @@ class ASRouterUISurface extends react__WEBPACK_IMPORTED_MODULE_8___default.a.Pur
|
|||
return null;
|
||||
}
|
||||
|
||||
const SnippetComponent = _templates_template_manifest__WEBPACK_IMPORTED_MODULE_10__["SnippetsTemplates"][this.state.message.template];
|
||||
const SnippetComponent = _templates_template_manifest__WEBPACK_IMPORTED_MODULE_11__["SnippetsTemplates"][this.state.message.template];
|
||||
const {
|
||||
content
|
||||
} = this.state.message;
|
||||
|
@ -2115,7 +2140,7 @@ class ASRouterUISurface extends react__WEBPACK_IMPORTED_MODULE_8___default.a.Pur
|
|||
return react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(react_intl__WEBPACK_IMPORTED_MODULE_0__["IntlProvider"], {
|
||||
locale: global.document.documentElement.lang,
|
||||
messages: global.gActivityStreamStrings
|
||||
}, react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(_templates_StartupOverlay_StartupOverlay__WEBPACK_IMPORTED_MODULE_11__["StartupOverlay"], {
|
||||
}, react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(_templates_StartupOverlay_StartupOverlay__WEBPACK_IMPORTED_MODULE_12__["StartupOverlay"], {
|
||||
onReady: this.triggerOnboarding,
|
||||
onBlock: this.onDismissById(message.id),
|
||||
dispatch: this.props.dispatch
|
||||
|
@ -2126,7 +2151,7 @@ class ASRouterUISurface extends react__WEBPACK_IMPORTED_MODULE_8___default.a.Pur
|
|||
messages: Object(_rich_text_strings__WEBPACK_IMPORTED_MODULE_3__["generateMessages"])({
|
||||
"amo_html": message.content.text
|
||||
})
|
||||
}, react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(_templates_ReturnToAMO_ReturnToAMO__WEBPACK_IMPORTED_MODULE_9__["ReturnToAMO"], _extends({}, message, {
|
||||
}, react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(_templates_ReturnToAMO_ReturnToAMO__WEBPACK_IMPORTED_MODULE_10__["ReturnToAMO"], _extends({}, message, {
|
||||
onReady: this.triggerOnboarding,
|
||||
onBlock: this.onDismissById(message.id),
|
||||
onAction: ASRouterUtils.executeAction
|
||||
|
@ -2158,7 +2183,13 @@ class ASRouterUISurface extends react__WEBPACK_IMPORTED_MODULE_8___default.a.Pur
|
|||
return null;
|
||||
}
|
||||
|
||||
return react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_8___default.a.Fragment, null, this.renderPreviewBanner(), this.renderFirstRunOverlay(), this.renderOnboarding(), this.renderSnippets());
|
||||
const shouldRenderBelowSearch = TEMPLATES_BELOW_SEARCH.includes(message.template);
|
||||
return shouldRenderBelowSearch ? // Render special below search snippets in place;
|
||||
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement("div", {
|
||||
className: "below-search-snippet"
|
||||
}, this.renderSnippets()) : // For onboarding, regular snippets etc. we should render
|
||||
// everything in our footer container.
|
||||
react_dom__WEBPACK_IMPORTED_MODULE_9___default.a.createPortal(react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_8___default.a.Fragment, null, this.renderPreviewBanner(), this.renderFirstRunOverlay(), this.renderOnboarding(), this.renderSnippets()), this.portalContainer);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2341,7 +2372,7 @@ module.exports = Redux;
|
|||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RICH_TEXT_KEYS", function() { return RICH_TEXT_KEYS; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generateMessages", function() { return generateMessages; });
|
||||
/* harmony import */ var fluent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54);
|
||||
/* harmony import */ var fluent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53);
|
||||
|
||||
/**
|
||||
* Properties that allow rich text MUST be added to this list.
|
||||
|
@ -2636,6 +2667,12 @@ class ModalOverlay extends react__WEBPACK_IMPORTED_MODULE_0___default.a.PureComp
|
|||
|
||||
/***/ }),
|
||||
/* 16 */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = ReactDOM;
|
||||
|
||||
/***/ }),
|
||||
/* 17 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -2643,7 +2680,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReturnToAMO", function() { return ReturnToAMO; });
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
||||
/* harmony import */ var _components_RichText_RichText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17);
|
||||
/* harmony import */ var _components_RichText_RichText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
|
||||
|
||||
|
||||
class ReturnToAMO extends react__WEBPACK_IMPORTED_MODULE_0___default.a.PureComponent {
|
||||
|
@ -2709,18 +2746,18 @@ class ReturnToAMO extends react__WEBPACK_IMPORTED_MODULE_0___default.a.PureCompo
|
|||
}
|
||||
|
||||
/***/ }),
|
||||
/* 17 */
|
||||
/* 18 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertLinks", function() { return convertLinks; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RichText", function() { return RichText; });
|
||||
/* harmony import */ var fluent_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55);
|
||||
/* harmony import */ var fluent_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var _rich_text_strings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
|
||||
/* harmony import */ var _template_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
|
||||
/* harmony import */ var _template_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
||||
|
@ -2779,7 +2816,7 @@ function RichText(props) {
|
|||
}
|
||||
|
||||
/***/ }),
|
||||
/* 18 */
|
||||
/* 19 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -2803,37 +2840,37 @@ function safeURI(url) {
|
|||
}
|
||||
|
||||
/***/ }),
|
||||
/* 19 */
|
||||
/* 20 */
|
||||
/***/ (function(module) {
|
||||
|
||||
module.exports = {"title":"EOYSnippet","description":"Fundraising Snippet","version":"1.0.0","type":"object","definitions":{"plainText":{"description":"Plain text (no HTML allowed)","type":"string"},"richText":{"description":"Text with HTML subset allowed: i, b, u, strong, em, br","type":"string"},"link_url":{"description":"Target for links or buttons","type":"string","format":"uri"}},"properties":{"donation_form_url":{"type":"string","description":"Url to the donation form."},"currency_code":{"type":"string","description":"The code for the currency. Examle gbp, cad, usd.","default":"usd"},"locale":{"type":"string","description":"String for the locale code.","default":"en-US"},"text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"text_color":{"type":"string","description":"Modify the text message color"},"background_color":{"type":"string","description":"Snippet background color."},"highlight_color":{"type":"string","description":"Paragraph em highlight color."},"donation_amount_first":{"type":"number","description":"First button amount."},"donation_amount_second":{"type":"number","description":"Second button amount."},"donation_amount_third":{"type":"number","description":"Third button amount."},"donation_amount_fourth":{"type":"number","description":"Fourth button amount."},"selected_button":{"type":"string","description":"Default donation_amount_second. Donation amount button that's selected by default.","default":"donation_amount_second"},"icon":{"type":"string","description":"Snippet icon. 64x64px. SVG or PNG preferred."},"title":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Snippet title displayed before snippet text"}]},"title_icon":{"type":"string","description":"Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."},"button_label":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Text for a button next to main snippet text that links to button_url. Requires button_url."}]},"button_color":{"type":"string","description":"The text color of the button. Valid CSS color."},"button_background_color":{"type":"string","description":"The background color of the button. Valid CSS color."},"block_button_text":{"type":"string","description":"Tooltip text used for dismiss button."},"monthly_checkbox_label_text":{"type":"string","description":"Label text for monthly checkbox.","default":"Make my donation monthly"},"test":{"type":"string","description":"Different styles for the snippet. Options are bold and takeover."},"do_not_autoblock":{"type":"boolean","description":"Used to prevent blocking the snippet after the CTA (link or button) has been clicked"},"links":{"additionalProperties":{"url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"The url where the link points to."}]},"metric":{"type":"string","description":"Custom event name sent with telemetry event."},"args":{"type":"string","description":"Additional parameters for link action, example which specific menu the button should open"}}}},"additionalProperties":false,"required":["text","donation_form_url","donation_amount_first","donation_amount_second","donation_amount_third","donation_amount_fourth","button_label","currency_code"],"dependencies":{"button_color":["button_label"],"button_background_color":["button_label"]}};
|
||||
|
||||
/***/ }),
|
||||
/* 20 */
|
||||
/* 21 */
|
||||
/***/ (function(module) {
|
||||
|
||||
module.exports = {"title":"SimpleSnippet","description":"A simple template with an icon, text, and optional button.","version":"1.1.1","type":"object","definitions":{"plainText":{"description":"Plain text (no HTML allowed)","type":"string"},"richText":{"description":"Text with HTML subset allowed: i, b, u, strong, em, br","type":"string"},"link_url":{"description":"Target for links or buttons","type":"string","format":"uri"}},"properties":{"title":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Snippet title displayed before snippet text"}]},"text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"icon":{"type":"string","description":"Snippet icon. 64x64px. SVG or PNG preferred."},"title_icon":{"type":"string","description":"Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."},"button_action":{"type":"string","description":"The type of action the button should trigger."},"button_url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"A url, button_label links to this"}]},"button_action_args":{"type":"string","description":"Additional parameters for button action, example which specific menu the button should open"},"button_label":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Text for a button next to main snippet text that links to button_url. Requires button_url."}]},"button_color":{"type":"string","description":"The text color of the button. Valid CSS color."},"button_background_color":{"type":"string","description":"The background color of the button. Valid CSS color."},"block_button_text":{"type":"string","description":"Tooltip text used for dismiss button.","default":"Remove this"},"tall":{"type":"boolean","description":"To be used by fundraising only, increases height to roughly 120px. Defaults to false."},"do_not_autoblock":{"type":"boolean","description":"Used to prevent blocking the snippet after the CTA (link or button) has been clicked"},"links":{"additionalProperties":{"url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"The url where the link points to."}]},"metric":{"type":"string","description":"Custom event name sent with telemetry event."},"args":{"type":"string","description":"Additional parameters for link action, example which specific menu the button should open"}}},"section_title_icon":{"type":"string","description":"Section title icon. 16x16px. SVG or PNG preferred. section_title_text must also be specified to display."},"section_title_text":{"type":"string","description":"Section title text. section_title_icon must also be specified to display."},"section_title_url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"A url, section_title_text links to this"}]}},"additionalProperties":false,"required":["text"],"dependencies":{"button_action":["button_label"],"button_url":["button_label"],"button_color":["button_label"],"button_background_color":["button_label"],"section_title_url":["section_title_text"]}};
|
||||
|
||||
/***/ }),
|
||||
/* 21 */
|
||||
/* 22 */
|
||||
/***/ (function(module) {
|
||||
|
||||
module.exports = {"title":"FXASignupSnippet","description":"A snippet template for FxA sign up/sign in","version":"1.0.0","type":"object","definitions":{"plainText":{"description":"Plain text (no HTML allowed)","type":"string"},"richText":{"description":"Text with HTML subset allowed: i, b, u, strong, em, br","type":"string"},"link_url":{"description":"Target for links or buttons","type":"string","format":"uri"}},"properties":{"scene1_title":{"allof":[{"$ref":"#/definitions/plainText"},{"description":"snippet title displayed before snippet text"}]},"scene1_text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"scene2_title":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Title displayed before text in scene 2. Should be plain text."}]},"scene2_text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"scene1_icon":{"type":"string","description":"Snippet icon. 64x64px. SVG or PNG preferred."},"scene1_title_icon":{"type":"string","description":"Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."},"scene2_email_placeholder_text":{"type":"string","description":"Value to show while input is empty.","default":"Your email here"},"scene2_button_label":{"type":"string","description":"Label for form submit button","default":"Sign me up"},"scene2_dismiss_button_text":{"type":"string","description":"Label for the dismiss button when the sign-up form is expanded.","default":"Dismiss"},"hidden_inputs":{"type":"object","description":"Each entry represents a hidden input, key is used as value for the name property.","properties":{"action":{"type":"string","enum":["email"]},"context":{"type":"string","enum":["fx_desktop_v3"]},"entrypoint":{"type":"string","enum":["snippets"]},"service":{"type":"string","enum":["sync"]},"utm_content":{"type":"number","description":"Firefox version number"},"utm_source":{"type":"string","enum":["snippet"]},"utm_campaign":{"type":"string","description":"(fxa) Value to pass through to GA as utm_campaign."},"utm_term":{"type":"string","description":"(fxa) Value to pass through to GA as utm_term."},"additionalProperties":false}},"scene1_button_label":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Text for a button next to main snippet text that links to button_url. Requires button_url."}],"default":"Learn more"},"scene1_button_color":{"type":"string","description":"The text color of the button. Valid CSS color."},"scene1_button_background_color":{"type":"string","description":"The background color of the button. Valid CSS color."},"do_not_autoblock":{"type":"boolean","description":"Used to prevent blocking the snippet after the CTA (link or button) has been clicked","default":false},"utm_campaign":{"type":"string","description":"(fxa) Value to pass through to GA as utm_campaign."},"utm_term":{"type":"string","description":"(fxa) Value to pass through to GA as utm_term."},"links":{"additionalProperties":{"url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"The url where the link points to."}]},"metric":{"type":"string","description":"Custom event name sent with telemetry event."}}}},"additionalProperties":false,"required":["scene1_text","scene2_text","scene1_button_label"],"dependencies":{"scene1_button_color":["scene1_button_label"],"scene1_button_background_color":["scene1_button_label"]}};
|
||||
|
||||
/***/ }),
|
||||
/* 22 */
|
||||
/* 23 */
|
||||
/***/ (function(module) {
|
||||
|
||||
module.exports = {"title":"NewsletterSnippet","description":"A snippet template for send to device mobile download","version":"1.0.0","type":"object","definitions":{"plainText":{"description":"Plain text (no HTML allowed)","type":"string"},"richText":{"description":"Text with HTML subset allowed: i, b, u, strong, em, br","type":"string"},"link_url":{"description":"Target for links or buttons","type":"string","format":"uri"}},"properties":{"locale":{"type":"string","description":"Two to five character string for the locale code","default":"en-US"},"scene1_title":{"allof":[{"$ref":"#/definitions/plainText"},{"description":"snippet title displayed before snippet text"}]},"scene1_text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"scene2_title":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Title displayed before text in scene 2. Should be plain text."}]},"scene2_text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"scene1_icon":{"type":"string","description":"Snippet icon. 64x64px. SVG or PNG preferred."},"scene1_title_icon":{"type":"string","description":"Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."},"scene2_email_placeholder_text":{"type":"string","description":"Value to show while input is empty.","default":"Your email here"},"scene2_button_label":{"type":"string","description":"Label for form submit button","default":"Sign me up"},"scene2_privacy_html":{"type":"string","description":"(send to device) Html for disclaimer and link underneath input box."},"scene2_dismiss_button_text":{"type":"string","description":"Label for the dismiss button when the sign-up form is expanded.","default":"Dismiss"},"hidden_inputs":{"type":"object","description":"Each entry represents a hidden input, key is used as value for the name property.","properties":{"fmt":{"type":"string","description":"","default":"H"}}},"scene1_button_label":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Text for a button next to main snippet text that links to button_url. Requires button_url."}],"default":"Learn more"},"scene1_button_color":{"type":"string","description":"The text color of the button. Valid CSS color."},"scene1_button_background_color":{"type":"string","description":"The background color of the button. Valid CSS color."},"do_not_autoblock":{"type":"boolean","description":"Used to prevent blocking the snippet after the CTA (link or button) has been clicked","default":false},"success_text":{"type":"string","description":"Message shown on successful registration."},"error_text":{"type":"string","description":"Message shown if registration failed."},"scene2_newsletter":{"type":"string","description":"Newsletter/basket id user is subscribing to.","default":"mozilla-foundation"},"links":{"additionalProperties":{"url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"The url where the link points to."}]},"metric":{"type":"string","description":"Custom event name sent with telemetry event."}}}},"additionalProperties":false,"required":["scene1_text","scene2_text","scene1_button_label"],"dependencies":{"scene1_button_color":["scene1_button_label"],"scene1_button_background_color":["scene1_button_label"]}};
|
||||
|
||||
/***/ }),
|
||||
/* 23 */
|
||||
/* 24 */
|
||||
/***/ (function(module) {
|
||||
|
||||
module.exports = {"title":"SendToDeviceSnippet","description":"A snippet template for send to device mobile download","version":"1.0.0","type":"object","definitions":{"plainText":{"description":"Plain text (no HTML allowed)","type":"string"},"richText":{"description":"Text with HTML subset allowed: i, b, u, strong, em, br","type":"string"},"link_url":{"description":"Target for links or buttons","type":"string","format":"uri"}},"properties":{"locale":{"type":"string","description":"Two to five character string for the locale code","default":"en-US"},"country":{"type":"string","description":"Two character string for the country code (used for SMS)","default":"us"},"scene1_title":{"allof":[{"$ref":"#/definitions/plainText"},{"description":"snippet title displayed before snippet text"}]},"scene1_text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"scene2_title":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Title displayed before text in scene 2. Should be plain text."}]},"scene2_text":{"allOf":[{"$ref":"#/definitions/richText"},{"description":"Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}]},"scene1_icon":{"type":"string","description":"Snippet icon. 64x64px. SVG or PNG preferred."},"scene2_icon":{"type":"string","description":"(send to device) Image to display above the form. 98x98px. SVG or PNG preferred."},"scene1_title_icon":{"type":"string","description":"Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."},"scene2_button_label":{"type":"string","description":"Label for form submit button","default":"Send"},"scene2_input_placeholder":{"type":"string","description":"(send to device) Value to show while input is empty.","default":"Your email here"},"scene2_disclaimer_html":{"type":"string","description":"(send to device) Html for disclaimer and link underneath input box."},"scene2_dismiss_button_text":{"type":"string","description":"Label for the dismiss button when the sign-up form is expanded.","default":"Dismiss"},"hidden_inputs":{"type":"object","description":"Each entry represents a hidden input, key is used as value for the name property.","properties":{"action":{"type":"string","enum":["email"]},"context":{"type":"string","enum":["fx_desktop_v3"]},"entrypoint":{"type":"string","enum":["snippets"]},"service":{"type":"string","enum":["sync"]},"utm_content":{"type":"string","description":"Firefox version number"},"utm_source":{"type":"string","enum":["snippet"]},"utm_campaign":{"type":"string","description":"(fxa) Value to pass through to GA as utm_campaign."},"utm_term":{"type":"string","description":"(fxa) Value to pass through to GA as utm_term."},"additionalProperties":false}},"scene1_button_label":{"allOf":[{"$ref":"#/definitions/plainText"},{"description":"Text for a button next to main snippet text that links to button_url. Requires button_url."}],"default":"Learn more"},"scene1_button_color":{"type":"string","description":"The text color of the button. Valid CSS color."},"scene1_button_background_color":{"type":"string","description":"The background color of the button. Valid CSS color."},"do_not_autoblock":{"type":"boolean","description":"Used to prevent blocking the snippet after the CTA (link or button) has been clicked","default":false},"success_title":{"type":"string","description":"(send to device) Title shown before text on successful registration."},"success_text":{"type":"string","description":"Message shown on successful registration."},"error_text":{"type":"string","description":"Message shown if registration failed."},"include_sms":{"type":"boolean","description":"(send to device) Allow users to send an SMS message with the form?","default":false},"message_id_sms":{"type":"string","description":"(send to device) Newsletter/basket id representing the SMS message to be sent."},"message_id_email":{"type":"string","description":"(send to device) Newsletter/basket id representing the email message to be sent. Must be a value from the 'Slug' column here: https://basket.mozilla.org/news/."},"utm_campaign":{"type":"string","description":"(fxa) Value to pass through to GA as utm_campaign."},"utm_term":{"type":"string","description":"(fxa) Value to pass through to GA as utm_term."},"links":{"additionalProperties":{"url":{"allOf":[{"$ref":"#/definitions/link_url"},{"description":"The url where the link points to."}]},"metric":{"type":"string","description":"Custom event name sent with telemetry event."}}}},"additionalProperties":false,"required":["scene1_text","scene2_text","scene1_button_label"],"dependencies":{"scene1_button_color":["scene1_button_label"],"scene1_button_background_color":["scene1_button_label"]}};
|
||||
|
||||
/***/ }),
|
||||
/* 24 */
|
||||
/* 25 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -2843,7 +2880,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
||||
|
@ -3124,13 +3161,13 @@ const getState = state => ({
|
|||
const StartupOverlay = Object(react_redux__WEBPACK_IMPORTED_MODULE_2__["connect"])(getState)(Object(react_intl__WEBPACK_IMPORTED_MODULE_1__["injectIntl"])(_StartupOverlay));
|
||||
|
||||
/***/ }),
|
||||
/* 25 */
|
||||
/* 26 */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = ReactRedux;
|
||||
|
||||
/***/ }),
|
||||
/* 26 */
|
||||
/* 27 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -3176,7 +3213,7 @@ class SimpleHashRouter extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Pure
|
|||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))
|
||||
|
||||
/***/ }),
|
||||
/* 27 */
|
||||
/* 28 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -3184,7 +3221,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_ConfirmDialog", function() { return _ConfirmDialog; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConfirmDialog", function() { return ConfirmDialog; });
|
||||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__);
|
||||
|
@ -3282,12 +3319,6 @@ class _ConfirmDialog extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureCo
|
|||
}
|
||||
const ConfirmDialog = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])(state => state.Dialog)(_ConfirmDialog);
|
||||
|
||||
/***/ }),
|
||||
/* 28 */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = ReactDOM;
|
||||
|
||||
/***/ }),
|
||||
/* 29 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
@ -3297,7 +3328,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_LinkMenu", function() { return _LinkMenu; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LinkMenu", function() { return LinkMenu; });
|
||||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var content_src_components_ContextMenu_ContextMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
|
||||
|
@ -4633,15 +4664,15 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var _TopSitesConstants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38);
|
||||
/* harmony import */ var content_src_components_CollapsibleSection_CollapsibleSection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33);
|
||||
/* harmony import */ var content_src_components_ComponentPerfTimer_ComponentPerfTimer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(39);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);
|
||||
/* harmony import */ var _SearchShortcutsForm__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(41);
|
||||
/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(56);
|
||||
/* harmony import */ var _TopSiteForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(58);
|
||||
/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(55);
|
||||
/* harmony import */ var _TopSiteForm__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(57);
|
||||
/* harmony import */ var _TopSite__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(42);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
@ -5397,7 +5428,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
|
||||
/* harmony import */ var content_src_lib_screenshot_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
|
||||
/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(56);
|
||||
/* harmony import */ var common_Reducers_jsm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(55);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
||||
|
@ -6105,83 +6136,6 @@ const ScreenshotUtils = {
|
|||
/* 44 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_ManualMigration", function() { return _ManualMigration; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ManualMigration", function() { return ManualMigration; });
|
||||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Manual migration component used to start the profile import wizard.
|
||||
* Message is presented temporarily and will go away if:
|
||||
* 1. User clicks "No Thanks"
|
||||
* 2. User completed the data import
|
||||
* 3. After 3 active days
|
||||
* 4. User clicks "Cancel" on the import wizard (currently not implemented).
|
||||
*/
|
||||
|
||||
class _ManualMigration extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.onLaunchTour = this.onLaunchTour.bind(this);
|
||||
this.onCancelTour = this.onCancelTour.bind(this);
|
||||
}
|
||||
|
||||
onLaunchTour() {
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].AlsoToMain({
|
||||
type: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].MIGRATION_START
|
||||
}));
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].UserEvent({
|
||||
event: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].MIGRATION_START
|
||||
}));
|
||||
}
|
||||
|
||||
onCancelTour() {
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].AlsoToMain({
|
||||
type: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].MIGRATION_CANCEL
|
||||
}));
|
||||
this.props.dispatch(common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].UserEvent({
|
||||
event: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].MIGRATION_CANCEL
|
||||
}));
|
||||
}
|
||||
|
||||
render() {
|
||||
return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("div", {
|
||||
className: "manual-migration-container"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("p", null, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("span", {
|
||||
className: "icon icon-import"
|
||||
}), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react_intl__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], {
|
||||
id: "manual_migration_explanation2"
|
||||
})), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("div", {
|
||||
className: "manual-migration-actions actions"
|
||||
}, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("button", {
|
||||
className: "dismiss",
|
||||
onClick: this.onCancelTour
|
||||
}, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react_intl__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], {
|
||||
id: "manual_migration_cancel_button"
|
||||
})), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("button", {
|
||||
onClick: this.onLaunchTour
|
||||
}, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react_intl__WEBPACK_IMPORTED_MODULE_2__["FormattedMessage"], {
|
||||
id: "manual_migration_import_button"
|
||||
}))));
|
||||
}
|
||||
|
||||
}
|
||||
const ManualMigration = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["connect"])()(_ManualMigration);
|
||||
|
||||
/***/ }),
|
||||
/* 45 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_PrerenderData", function() { return _PrerenderData; });
|
||||
|
@ -6264,7 +6218,6 @@ class _PrerenderData {
|
|||
}
|
||||
var PrerenderData = new _PrerenderData({
|
||||
initialPrefs: {
|
||||
"migrationExpired": true,
|
||||
"feeds.topsites": true,
|
||||
"showSearch": true,
|
||||
"topSitesRows": 1,
|
||||
|
@ -6318,7 +6271,7 @@ var PrerenderData = new _PrerenderData({
|
|||
});
|
||||
|
||||
/***/ }),
|
||||
/* 46 */
|
||||
/* 45 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -6328,7 +6281,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var content_src_lib_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);
|
||||
|
@ -6526,7 +6479,7 @@ class _Search extends react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent
|
|||
const Search = Object(react_redux__WEBPACK_IMPORTED_MODULE_2__["connect"])()(Object(react_intl__WEBPACK_IMPORTED_MODULE_1__["injectIntl"])(_Search));
|
||||
|
||||
/***/ }),
|
||||
/* 47 */
|
||||
/* 46 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -6536,18 +6489,18 @@ __webpack_require__.r(__webpack_exports__);
|
|||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_Sections", function() { return _Sections; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Sections", function() { return Sections; });
|
||||
/* harmony import */ var common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
|
||||
/* harmony import */ var content_src_components_Card_Card__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
|
||||
/* harmony import */ var content_src_components_Card_Card__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var content_src_components_CollapsibleSection_CollapsibleSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(33);
|
||||
/* harmony import */ var content_src_components_ComponentPerfTimer_ComponentPerfTimer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var content_src_components_MoreRecommendations_MoreRecommendations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48);
|
||||
/* harmony import */ var content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(49);
|
||||
/* harmony import */ var content_src_components_MoreRecommendations_MoreRecommendations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(47);
|
||||
/* harmony import */ var content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11);
|
||||
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__);
|
||||
/* harmony import */ var content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(50);
|
||||
/* harmony import */ var content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(49);
|
||||
/* harmony import */ var content_src_components_TopSites_TopSites__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(37);
|
||||
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
@ -6897,7 +6850,7 @@ const Sections = Object(react_redux__WEBPACK_IMPORTED_MODULE_5__["connect"])(sta
|
|||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))
|
||||
|
||||
/***/ }),
|
||||
/* 48 */
|
||||
/* 47 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -6930,14 +6883,14 @@ class MoreRecommendations extends react__WEBPACK_IMPORTED_MODULE_1___default.a.P
|
|||
}
|
||||
|
||||
/***/ }),
|
||||
/* 49 */
|
||||
/* 48 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_PocketLoggedInCta", function() { return _PocketLoggedInCta; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PocketLoggedInCta", function() { return PocketLoggedInCta; });
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26);
|
||||
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_0__);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
|
||||
|
@ -6973,7 +6926,7 @@ const PocketLoggedInCta = Object(react_redux__WEBPACK_IMPORTED_MODULE_0__["conne
|
|||
}))(_PocketLoggedInCta);
|
||||
|
||||
/***/ }),
|
||||
/* 50 */
|
||||
/* 49 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -7018,7 +6971,7 @@ class Topics extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent
|
|||
}
|
||||
|
||||
/***/ }),
|
||||
/* 51 */
|
||||
/* 50 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -7097,7 +7050,7 @@ class DetectUserSessionStart {
|
|||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))
|
||||
|
||||
/***/ }),
|
||||
/* 52 */
|
||||
/* 51 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -7111,7 +7064,7 @@ var external_React_ = __webpack_require__(11);
|
|||
var external_React_default = /*#__PURE__*/__webpack_require__.n(external_React_);
|
||||
|
||||
// EXTERNAL MODULE: external "ReactDOM"
|
||||
var external_ReactDOM_ = __webpack_require__(28);
|
||||
var external_ReactDOM_ = __webpack_require__(16);
|
||||
var external_ReactDOM_default = /*#__PURE__*/__webpack_require__.n(external_ReactDOM_);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/components/DiscoveryStreamComponents/DSImage/DSImage.jsx
|
||||
|
@ -7558,7 +7511,7 @@ CardGrid_CardGrid.defaultProps = {
|
|||
var CollapsibleSection = __webpack_require__(33);
|
||||
|
||||
// EXTERNAL MODULE: external "ReactRedux"
|
||||
var external_ReactRedux_ = __webpack_require__(25);
|
||||
var external_ReactRedux_ = __webpack_require__(26);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/components/DiscoveryStreamComponents/DSMessage/DSMessage.jsx
|
||||
|
||||
|
@ -8344,7 +8297,7 @@ const DiscoveryStreamBase = Object(external_ReactRedux_["connect"])(state => ({
|
|||
}))(DiscoveryStreamBase_DiscoveryStreamBase);
|
||||
|
||||
/***/ }),
|
||||
/* 53 */
|
||||
/* 52 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -8355,7 +8308,7 @@ var external_React_ = __webpack_require__(11);
|
|||
var external_React_default = /*#__PURE__*/__webpack_require__.n(external_React_);
|
||||
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/templates/EOYSnippet/EOYSnippet.schema.json
|
||||
var EOYSnippet_schema = __webpack_require__(19);
|
||||
var EOYSnippet_schema = __webpack_require__(20);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/asrouter/components/Button/Button.jsx
|
||||
|
||||
|
@ -8388,13 +8341,13 @@ const ConditionalWrapper = ({
|
|||
children
|
||||
}) => condition ? wrap(children) : children;
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/components/RichText/RichText.jsx
|
||||
var RichText = __webpack_require__(17);
|
||||
var RichText = __webpack_require__(18);
|
||||
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/template-utils.js
|
||||
var template_utils = __webpack_require__(18);
|
||||
var template_utils = __webpack_require__(19);
|
||||
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.schema.json
|
||||
var SimpleSnippet_schema = __webpack_require__(20);
|
||||
var SimpleSnippet_schema = __webpack_require__(21);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/asrouter/components/SnippetBase/SnippetBase.jsx
|
||||
|
||||
|
@ -8404,6 +8357,42 @@ class SnippetBase_SnippetBase extends external_React_default.a.PureComponent {
|
|||
super(props);
|
||||
this.onBlockClicked = this.onBlockClicked.bind(this);
|
||||
this.onDismissClicked = this.onDismissClicked.bind(this);
|
||||
this.setBlockButtonRef = this.setBlockButtonRef.bind(this);
|
||||
this.onBlockButtonMouseEnter = this.onBlockButtonMouseEnter.bind(this);
|
||||
this.onBlockButtonMouseLeave = this.onBlockButtonMouseLeave.bind(this);
|
||||
this.state = {
|
||||
blockButtonHover: false
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.blockButtonRef) {
|
||||
this.blockButtonRef.addEventListener("mouseenter", this.onBlockButtonMouseEnter);
|
||||
this.blockButtonRef.addEventListener("mouseleave", this.onBlockButtonMouseLeave);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
if (this.blockButtonRef) {
|
||||
this.blockButtonRef.removeEventListener("mouseenter", this.onBlockButtonMouseEnter);
|
||||
this.blockButtonRef.removeEventListener("mouseleave", this.onBlockButtonMouseLeave);
|
||||
}
|
||||
}
|
||||
|
||||
setBlockButtonRef(element) {
|
||||
this.blockButtonRef = element;
|
||||
}
|
||||
|
||||
onBlockButtonMouseEnter() {
|
||||
this.setState({
|
||||
blockButtonHover: true
|
||||
});
|
||||
}
|
||||
|
||||
onBlockButtonMouseLeave() {
|
||||
this.setState({
|
||||
blockButtonHover: false
|
||||
});
|
||||
}
|
||||
|
||||
onBlockClicked() {
|
||||
|
@ -8444,7 +8433,8 @@ class SnippetBase_SnippetBase extends external_React_default.a.PureComponent {
|
|||
return external_React_default.a.createElement("button", {
|
||||
className: "blockButton",
|
||||
title: this.props.content.block_button_text || defaultTitle,
|
||||
onClick: this.onBlockClicked
|
||||
onClick: this.onBlockClicked,
|
||||
ref: this.setBlockButtonRef
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -8452,7 +8442,10 @@ class SnippetBase_SnippetBase extends external_React_default.a.PureComponent {
|
|||
const {
|
||||
props
|
||||
} = this;
|
||||
const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : ""}`;
|
||||
const {
|
||||
blockButtonHover
|
||||
} = this.state;
|
||||
const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : ""}${blockButtonHover ? " active" : ""}`;
|
||||
return external_React_default.a.createElement("div", {
|
||||
className: containerClassName,
|
||||
style: this.props.textStyle
|
||||
|
@ -8777,7 +8770,7 @@ const EOYSnippet = props => {
|
|||
}));
|
||||
};
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/templates/FXASignupSnippet/FXASignupSnippet.schema.json
|
||||
var FXASignupSnippet_schema = __webpack_require__(21);
|
||||
var FXASignupSnippet_schema = __webpack_require__(22);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx
|
||||
function SubmitFormSnippet_extends() { SubmitFormSnippet_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; }; return SubmitFormSnippet_extends.apply(this, arguments); }
|
||||
|
@ -9111,7 +9104,7 @@ const FXASignupSnippet = props => {
|
|||
}));
|
||||
};
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.schema.json
|
||||
var NewsletterSnippet_schema = __webpack_require__(22);
|
||||
var NewsletterSnippet_schema = __webpack_require__(23);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx
|
||||
function NewsletterSnippet_extends() { NewsletterSnippet_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; }; return NewsletterSnippet_extends.apply(this, arguments); }
|
||||
|
@ -9184,7 +9177,7 @@ function isEmailOrPhoneNumber(val, content) {
|
|||
return "";
|
||||
}
|
||||
// EXTERNAL MODULE: ./content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.schema.json
|
||||
var SendToDeviceSnippet_schema = __webpack_require__(23);
|
||||
var SendToDeviceSnippet_schema = __webpack_require__(24);
|
||||
|
||||
// CONCATENATED MODULE: ./content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.jsx
|
||||
function SendToDeviceSnippet_extends() { SendToDeviceSnippet_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; }; return SendToDeviceSnippet_extends.apply(this, arguments); }
|
||||
|
@ -9315,7 +9308,7 @@ const SnippetsTemplates = {
|
|||
};
|
||||
|
||||
/***/ }),
|
||||
/* 54 */
|
||||
/* 53 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -11518,7 +11511,7 @@ function ftl(strings) {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 55 */
|
||||
/* 54 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -11532,7 +11525,7 @@ var external_PropTypes_ = __webpack_require__(12);
|
|||
var external_PropTypes_default = /*#__PURE__*/__webpack_require__.n(external_PropTypes_);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/fluent/src/index.js + 8 modules
|
||||
var src = __webpack_require__(54);
|
||||
var src = __webpack_require__(53);
|
||||
|
||||
// CONCATENATED MODULE: ./node_modules/fluent-react/src/localization.js
|
||||
|
||||
|
@ -12046,7 +12039,7 @@ localized_Localized.propTypes = {
|
|||
|
||||
|
||||
/***/ }),
|
||||
/* 56 */
|
||||
/* 55 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -12890,7 +12883,7 @@ var reducers = {
|
|||
};
|
||||
|
||||
/***/ }),
|
||||
/* 57 */
|
||||
/* 56 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
@ -12930,7 +12923,7 @@ const cardContextTypes = {
|
|||
}
|
||||
};
|
||||
// EXTERNAL MODULE: external "ReactRedux"
|
||||
var external_ReactRedux_ = __webpack_require__(25);
|
||||
var external_ReactRedux_ = __webpack_require__(26);
|
||||
|
||||
// EXTERNAL MODULE: ./content-src/lib/link-menu-options.js
|
||||
var link_menu_options = __webpack_require__(31);
|
||||
|
@ -13282,7 +13275,7 @@ const PlaceholderCard = props => external_React_default.a.createElement(Card, {
|
|||
});
|
||||
|
||||
/***/ }),
|
||||
/* 58 */
|
||||
/* 57 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g fill="context-fill"><path d="M13.374 1H4.623A2.83 2.83 0 0 0 2 4v4h2V4a.928.928 0 0 1 .833-1h8.333A.928.928 0 0 1 14 4v8a.928.928 0 0 1-.833 1H4.833A.928.928 0 0 1 4 12v-1H2v1a2.833 2.833 0 0 0 2.627 3h9.623A1.888 1.888 0 0 0 16 13V4a2.833 2.833 0 0 0-2.626-3z"/><path d="M7.146 11.146a.5.5 0 1 0 .707.707l2-2a.5.5 0 0 0 0-.707l-2-2a.5.5 0 0 0-.707.707L8.293 9H1.5a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 1.5 10h6.793z"/></g></svg>
|
До Ширина: | Высота: | Размер: 505 B |
|
@ -15,7 +15,6 @@ ChromeUtils.defineModuleGetter(this, "UpdateUtils",
|
|||
const {actionCreators: ac, actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm");
|
||||
const {AboutPreferences} = ChromeUtils.import("resource://activity-stream/lib/AboutPreferences.jsm");
|
||||
const {DefaultPrefs} = ChromeUtils.import("resource://activity-stream/lib/ActivityStreamPrefs.jsm");
|
||||
const {ManualMigration} = ChromeUtils.import("resource://activity-stream/lib/ManualMigration.jsm");
|
||||
const {NewTabInit} = ChromeUtils.import("resource://activity-stream/lib/NewTabInit.jsm");
|
||||
const {SectionsFeed} = ChromeUtils.import("resource://activity-stream/lib/SectionsManager.jsm");
|
||||
const {PlacesFeed} = ChromeUtils.import("resource://activity-stream/lib/PlacesFeed.jsm");
|
||||
|
@ -93,18 +92,6 @@ const PREFS_CONFIG = new Map([
|
|||
title: "Remove adult pages from sites, highlights, etc.",
|
||||
value: true,
|
||||
}],
|
||||
["migrationExpired", {
|
||||
title: "Boolean flag that decides whether to show the migration message or not.",
|
||||
value: false,
|
||||
}],
|
||||
["migrationLastShownDate", {
|
||||
title: "Timestamp when migration message was last shown. In seconds.",
|
||||
value: 0,
|
||||
}],
|
||||
["migrationRemainingDays", {
|
||||
title: "Number of days to show the manual migration message",
|
||||
value: 4,
|
||||
}],
|
||||
["prerender", {
|
||||
title: "Use the prerendered version of activity-stream.html. This is set automatically by PrefsFeed.jsm.",
|
||||
value: true,
|
||||
|
@ -248,7 +235,7 @@ const PREFS_CONFIG = new Map([
|
|||
collapsible: true,
|
||||
enabled: isEnabled,
|
||||
show_spocs: showSpocs({geo}),
|
||||
hardcoded_layout: false,
|
||||
hardcoded_layout: true,
|
||||
personalized: false,
|
||||
// This is currently an exmple layout used for dev purposes.
|
||||
layout_endpoint: "https://getpocket.cdn.mozilla.net/v3/newtab/layout?version=1&consumer_key=$apiKey&layout_variant=basic",
|
||||
|
@ -283,12 +270,6 @@ const FEEDS_DATA = [
|
|||
title: "about:preferences rendering",
|
||||
value: true,
|
||||
},
|
||||
{
|
||||
name: "migration",
|
||||
factory: () => new ManualMigration(),
|
||||
title: "Manual migration wizard",
|
||||
value: true,
|
||||
},
|
||||
{
|
||||
name: "newtabinit",
|
||||
factory: () => new NewTabInit(),
|
||||
|
|
|
@ -413,8 +413,17 @@ this.DiscoveryStreamFeed = class DiscoveryStreamFeed {
|
|||
}
|
||||
}
|
||||
|
||||
scoreItems(item) {
|
||||
scoreItems(items) {
|
||||
return items.map(item => this.scoreItem(item))
|
||||
// Remove spocs that are scored too low.
|
||||
.filter(s => s.score >= s.min_score)
|
||||
// Sort by highest scores.
|
||||
.sort((a, b) => b.score - a.score);
|
||||
}
|
||||
|
||||
scoreItem(item) {
|
||||
item.score = item.item_score;
|
||||
item.min_score = item.min_score || 0;
|
||||
if (item.score !== 0 && !item.score) {
|
||||
item.score = 1;
|
||||
}
|
||||
|
@ -445,14 +454,9 @@ this.DiscoveryStreamFeed = class DiscoveryStreamFeed {
|
|||
const campaignMap = {};
|
||||
return {
|
||||
...data,
|
||||
spocs: data.spocs
|
||||
// This order of operations is intended.
|
||||
// scoreItems must be first because it creates this.score.
|
||||
.map(item => this.scoreItems(item))
|
||||
// Remove spocs that are scored too low.
|
||||
.filter(s => s.score >= s.min_score)
|
||||
// Sort by highest scores.
|
||||
.sort((a, b) => b.score - a.score)
|
||||
// This order of operations is intended.
|
||||
// scoreItems must be first because it creates this.score.
|
||||
spocs: this.scoreItems(data.spocs)
|
||||
// This removes campaign dupes.
|
||||
// We do this only after scoring and sorting because that way
|
||||
// we can keep the first item we see, and end up keeping the highest scored.
|
||||
|
@ -541,10 +545,16 @@ this.DiscoveryStreamFeed = class DiscoveryStreamFeed {
|
|||
if (this.isExpired({cachedData, key: "feed", url: feedUrl, isStartup})) {
|
||||
const feedResponse = await this.fetchFromEndpoint(feedUrl);
|
||||
if (feedResponse) {
|
||||
const scoredItems = this.scoreItems(feedResponse.recommendations);
|
||||
const {recsExpireTime} = feedResponse.settings;
|
||||
const recommendations = this.rotate(scoredItems, recsExpireTime);
|
||||
this.componentFeedFetched = true;
|
||||
feed = {
|
||||
lastUpdated: Date.now(),
|
||||
data: this.rotate(feedResponse),
|
||||
data: {
|
||||
...feedResponse,
|
||||
recommendations,
|
||||
},
|
||||
};
|
||||
} else {
|
||||
Cu.reportError("No response for feed");
|
||||
|
@ -600,10 +610,8 @@ this.DiscoveryStreamFeed = class DiscoveryStreamFeed {
|
|||
// We have to rotate stories on the client so that
|
||||
// active stories are at the front of the list, followed by stories that have expired
|
||||
// impressions i.e. have been displayed for longer than recsExpireTime.
|
||||
rotate(feedResponse) {
|
||||
const {recommendations} = feedResponse;
|
||||
|
||||
const maxImpressionAge = Math.max(feedResponse.settings.recsExpireTime * 1000 || DEFAULT_RECS_EXPIRE_TIME, DEFAULT_RECS_EXPIRE_TIME);
|
||||
rotate(recommendations, recsExpireTime) {
|
||||
const maxImpressionAge = Math.max(recsExpireTime * 1000 || DEFAULT_RECS_EXPIRE_TIME, DEFAULT_RECS_EXPIRE_TIME);
|
||||
const impressions = this.readImpressionsPref(PREF_REC_IMPRESSIONS);
|
||||
const expired = [];
|
||||
const active = [];
|
||||
|
@ -614,7 +622,7 @@ this.DiscoveryStreamFeed = class DiscoveryStreamFeed {
|
|||
active.push(item);
|
||||
}
|
||||
}
|
||||
return {...feedResponse, recommendations: active.concat(expired)};
|
||||
return active.concat(expired);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -856,7 +864,9 @@ this.DiscoveryStreamFeed = class DiscoveryStreamFeed {
|
|||
// store if the SPOCs are changed.
|
||||
const {spocs} = this.store.getState().DiscoveryStream;
|
||||
const newSpocs = this.frequencyCapSpocs(spocs.data);
|
||||
if (spocs.data.spocs.length !== newSpocs.spocs.length) {
|
||||
const prevSpocs = spocs.data.spocs || [];
|
||||
const currentSpocs = newSpocs.spocs || [];
|
||||
if (prevSpocs.length !== currentSpocs.length) {
|
||||
this.store.dispatch(ac.AlsoToPreloaded({
|
||||
type: at.DISCOVERY_STREAM_SPOCS_UPDATE,
|
||||
data: {
|
||||
|
@ -930,38 +940,12 @@ defaultLayoutResp = {
|
|||
],
|
||||
},
|
||||
{
|
||||
"width": 8,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"header": {
|
||||
"title": "",
|
||||
},
|
||||
"feed": {
|
||||
"embed_reference": null,
|
||||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?version=3&consumer_key=$apiKey&locale_lang=en-US",
|
||||
},
|
||||
"properties": {
|
||||
"items": 8,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
},
|
||||
"styles": {
|
||||
".ds-list": "margin-right: -12px",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"width": 4,
|
||||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "CardGrid",
|
||||
"properties": {
|
||||
"items": 1,
|
||||
"border": "no-border",
|
||||
"offset": 8,
|
||||
"items": 4,
|
||||
},
|
||||
"header": {
|
||||
"title": "",
|
||||
|
@ -970,15 +954,11 @@ defaultLayoutResp = {
|
|||
"embed_reference": null,
|
||||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?version=3&consumer_key=$apiKey&locale_lang=en-US",
|
||||
},
|
||||
"styles": {
|
||||
".ds-card": "margin-left: -12px;",
|
||||
".ds-card .meta .excerpt": "max-height: 100px;",
|
||||
},
|
||||
"spocs": {
|
||||
"probability": 1,
|
||||
"positions": [
|
||||
{
|
||||
"index": 0,
|
||||
"index": 3,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -989,7 +969,7 @@ defaultLayoutResp = {
|
|||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"type": "CardGrid",
|
||||
"header": {
|
||||
"title": "Health & Fitness 💪",
|
||||
},
|
||||
|
@ -998,7 +978,7 @@ defaultLayoutResp = {
|
|||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?topic_id=4&duration=2592000&end_time_offset=172800&version=3&consumer_key=$apiKey&locale_lang=en-US&feed_variant=OptimalCuratedLinksForLocaleFeed&model_id=external_time_live",
|
||||
},
|
||||
"properties": {
|
||||
"items": 6,
|
||||
"items": 4,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
|
@ -1007,7 +987,7 @@ defaultLayoutResp = {
|
|||
"probability": 1,
|
||||
"positions": [
|
||||
{
|
||||
"index": 5,
|
||||
"index": 3,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -1018,7 +998,7 @@ defaultLayoutResp = {
|
|||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"type": "CardGrid",
|
||||
"header": {
|
||||
"title": "Tech 🖥",
|
||||
},
|
||||
|
@ -1027,7 +1007,7 @@ defaultLayoutResp = {
|
|||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?topic_id=5&duration=2592000&end_time_offset=172800&version=3&consumer_key=$apiKey&locale_lang=en-US&feed_variant=OptimalCuratedLinksForLocaleFeed&model_id=external_time_live",
|
||||
},
|
||||
"properties": {
|
||||
"items": 6,
|
||||
"items": 4,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
|
@ -1039,7 +1019,7 @@ defaultLayoutResp = {
|
|||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"type": "CardGrid",
|
||||
"header": {
|
||||
"title": "Entertainment 🍿",
|
||||
},
|
||||
|
@ -1048,7 +1028,7 @@ defaultLayoutResp = {
|
|||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?topic_id=8&duration=2592000&end_time_offset=172800&version=3&consumer_key=$apiKey&locale_lang=en-US&feed_variant=OptimalCuratedLinksForLocaleFeed&model_id=external_time_live",
|
||||
},
|
||||
"properties": {
|
||||
"items": 6,
|
||||
"items": 4,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
|
@ -1057,7 +1037,7 @@ defaultLayoutResp = {
|
|||
"probability": 1,
|
||||
"positions": [
|
||||
{
|
||||
"index": 5,
|
||||
"index": 3,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -1068,7 +1048,7 @@ defaultLayoutResp = {
|
|||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"type": "CardGrid",
|
||||
"header": {
|
||||
"title": "Personal Finance 💰",
|
||||
},
|
||||
|
@ -1077,7 +1057,7 @@ defaultLayoutResp = {
|
|||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?topic_id=2&duration=2592000&end_time_offset=172800&version=3&consumer_key=$apiKey&locale_lang=en-US&feed_variant=OptimalCuratedLinksForLocaleFeed&model_id=external_time_live",
|
||||
},
|
||||
"properties": {
|
||||
"items": 6,
|
||||
"items": 4,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
|
@ -1089,7 +1069,7 @@ defaultLayoutResp = {
|
|||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"type": "CardGrid",
|
||||
"header": {
|
||||
"title": "Business 💼",
|
||||
},
|
||||
|
@ -1098,7 +1078,7 @@ defaultLayoutResp = {
|
|||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?topic_id=1&duration=2592000&end_time_offset=172800&version=3&consumer_key=$apiKey&locale_lang=en-US&feed_variant=OptimalCuratedLinksForLocaleFeed&model_id=external_time_live",
|
||||
},
|
||||
"properties": {
|
||||
"items": 6,
|
||||
"items": 4,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
|
@ -1110,7 +1090,7 @@ defaultLayoutResp = {
|
|||
"width": 12,
|
||||
"components": [
|
||||
{
|
||||
"type": "List",
|
||||
"type": "CardGrid",
|
||||
"header": {
|
||||
"title": "Science 🔬",
|
||||
},
|
||||
|
@ -1119,7 +1099,7 @@ defaultLayoutResp = {
|
|||
"url": "https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?topic_id=7&duration=2592000&end_time_offset=172800&version=3&consumer_key=$apiKey&locale_lang=en-US&feed_variant=OptimalCuratedLinksForLocaleFeed&model_id=external_time_live",
|
||||
},
|
||||
"properties": {
|
||||
"items": 6,
|
||||
"items": 4,
|
||||
"has_numbers": false,
|
||||
"has_images": true,
|
||||
"border": "no-border",
|
||||
|
@ -1128,7 +1108,7 @@ defaultLayoutResp = {
|
|||
"probability": 1,
|
||||
"positions": [
|
||||
{
|
||||
"index": 5,
|
||||
"index": 3,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
@ -245,7 +245,6 @@ this.HighlightsFeed = class HighlightsFeed {
|
|||
this.fetchHighlights({broadcast: true});
|
||||
}
|
||||
break;
|
||||
case at.MIGRATION_COMPLETED:
|
||||
case at.PLACES_HISTORY_CLEARED:
|
||||
case at.PLACES_LINK_BLOCKED:
|
||||
case at.DOWNLOAD_CHANGED:
|
||||
|
|
|
@ -1,114 +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/. */
|
||||
"use strict";
|
||||
|
||||
const {actionCreators: ac, actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm");
|
||||
|
||||
const MIGRATION_ENDED_EVENT = "Migration:Ended";
|
||||
const MS_PER_DAY = 86400000;
|
||||
|
||||
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
|
||||
ChromeUtils.defineModuleGetter(this, "ProfileAge", "resource://gre/modules/ProfileAge.jsm");
|
||||
|
||||
this.ManualMigration = class ManualMigration {
|
||||
constructor() {
|
||||
Services.obs.addObserver(this, MIGRATION_ENDED_EVENT);
|
||||
}
|
||||
|
||||
get migrationLastShownDate() {
|
||||
return this.store.getState().Prefs.values.migrationLastShownDate;
|
||||
}
|
||||
|
||||
set migrationLastShownDate(newDate) {
|
||||
this.store.dispatch(ac.SetPref("migrationLastShownDate", newDate));
|
||||
}
|
||||
|
||||
get migrationRemainingDays() {
|
||||
return this.store.getState().Prefs.values.migrationRemainingDays;
|
||||
}
|
||||
|
||||
set migrationRemainingDays(newDate) {
|
||||
this.store.dispatch(ac.SetPref("migrationRemainingDays", newDate));
|
||||
}
|
||||
|
||||
uninit() {
|
||||
Services.obs.removeObserver(this, MIGRATION_ENDED_EVENT);
|
||||
}
|
||||
|
||||
async isMigrationMessageExpired() {
|
||||
let profileAge = await ProfileAge();
|
||||
let profileCreationDate = await profileAge.created;
|
||||
let daysSinceProfileCreation = (Date.now() - profileCreationDate) / MS_PER_DAY;
|
||||
|
||||
// We don't want to show the migration message to profiles older than 3 days.
|
||||
if (daysSinceProfileCreation > 3) {
|
||||
return true;
|
||||
}
|
||||
|
||||
let migrationLastShownDate = new Date(this.migrationLastShownDate * 1000);
|
||||
let today = new Date();
|
||||
// Round down to midnight.
|
||||
today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
||||
if (migrationLastShownDate < today) {
|
||||
let migrationRemainingDays = this.migrationRemainingDays - 1;
|
||||
|
||||
this.migrationRemainingDays = migrationRemainingDays;
|
||||
|
||||
// .valueOf returns a value that is too large to store so we need to divide by 1000.
|
||||
this.migrationLastShownDate = today.valueOf() / 1000;
|
||||
|
||||
if (migrationRemainingDays <= 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* While alreadyExpired is false the migration message is displayed and we also
|
||||
* keep checking if we should expire it. Broadcast expiration to store.
|
||||
*
|
||||
* @param {bool} alreadyExpired Pref flag that is false for the first 3 active days,
|
||||
* time in which we display the migration message to the user.
|
||||
*/
|
||||
async expireIfNecessary(alreadyExpired) {
|
||||
if (!alreadyExpired && await this.isMigrationMessageExpired()) {
|
||||
this.expireMigration();
|
||||
}
|
||||
}
|
||||
|
||||
expireMigration() {
|
||||
this.store.dispatch(ac.SetPref("migrationExpired", true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for migration wizard completion event.
|
||||
*/
|
||||
observe() {
|
||||
this.expireMigration();
|
||||
this.store.dispatch({type: at.MIGRATION_COMPLETED});
|
||||
}
|
||||
|
||||
async onAction(action) {
|
||||
switch (action.type) {
|
||||
case at.PREFS_INITIAL_VALUES:
|
||||
await this.expireIfNecessary(action.data.migrationExpired);
|
||||
break;
|
||||
case at.MIGRATION_START:
|
||||
MigrationUtils.showMigrationWizard(action._target.browser.ownerGlobal, [MigrationUtils.MIGRATION_ENTRYPOINT_NEWTAB]);
|
||||
break;
|
||||
case at.MIGRATION_CANCEL:
|
||||
this.expireMigration();
|
||||
break;
|
||||
case at.UNINIT:
|
||||
this.uninit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const EXPORTED_SYMBOLS = ["ManualMigration"];
|
|
@ -650,7 +650,6 @@ this.TopSitesFeed = class TopSitesFeed {
|
|||
this.refresh({broadcast: false});
|
||||
break;
|
||||
// All these actions mean we need new top sites
|
||||
case at.MIGRATION_COMPLETED:
|
||||
case at.PLACES_HISTORY_CLEARED:
|
||||
case at.PLACES_LINK_DELETED:
|
||||
this.frecentCache.expire();
|
||||
|
|
|
@ -93,6 +93,8 @@ prefs_home_header=Περιεχόμενο αρχικής σελίδας Firefox
|
|||
prefs_home_description=Επιλέξτε τι περιεχόμενο θέλετε στην αρχική σελίδα του Firefox σας.
|
||||
|
||||
prefs_content_discovery_header=Αρχική Firefox
|
||||
|
||||
prefs_content_discovery_description=Η ανακάλυψη περιεχομένου στην Αρχική Firefox σάς επιτρέπει να ανακαλύψετε υψηλής ποιότητας, σχετικά άρθρα από όλο τον ιστό.
|
||||
prefs_content_discovery_button=Απενεργοποίηση ανακάλυψης περιεχομένου
|
||||
|
||||
# LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of
|
||||
|
|
|
@ -157,16 +157,6 @@ highlights_empty_state=Start browsing, and we’ll show some of the great articl
|
|||
# {provider} is replaced by the name of the content provider for this section.
|
||||
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.
|
||||
|
||||
# LOCALIZATION NOTE (manual_migration_explanation2): This message is shown to encourage users to
|
||||
# import their browser profile from another browser they might be using.
|
||||
manual_migration_explanation2=Try Firefox with the bookmarks, history and passwords from another browser.
|
||||
# LOCALIZATION NOTE (manual_migration_cancel_button): This message is shown on a button that cancels the
|
||||
# process of importing another browser’s profile into Firefox.
|
||||
manual_migration_cancel_button=No Thanks
|
||||
# LOCALIZATION NOTE (manual_migration_import_button): This message is shown on a button that starts the process
|
||||
# of importing another browser’s profile profile into Firefox.
|
||||
manual_migration_import_button=Import Now
|
||||
|
||||
# LOCALIZATION NOTE (error_fallback_default_*): This message and suggested
|
||||
# action link are shown in each section of UI that fails to render
|
||||
error_fallback_default_info=Oops, something went wrong loading this content.
|
||||
|
|
|
@ -4,7 +4,7 @@ header_top_sites=Trang web hàng đầu
|
|||
header_highlights=Nổi bật
|
||||
# LOCALIZATION NOTE(header_recommended_by): This is followed by the name
|
||||
# of the corresponding content provider.
|
||||
header_recommended_by=Được đề nghị bởi {provider}
|
||||
header_recommended_by=Được đề xuất bởi {provider}
|
||||
|
||||
# LOCALIZATION NOTE(context_menu_button_sr): This is for screen readers when
|
||||
# the context menu button is focused/active. Title is the label or hostname of
|
||||
|
@ -93,6 +93,7 @@ prefs_home_header=Nội dung trang chủ của Firefox
|
|||
prefs_home_description=Chọn nội dung mà bạn muốn thêm vào trang chủ của Firefox.
|
||||
|
||||
prefs_content_discovery_header=Trang chủ Firefox
|
||||
|
||||
prefs_content_discovery_description=Khám phá nội dung trong trang chủ Firefox cho phép bạn khám phá các bài viết chất lượng cao, có liên quan trên web.
|
||||
prefs_content_discovery_button=Tắt khám phá nội dung
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ach" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Dirica matidi manyen</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Gwok lok ma imaro ii Pocket, ka i pik wii ki jami me akwana ma mako wii.",
|
||||
"highlights_empty_state": "Cak yeny, ka wa binyuto coc akwana mabeco, video, ki potbuk mukene ma ilimo cokcokki onyo ma kiketo alamabuk kany.",
|
||||
"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": "Aii, gin mo otime marac i cano jami man.",
|
||||
"error_fallback_default_refresh_suggestion": "Nwo cano potbuk me temo odoco.",
|
||||
"section_menu_action_remove_section": "Kwany bute",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ach" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Dirica matidi manyen</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/ach/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/ach/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="an" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Nueva Pestanya</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.",
|
||||
"highlights_empty_state": "Empecipia a navegar, y t'iremos amostrando aquí grans articlos, videos y atras pachinas que has vesitau u marcau en zagueras.",
|
||||
"topstories_empty_state": "Ya ye tot per agora. Torna mas ta debant pa veyer mas articlos populars de {provider}. No i puetz aguardar? Tría un tema popular pa descubrir los articlos mas interesants de tot lo web.",
|
||||
"manual_migration_explanation2": "Preba lo Firefox con as adrezas d'interés, l'historial y las claus de belatro navegador.",
|
||||
"manual_migration_cancel_button": "No, gracias",
|
||||
"manual_migration_import_button": "Importar-lo agora",
|
||||
"error_fallback_default_info": "Oi, ha fallau bella cosa en a carga d'este conteniu.",
|
||||
"error_fallback_default_refresh_suggestion": "Refrescar la pachina pa tornar-lo a intentar.",
|
||||
"section_menu_action_remove_section": "Borrar la sección",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="an" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Nueva Pestanya</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/an/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/an/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ar" dir="rtl">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>لسان جديد</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "احفظ القصص التي تحبّها في بوكِت، وزوّد عقلك بمقالات رائعة.",
|
||||
"highlights_empty_state": "ابدأ التصفح وسنعرض أمامك بعض المقالات والفيديوهات والمواقع الأخرى التي زرتها حديثا أو أضفتها إلى العلامات هنا.",
|
||||
"topstories_empty_state": "لا جديد. تحقق لاحقًا للحصول على مزيد من أهم الأخبار من {provider}. لا يمكنك الانتظار؟ اختر موضوعًا شائعًا للعثور على المزيد من القصص الرائعة من جميع أنحاء الوِب.",
|
||||
"manual_migration_explanation2": "جرب فَيَرفُكس مع العلامات، و التأريخ، و كلمات السر من متصفح آخر.",
|
||||
"manual_migration_cancel_button": "لا شكرًا",
|
||||
"manual_migration_import_button": "استورد الآن",
|
||||
"error_fallback_default_info": "أخ! حدث خطب ما أثناء تحميل المحتوى.",
|
||||
"error_fallback_default_refresh_suggestion": "أنعِش الصفحة لإعادة المحاولة.",
|
||||
"section_menu_action_remove_section": "أزِل القسم",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ar" dir="rtl">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>لسان جديد</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/ar/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/ar/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ast" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Llingüeta nueva</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.",
|
||||
"highlights_empty_state": "Start browsing, and we’ll show some of the great articles, videos, and other pages you’ve recently visited or bookmarked here.",
|
||||
"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.",
|
||||
"section_menu_action_remove_section": "Remove Section",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ast" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Llingüeta nueva</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/ast/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/ast/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="az" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Yeni Vərəq</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Sevdiyiniz məqalələri Pocket-də saxlayın və möhtəşəm yeni yazıları kəşf edin.",
|
||||
"highlights_empty_state": "İnternetdə gəzməyə başlayın, burada ziyarət edəcəyiniz və ya əlfəcinləyəcəyiniz məqalə, video və digər səhifələri göstərəcəyik.",
|
||||
"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": "Uups, bu məzmunu yüklərkən nəsə səhv getdi.",
|
||||
"error_fallback_default_refresh_suggestion": "Təkrar yoxlamaq üçün səhifəni yeniləyin.",
|
||||
"section_menu_action_remove_section": "Bölməni Sil",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="az" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Yeni Vərəq</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/az/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/az/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="be" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Новая картка</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Захоўвайце ўлюбёныя гісторыі ў Pocket, і сілкуйце свой розум добрай чытанкай.",
|
||||
"highlights_empty_state": "Пачніце агляданне, і мы пакажам вам тут некаторыя з найлепшых артыкулаў, відэаролікаў і іншых старонак, якія вы нядаўна наведалі або дадалі ў закладкі.",
|
||||
"topstories_empty_state": "Гатова. Праверце пазней, каб убачыць больш матэрыялаў ад {provider}. Не жадаеце чакаць? Выберыце папулярную тэму, каб знайсці больш цікавых матэрыялаў з усяго Інтэрнэту.",
|
||||
"manual_migration_explanation2": "Паспрабуйце Firefox з закладкамі, гісторыяй і паролямі з іншага браўзера.",
|
||||
"manual_migration_cancel_button": "Не, дзякуй",
|
||||
"manual_migration_import_button": "Імпартаваць зараз",
|
||||
"error_fallback_default_info": "Ох, нешта пайшло не так пры загрузцы гэтага змесціва.",
|
||||
"error_fallback_default_refresh_suggestion": "Абнавіць старонку, каб паўтарыць спробу.",
|
||||
"section_menu_action_remove_section": "Выдаліць раздзел",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="be" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Новая картка</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/be/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/be/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="bg" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Нов раздел</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Запазете статиите, които харесвате в Pocket и заредете ума си с увлекателни четива.",
|
||||
"highlights_empty_state": "Разглеждайте и тук ще ви покажем някои от най-добрите статии, видео и други страници, които сте посетили или отметнали наскоро.",
|
||||
"topstories_empty_state": "Разгледахте всичко. Проверете по-късно за повече истории от {provider}. Нямате търпение? Изберете популярна тема, за да откриете повече истории от цялата Мрежа.",
|
||||
"manual_migration_explanation2": "Опитайте Firefox с отметките, историята и паролите от друг мрежови четец.",
|
||||
"manual_migration_cancel_button": "Не, благодаря",
|
||||
"manual_migration_import_button": "Внасяне",
|
||||
"error_fallback_default_info": "Ааах, нещо се обърка и съдържанието не е заредено.",
|
||||
"error_fallback_default_refresh_suggestion": "Презаредете страницата за повторен опит.",
|
||||
"section_menu_action_remove_section": "Премахване на раздела",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="bg" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Нов раздел</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/bg/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/bg/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="bn" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>নতুন ট্যাব</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Pocket এ আপনার পছন্দের গল্পগুলো সংরক্ষণ করুন, এবং চমৎকার সব লেখা পড়ে আপনার মনের ইন্ধন যোগান।",
|
||||
"highlights_empty_state": "ব্রাউজি করা শুরু করুন, এবং কিছু গুরুত্বপূর্ণ নিবন্ধ, ভিডিও, এবং আপনি সম্প্রতি পরিদর্শন বা বুকমার্ক করেছেন এমন কিছু পৃষ্ঠা আমরা এখানে প্রদর্শন করব।",
|
||||
"topstories_empty_state": "কিছু একটা ঠিক নেই। {provider} এর শীর্ষ গল্পগুলো পেতে কিছুক্ষণ পর আবার দেখুন। অপেক্ষা করতে চান না? বিশ্বের সেরা গল্পগুলো পেতে কোন জনপ্রিয় বিষয় নির্বাচন করুন।",
|
||||
"manual_migration_explanation2": "অন্য ব্রাউজার থেকে আনা বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডগুলির সাথে ফায়ারফক্স ব্যবহার করে দেখুন।",
|
||||
"manual_migration_cancel_button": "প্রয়োজন নেই",
|
||||
"manual_migration_import_button": "এখনই ইম্পোর্ট করুন",
|
||||
"error_fallback_default_info": "ওহো, কনটেন্টটি লোড করতে কিছু ভুল হয়েছে।",
|
||||
"error_fallback_default_refresh_suggestion": "পুনরায় চেস্টা করার জন্য পেজটি রিফ্রেশ করুন।",
|
||||
"section_menu_action_remove_section": "সেকশনটি সরান",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="bn" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>নতুন ট্যাব</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/bn/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/bn/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="br" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Ivinell nevez</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Enrollit pennadoù a-zoare e Pocket ha magit ho spered gant lennadennoù boemus.",
|
||||
"highlights_empty_state": "Krogit da verdeiñ hag e tiskouezimp deoc’h pennadoù, videoioù ha pajennoù all gweladennet pe lakaet er sinedoù nevez ’zo.",
|
||||
"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": "Enporzhiañ bremañ",
|
||||
"error_fallback_default_info": "Chaous, un dra bennak a zo a-dreuz en ur gargañ an endalc'had.",
|
||||
"error_fallback_default_refresh_suggestion": "Adkargit ar bajenn evit klask en-dro.",
|
||||
"section_menu_action_remove_section": "Dilemel ar gevrenn",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="br" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Ivinell nevez</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/br/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/br/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="bs" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Novi tab</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.",
|
||||
"highlights_empty_state": "Započnite pretraživati i pokazat ćemo vam neke od izvrsnih članaka, videa i drugih web stranica prema vašim nedavno posjećenim stranicama ili zabilješkama.",
|
||||
"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": "Ups, došlo je do greške pri učitavanju ovog sadržaja.",
|
||||
"error_fallback_default_refresh_suggestion": "Osvježite stranicu da biste pokušali ponovo.",
|
||||
"section_menu_action_remove_section": "Ukloni sekciju",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="bs" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Novi tab</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/bs/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/bs/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ca" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Pestanya nova</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Deseu els vostres articles preferits al Pocket i gaudiu d'altres recomanacions fascinants.",
|
||||
"highlights_empty_state": "Comenceu a navegar i aquí us mostrarem els millors articles, vídeos i altres pàgines que hàgiu visitat o afegit a les adreces d'interès recentment.",
|
||||
"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": "Vaja, s'ha produït un error en carregar aquest contingut.",
|
||||
"error_fallback_default_refresh_suggestion": "Actualitzeu la pàgina per tornar-ho a provar.",
|
||||
"section_menu_action_remove_section": "Elimina la secció",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="ca" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Pestanya nova</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/ca/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/ca/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="cak" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>K'ak'a' ruwi'</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Ke'ayaka' ri taq b'anob'äl ye'awajo' pa Pocket, chuqa' taya' ruchuq'a' ajolom kik'in jeb'ël taq sik'inïk.",
|
||||
"highlights_empty_state": "Katok pa k'amaya'l richin niqak'üt chawäch jeb'ël taq cholna'oj, taq silowachib'äl, chuqa' ch'aqa' chik taq ruxaq k'a b'a' ke'atz'ët o aya'on kan ketal wawe'.",
|
||||
"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": "Uy, k'o jun itzel xel toq nisamajib'ëx re rupam re'.",
|
||||
"error_fallback_default_refresh_suggestion": "Titzolïx ruxaq richin nitojtob'ëx chik.",
|
||||
"section_menu_action_remove_section": "Tiyuj Tanaj",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="cak" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>K'ak'a' ruwi'</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/cak/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/cak/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="crh" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Yañı İlmek</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Save the stories you love in Pocket, and fuel your mind with fascinating reads.",
|
||||
"highlights_empty_state": "Start browsing, and we’ll show some of the great articles, videos, and other pages you’ve recently visited or bookmarked here.",
|
||||
"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": "Hayır, Teşekkürler",
|
||||
"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.",
|
||||
"section_menu_action_remove_section": "Kesimni Çetleştir",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="crh" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Yañı İlmek</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/crh/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/crh/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="cs" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Nový panel</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -81,9 +81,6 @@ window.gActivityStreamStrings = {
|
|||
"pocket_cta_text": "Ukládejte si články do služby Pocket a užívejte si skvělé čtení.",
|
||||
"highlights_empty_state": "Začněte prohlížet a my vám zde ukážeme některé skvělé články, videa a další stránky, které jste nedávno viděli nebo uložili do záložek.",
|
||||
"topstories_empty_state": "Už jste všechno přečetli. Další články 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é články 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": "Jejda, při načítání tohoto obsahu se něco pokazilo.",
|
||||
"error_fallback_default_refresh_suggestion": "Obnovte prosím stránku a zkuste to znovu.",
|
||||
"section_menu_action_remove_section": "Odebrat sekci",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="cs" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Nový panel</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,30 +10,16 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<script>
|
||||
// Don't directly load the following scripts as part of html to let the page
|
||||
// finish loading to render the content sooner.
|
||||
for (const src of [
|
||||
"chrome://browser/content/contentSearchUI.js",
|
||||
"chrome://browser/content/contentTheme.js",
|
||||
"resource://activity-stream/vendor/react.js",
|
||||
"resource://activity-stream/vendor/react-dom.js",
|
||||
"resource://activity-stream/vendor/prop-types.js",
|
||||
"resource://activity-stream/vendor/react-intl.js",
|
||||
"resource://activity-stream/vendor/redux.js",
|
||||
"resource://activity-stream/vendor/react-redux.js",
|
||||
"resource://activity-stream/prerendered/cs/activity-stream-strings.js",
|
||||
"resource://activity-stream/data/content/activity-stream.bundle.js"
|
||||
]) {
|
||||
// These dynamically inserted scripts by default are async, but we need them
|
||||
// to load in the desired order (i.e., bundle last).
|
||||
const script = document.body.appendChild(document.createElement("script"));
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
}
|
||||
</script>
|
||||
<div id="footer-snippets-container" />
|
||||
<script src="chrome://browser/content/contentSearchUI.js"></script>
|
||||
<script src="chrome://browser/content/contentTheme.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-dom.js"></script>
|
||||
<script src="resource://activity-stream/vendor/prop-types.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-intl.js"></script>
|
||||
<script src="resource://activity-stream/vendor/redux.js"></script>
|
||||
<script src="resource://activity-stream/vendor/react-redux.js"></script>
|
||||
<script src="resource://activity-stream/prerendered/cs/activity-stream-strings.js"></script>
|
||||
<script src="resource://activity-stream/data/content/activity-stream.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="cy" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
|
||||
<title>Tab Newydd</title>
|
||||
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
|
||||
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
|
||||
|
@ -10,8 +10,6 @@
|
|||
</head>
|
||||
<body class="activity-stream">
|
||||
<div id="root"><!-- Regular React Rendering --></div>
|
||||
<div id="snippets-container">
|
||||
<div id="snippets"></div>
|
||||
</div>
|
||||
<div id="footer-snippets-container" />
|
||||
</body>
|
||||
</html>
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче