|
Packit Service |
eebd6f |
import "core-js/stable";
|
|
Packit Service |
eebd6f |
// redux-saga uses generators, use regenerator-runtime/runtime to transform generators
|
|
Packit Service |
eebd6f |
import "regenerator-runtime/runtime";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
import "whatwg-fetch";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
// Contains PF3 stylesheets and base for PF4
|
|
Packit Service |
eebd6f |
import "./lib/patternfly/patternfly-cockpit.scss";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
import React from "react";
|
|
Packit Service |
eebd6f |
import ReactDOM from "react-dom";
|
|
Packit Service |
eebd6f |
import { addLocaleData, IntlProvider } from "react-intl";
|
|
Packit Service |
eebd6f |
import enLocaleData from "react-intl/locale-data/en";
|
|
Packit Service |
eebd6f |
import FastClick from "fastclick";
|
|
Packit Service |
eebd6f |
import { Provider } from "react-redux";
|
|
Packit Service |
eebd6f |
import "@patternfly/patternfly/patternfly-addons.css";
|
|
Packit Service |
eebd6f |
import "@patternfly/patternfly/layouts/Flex/flex.css";
|
|
Packit Service |
eebd6f |
import "@patternfly/patternfly/utilities/Display/display.css";
|
|
Packit Service |
eebd6f |
import "./public/custom.css";
|
|
Packit Service |
eebd6f |
import "bootstrap";
|
|
Packit Service |
eebd6f |
import cockpit from "cockpit";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
import store from "./core/store";
|
|
Packit Service |
eebd6f |
import router from "./core/router";
|
|
Packit Service |
eebd6f |
import history from "./core/history";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
// Intialize any necessary locale data, and load translated messages
|
|
Packit Service |
eebd6f |
const translations = require("./build/translations.json");
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const languages = [...new Set(Object.keys(translations).map((lang) => lang.split("_")[0]))];
|
|
Packit Service |
eebd6f |
for (const lang of languages) {
|
|
Packit Service |
eebd6f |
const localData = require(`react-intl/locale-data/${lang}`); // eslint-disable-line import/no-dynamic-require
|
|
Packit Service |
eebd6f |
addLocaleData(localData);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
// still need english
|
|
Packit Service |
eebd6f |
addLocaleData(enLocaleData);
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const routes = require("./routes.json");
|
|
Packit Service |
eebd6f |
// Loaded with utils/routes-loader.js
|
|
Packit Service |
eebd6f |
const container = document.getElementById("main");
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const userLanguage = cockpit.language;
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
let messages;
|
|
Packit Service |
eebd6f |
if (userLanguage in translations) {
|
|
Packit Service |
eebd6f |
messages = translations[userLanguage];
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
let localeLang = "en";
|
|
Packit Service |
eebd6f |
if (userLanguage) {
|
|
Packit Service |
eebd6f |
localeLang = userLanguage.includes("_") ? userLanguage.replace("_", "-") : userLanguage;
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
function renderComponent(component) {
|
|
Packit Service |
eebd6f |
ReactDOM.render(
|
|
Packit Service |
eebd6f |
<Provider store={store}>
|
|
Packit Service |
eebd6f |
{messages !== undefined ? (
|
|
Packit Service |
eebd6f |
<IntlProvider locale={localeLang} messages={messages}>
|
|
Packit Service |
eebd6f |
{component}
|
|
Packit Service |
eebd6f |
</IntlProvider>
|
|
Packit Service |
eebd6f |
) : (
|
|
Packit Service |
eebd6f |
<IntlProvider locale="en">{component}</IntlProvider>
|
|
Packit Service |
eebd6f |
)}
|
|
Packit Service |
eebd6f |
</Provider>,
|
|
Packit Service |
eebd6f |
container
|
|
Packit Service |
eebd6f |
);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
// Find and render a web page matching the current URL path,
|
|
Packit Service |
eebd6f |
// if such page is not found then render an error page (see routes.json, core/router.js)
|
|
Packit Service |
eebd6f |
function render(location) {
|
|
Packit Service |
eebd6f |
router
|
|
Packit Service |
eebd6f |
.resolve(routes, location)
|
|
Packit Service |
eebd6f |
.then(renderComponent)
|
|
Packit Service |
eebd6f |
.catch((error) => router.resolve(routes, { ...location, error }).then(renderComponent));
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
// Handle client-side navigation by using HTML5 History API
|
|
Packit Service |
eebd6f |
// For more information visit https://github.com/ReactJSTraining/history/tree/master/docs#readme
|
|
Packit Service |
eebd6f |
history.listen(render);
|
|
Packit Service |
eebd6f |
render(history.getCurrentLocation());
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
// Eliminates the 300ms delay between a physical tap
|
|
Packit Service |
eebd6f |
// and the firing of a click event on mobile browsers
|
|
Packit Service |
eebd6f |
// https://github.com/ftlabs/fastclick
|
|
Packit Service |
eebd6f |
FastClick.attach(document.body);
|