mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +00:00
refactor: extract the dialogs surface styles (#266 slice 2/5)
271 блок диалогов/форм/кнопок/пикеров → src/styles/dialogs.styles.ts, склейка [inline, chrome, dialogs]. Контрактные тесты, которые греппят CSS-исходник, переведены на хелпер readAllStylesSource (styles.ts + все импортированные файлы поверхностей) — greps видят весь лист на любом состоянии сплита. Refactor-proof diff пуст; golden 129/129; npm test 1315/0. Issue: #266 User-Visible: no
This commit is contained in:
File diff suppressed because one or more lines are too long
Vendored
+1177
-1176
File diff suppressed because one or more lines are too long
+3
-1177
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ import test from 'node:test';
|
||||
import {
|
||||
hexToRgb, hsvToHex, hsvToRgb, normalizeHexColor, normalizeHue, rgbToHex, rgbToHsv,
|
||||
} from '../test-build/color-picker.js';
|
||||
import { readAllStylesSource } from './styles-source.mjs';
|
||||
|
||||
test('hex drafts accept only three or six digits and normalize on commit', () => {
|
||||
assert.equal(normalizeHexColor('#AbC'), '#aabbcc');
|
||||
@@ -80,7 +81,7 @@ test('the hue range exposes one cyclic spectrum without restyling other ranges',
|
||||
|
||||
test('activity color and ripple size keep independent readable rows', () => {
|
||||
const card = readFileSync(new URL('../src/houseplan-card.ts', import.meta.url), 'utf8');
|
||||
const styles = readFileSync(new URL('../src/styles.ts', import.meta.url), 'utf8');
|
||||
const styles = readAllStylesSource();
|
||||
const start = card.indexOf("d.display === 'icon_ripple'");
|
||||
const end = card.indexOf("marker.activity_alarm_note", start);
|
||||
const ripple = card.slice(start, end);
|
||||
|
||||
@@ -2,7 +2,13 @@ import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFileSync } from 'node:fs';
|
||||
|
||||
const source = (name) => readFileSync(new URL(`../src/${name}`, import.meta.url), 'utf8');
|
||||
import { readAllStylesSource } from './styles-source.mjs';
|
||||
|
||||
// #266: styles.ts is being split into surface files — style greps must
|
||||
// see the whole sheet, other sources keep the direct read.
|
||||
const source = (name) => name === 'styles.ts'
|
||||
? readAllStylesSource()
|
||||
: readFileSync(new URL(`../src/${name}`, import.meta.url), 'utf8');
|
||||
|
||||
test('issue 213 resolves the effective base before the face without a late visual factor', () => {
|
||||
const styles = source('styles.ts');
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { readAllStylesSource } from './styles-source.mjs';
|
||||
|
||||
const card = readFileSync(new URL('../src/houseplan-card.ts', import.meta.url), 'utf8');
|
||||
const styles = readFileSync(new URL('../src/styles.ts', import.meta.url), 'utf8');
|
||||
const styles = readAllStylesSource();
|
||||
const openings = readFileSync(new URL('../src/iso-openings.ts', import.meta.url), 'utf8');
|
||||
const packageJson = readFileSync(new URL('../package.json', import.meta.url), 'utf8');
|
||||
const spaceCard = readFileSync(new URL('../src/space-card.ts', import.meta.url), 'utf8');
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { readAllStylesSource } from './styles-source.mjs';
|
||||
|
||||
const card = readFileSync(new URL('../src/houseplan-card.ts', import.meta.url), 'utf8');
|
||||
const styles = readFileSync(new URL('../src/styles.ts', import.meta.url), 'utf8');
|
||||
const styles = readAllStylesSource();
|
||||
const staticRender = readFileSync(new URL('../src/space-render.ts', import.meta.url), 'utf8');
|
||||
const backend = readFileSync(new URL('../custom_components/houseplan/websocket_api.py', import.meta.url), 'utf8');
|
||||
const importer = readFileSync(new URL('../custom_components/houseplan/import_export.py', import.meta.url), 'utf8');
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs';
|
||||
import { readAllStylesSource } from './styles-source.mjs';
|
||||
|
||||
const card = fs.readFileSync(new URL('../src/houseplan-card.ts', import.meta.url), 'utf8');
|
||||
const resize = fs.readFileSync(new URL('../src/resize.ts', import.meta.url), 'utf8');
|
||||
const styles = fs.readFileSync(new URL('../src/styles.ts', import.meta.url), 'utf8');
|
||||
const styles = readAllStylesSource();
|
||||
const en = JSON.parse(fs.readFileSync(new URL('../src/i18n/en.json', import.meta.url), 'utf8'));
|
||||
const ru = JSON.parse(fs.readFileSync(new URL('../src/i18n/ru.json', import.meta.url), 'utf8'));
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* #266: the style sheet is being split into surface files. Contract tests
|
||||
* that grep the CSS source must see the WHOLE sheet regardless of the split
|
||||
* state, so they read src/styles.ts plus every surface file it imports.
|
||||
*/
|
||||
import { readFileSync } from 'node:fs';
|
||||
|
||||
export function readAllStylesSource() {
|
||||
const aggregatorUrl = new URL('../src/styles.ts', import.meta.url);
|
||||
const aggregator = readFileSync(aggregatorUrl, 'utf8');
|
||||
const parts = [aggregator];
|
||||
for (const m of aggregator.matchAll(/from '\.\/styles\/([\w-]+)\.styles'/g)) {
|
||||
parts.push(readFileSync(new URL(`../src/styles/${m[1]}.styles.ts`, import.meta.url), 'utf8'));
|
||||
}
|
||||
return parts.join('\n');
|
||||
}
|
||||
Reference in New Issue
Block a user