renderNoResultsMessage() {
const { results, noResultsMessage } = this.props;
if (results && !results.length && noResultsMessage) {
return (<div className="no-result">
<h3>
{noResultsMessage}
</h3>
</div>);
}
}
const attacks = [
{ minChance: 7, damage: 40, name: 'critical' },
{ minChance: 5, damage: 20, name: 'big' },
{ minChance: 0, damage: 10, name: 'weak' },
];
const messages = {
start: (player, enemy) => `Welcome! Yor health is - ${player}%, your enemy health - ${enemy}%`,
end: (player, enemy) => `You ${enemy <= 0 ? 'win' : 'lost'}! Your hp level - ${player}, opponents hp level - ${enemy}`,
chance: (player, enemy) => `your chance - ${player}, your opponent chance - ${enemy}`,
turn: (player, enemy, hit, isEnemy) =>
`${isEnemy ? 'Enemy' : 'Your'} turn...
${isEnemy ? 'Enemy' : 'You'} did a ${hit} hit
${isEnemy ? 'Your' : 'Enemy'} hp - ${isEnemy ? player : enemy}`,
};
const simpleFight = () => {
const hp = [ 100, 100 ];
console.log(messages.start(...hp));
while (hp.every(n => n > 0)) {
const chances = hp.map(() => Math.random() * 11 | 0);
console.log(messages.chance(...chances));
if (chances[0] !== chances[1]) {
const chance = Math.max(...chances);
const attack = attacks.find(n => n.minChance < chance);
const isEnemyAttacks = chance === chances[1];
hp[+!isEnemyAttacks] -= attack.damage;
console.log(messages.turn(...hp, attack.name, isEnemyAttacks));
}
}
console.log(messages.end(...hp));
};
const { id } = this.state;
const { id } = this.state;
const newOrder = { id, ... };
const orders = [];
[class*="ymaps-2"][class*="-ground-pane"] {
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
/* Firefox 3.5+ */
-webkit-filter: grayscale(100%);
/* Chrome 19+ & Safari 6+ */
}
[class*="ymaps-2"][class*="-ground-pane"] {
-webkit-filter: grayscale(100%) url(/path-to-svg/yellowfilter.svg#yellowfilter);
filter: grayscale(100%) url(/path-to-svg/yellowfilter.svg#yellowfilter);
}
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<filter id="yellowfilter">
<feColorMatrix
type="matrix"
values="0.95 0 0 0 0
0 0.77 0 0 0
0 0 0.07 0 0
0 0 0 1 0" />
</filter>
</svg>
Есть ли способ полностью локально хранить переменные в браузере без участия сервера?Есть - LocalStorage
const env = process.env;
const __DEV__ = env.NODE_ENV === "development";
const BASE_CSS_LOADER = {
loader: "css-loader",
options: {
importLoaders: 2,
sourceMap: true,
minimize: true
}
};
const CSS_MODULES_LOADER = {
loader: "css-loader",
options: {
importLoaders: 2,
localIdentName: "[name]__[local]___[hash:base64:5]",
modules: true,
sourceMap: true,
minimize: true
}
};
const POSTCSS_LOADER = {
loader: "postcss-loader",
options: {
sourceMap: true,
plugins: [autoprefixer],
minimize: true
}
};
const STYLE_LOADER = __DEV__ ? "style-loader" : MiniCssExtractPlugin.loader;
config.module.rules = [].concat(config.module.rules, [
{
test: /\.module\.scss$/,
use: [
STYLE_LOADER,
CSS_MODULES_LOADER,
POSTCSS_LOADER,
"sass-loader?sourceMap"
]
},
{
test: /\.module\.css$/,
use: [STYLE_LOADER, CSS_MODULES_LOADER, POSTCSS_LOADER]
},
{
test: /\.scss$/,
exclude: /\.module\.scss$/,
use: [
STYLE_LOADER,
BASE_CSS_LOADER,
POSTCSS_LOADER,
"sass-loader?sourceMap"
]
},
{
test: /\.less$/,
exclude: /\.module\.less$/,
use: [
STYLE_LOADER,
BASE_CSS_LOADER,
POSTCSS_LOADER,
"less-loader?sourceMap"
]
},
{
test: /\.css$/,
exclude: /\.module\.css$/,
use: [STYLE_LOADER, BASE_CSS_LOADER, POSTCSS_LOADER]
}
]);
%myclass {
color: blue;
@media (min-width: 600px) {
background: red;
}
@media (min-width: 800px) {
font-size: 28px;
}
}
.class1 {
@media (min-width: 600px) {
@extend %myclass;
}
}
.class2 {
@media (min-width: 800px) {
@extend %myclass;
}
}
.class3 {
@extend %myclass;
}
.class3 {
color: blue;
}
@media (min-width: 600px) {
.class1, .class3 {
background: red;
}
}
@media (min-width: 800px) {
.class2, .class3 {
font-size: 28px;
}
}