В общем, суть вся в том, что если ты применяешь БЭМ, все эти бесконечные block block__el block__el_m, велик соблазн написать вот так:
.block {
стили блока
&__el {
стили элемента
&_m {
стили модификатора для элемента
/** | |
* @type {import('@rspack/cli').Configuration} | |
*/ | |
const ReactRefreshPlugin = require('@rspack/plugin-react-refresh'); | |
const pkg = require('./package.json'); | |
const rspack = require('@rspack/core'); | |
const path = require('path'); | |
const isDev = process.env.NODE_ENV === 'development'; | |
const isDevBuild = process.env.NODE_ENV === 'none' | |
const VERSION = pkg.version; |
import 'package:flutter/material.dart'; | |
import 'package:flutter/cupertino.dart'; | |
import 'package:flutter/services.dart'; | |
void main() => runApp(MyApp()); | |
/// Inspiration taken from [modal_bottom_sheet](https://github.com/jamesblasco/modal_bottom_sheet) | |
class _CupertinoBottomSheetContainer extends StatelessWidget { | |
/// Widget to render | |
final Widget child; |
*, | |
*::after, | |
*::before { | |
box-sizing: border-box; | |
} | |
pre { | |
appearance: none; | |
white-space: normal !important; | |
} |
const WebSocket = require('ws'); | |
const tvIP = '192.168.3.6'; | |
const ws = new WebSocket(`wss://${tvIP}:8002/api/v2/channels/samsung.remote.control`, { rejectUnauthorized: false }); | |
ws.onopen = () => console.log('opened.'); | |
ws.onclose = () => console.log('closed.'); | |
ws.onmessage = message => { | |
const data = JSON.parse(message.data); |
const dgram = require('dgram'); | |
const { Buffer } = require('buffer'); | |
// const = 'ssdp:all'; | |
const SAMSUNG_TV_URN = 'urn:samsung.com:device:RemoteControlReceiver:1'; | |
const PORT = 1900; | |
const TIMEOUT = 2000; | |
function broadcastSsdp(socket, target) { | |
const query = Buffer.from( |
const express = require('express'); | |
const util = require('util'); | |
const exec = util.promisify(require('child_process').exec); | |
const app = express(); | |
app.get('/network_health', async (req, res) => { | |
const { timeout,ㅤ} = req.query; | |
const checkCommands = [ | |
'ping -c 1 google.com', |
{ | |
"[dart]": { | |
"editor.formatOnSave": true, | |
"editor.formatOnType": true, | |
"editor.rulers": [ | |
80 | |
], | |
"editor.selectionHighlight": false, | |
"editor.suggest.snippetsPreventQuickSuggestions": false, | |
"editor.suggestSelection": "first", |
. | |
├── Brocfile.js | |
├── Makefile | |
├── dist | |
├── doc | |
│ ├── 2017-12-23\ Grid\ Definition.md | |
│ ├── 2017-12-24\ New\ Footer\ Social\ Icons.md | |
│ ├── 2017-12-25\ Layout\ Changes.md | |
│ ├── 2017-12-25\ Slider\ Declaration.md | |
│ ├── 2017-12-27\ Layout\ Changes.md |
В общем, суть вся в том, что если ты применяешь БЭМ, все эти бесконечные block block__el block__el_m, велик соблазн написать вот так:
.block {
стили блока
&__el {
стили элемента
&_m {
стили модификатора для элемента
@step: @icon-size + 12 / 1366 * 100vw; | |
@t: @icon-size * 0.35; | |
@l: -@icon-size; | |
@d: 5ms; | |
@from: 0; | |
@to: 17; | |
@break: 6; | |
.loop(@index) when(@index =< @to) { | |
@i: @index + 1; |