- Delete old Vite+Svelte frontend - Initialize new SvelteKit project with TypeScript - Configure Tailwind CSS v4 + DaisyUI - Implement JWT authentication with auto-refresh - Create login page with form validation (Zod) - Add protected route guards - Update Docker configuration for single-stage build - Add E2E tests with Playwright (6/11 passing) - Fix Svelte 5 reactivity with $state() runes Known issues: - 5 E2E tests failing (timing/async issues) - Token refresh implementation needs debugging - Validation error display timing
575 lines
27 KiB
JavaScript
575 lines
27 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const CSSStyleDeclarationValueParser_js_1 = __importDefault(require("./CSSStyleDeclarationValueParser.cjs"));
|
|
/**
|
|
* Computed style property parser.
|
|
*/
|
|
class CSSStyleDeclarationPropertyGetParser {
|
|
/**
|
|
* Returns margin.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getMargin(properties) {
|
|
return this.getPaddingLikeProperty(['margin-top', 'margin-right', 'margin-bottom', 'margin-left'], properties);
|
|
}
|
|
/**
|
|
* Returns padding.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getPadding(properties) {
|
|
return this.getPaddingLikeProperty(['padding-top', 'padding-right', 'padding-bottom', 'padding-left'], properties);
|
|
}
|
|
/**
|
|
* Returns outline.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getOutline(properties) {
|
|
if (!properties['outline-color']?.value ||
|
|
!properties['outline-style']?.value ||
|
|
!properties['outline-width']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['outline-color'].important &&
|
|
properties['outline-style'].important &&
|
|
properties['outline-width'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['outline-width'].value) &&
|
|
properties['outline-width'].value === properties['outline-style'].value &&
|
|
properties['outline-width'].value === properties['outline-color'].value) {
|
|
return {
|
|
important,
|
|
value: properties['outline-width'].value
|
|
};
|
|
}
|
|
const values = [];
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['outline-color']?.value)) {
|
|
values.push(properties['outline-color'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['outline-style']?.value)) {
|
|
values.push(properties['outline-style'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['outline-width'].value)) {
|
|
values.push(properties['outline-width'].value);
|
|
}
|
|
return {
|
|
important,
|
|
value: values.join(' ')
|
|
};
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorder(properties) {
|
|
if (!properties['border-top-width']?.value ||
|
|
properties['border-top-width']?.value !== properties['border-right-width']?.value ||
|
|
properties['border-top-width']?.value !== properties['border-bottom-width']?.value ||
|
|
properties['border-top-width']?.value !== properties['border-left-width']?.value ||
|
|
!properties['border-top-style']?.value ||
|
|
properties['border-top-style']?.value !== properties['border-right-style']?.value ||
|
|
properties['border-top-style']?.value !== properties['border-bottom-style']?.value ||
|
|
properties['border-top-style']?.value !== properties['border-left-style']?.value ||
|
|
!properties['border-top-color']?.value ||
|
|
properties['border-top-color']?.value !== properties['border-right-color']?.value ||
|
|
properties['border-top-color']?.value !== properties['border-bottom-color']?.value ||
|
|
properties['border-top-color']?.value !== properties['border-left-color']?.value ||
|
|
!properties['border-image-source']?.value ||
|
|
!properties['border-image-slice']?.value ||
|
|
!properties['border-image-width']?.value ||
|
|
!properties['border-image-outset']?.value ||
|
|
!properties['border-image-repeat']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['border-top-width'].important &&
|
|
properties['border-right-width'].important &&
|
|
properties['border-bottom-width'].important &&
|
|
properties['border-left-width'].important &&
|
|
properties['border-top-style'].important &&
|
|
properties['border-right-style'].important &&
|
|
properties['border-bottom-style'].important &&
|
|
properties['border-left-style'].important &&
|
|
properties['border-top-color'].important &&
|
|
properties['border-right-color'].important &&
|
|
properties['border-bottom-color'].important &&
|
|
properties['border-left-color'].important &&
|
|
properties['border-image-source'].important &&
|
|
properties['border-image-slice'].important &&
|
|
properties['border-image-width'].important &&
|
|
properties['border-image-outset'].important &&
|
|
properties['border-image-repeat'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-top-width'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-top-style'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-top-color'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-image-source'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-image-slice'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-image-width'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-image-outset'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['border-image-repeat'].value)) {
|
|
if (properties['border-top-width'].value !== properties['border-top-style'].value ||
|
|
properties['border-top-width'].value !== properties['border-top-color'].value ||
|
|
properties['border-top-width'].value !== properties['border-image-source'].value ||
|
|
properties['border-top-width'].value !== properties['border-image-slice'].value ||
|
|
properties['border-top-width'].value !== properties['border-image-width'].value ||
|
|
properties['border-top-width'].value !== properties['border-image-outset'].value ||
|
|
properties['border-top-width'].value !== properties['border-image-repeat'].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties['border-top-width'].value
|
|
};
|
|
}
|
|
const values = [];
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['border-top-width'].value)) {
|
|
values.push(properties['border-top-width'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['border-top-style'].value)) {
|
|
values.push(properties['border-top-style'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['border-top-color'].value)) {
|
|
values.push(properties['border-top-color'].value);
|
|
}
|
|
return {
|
|
important,
|
|
value: values.join(' ')
|
|
};
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderTop(properties) {
|
|
return this.getBorderTopRightBottomLeft('top', properties);
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderRight(properties) {
|
|
return this.getBorderTopRightBottomLeft('right', properties);
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderBottom(properties) {
|
|
return this.getBorderTopRightBottomLeft('bottom', properties);
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderLeft(properties) {
|
|
return this.getBorderTopRightBottomLeft('left', properties);
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderColor(properties) {
|
|
return this.getPaddingLikeProperty(['border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'], properties);
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderWidth(properties) {
|
|
return this.getPaddingLikeProperty(['border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'], properties);
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderStyle(properties) {
|
|
return this.getPaddingLikeProperty(['border-top-style', 'border-right-style', 'border-bottom-style', 'border-left-style'], properties);
|
|
}
|
|
/**
|
|
* Returns border radius.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderRadius(properties) {
|
|
return this.getPaddingLikeProperty([
|
|
'border-top-left-radius',
|
|
'border-top-right-radius',
|
|
'border-bottom-right-radius',
|
|
'border-bottom-left-radius'
|
|
], properties);
|
|
}
|
|
/**
|
|
* Returns border image.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBorderImage(properties) {
|
|
if (!properties['border-image-source']?.value ||
|
|
!properties['border-image-slice']?.value ||
|
|
!properties['border-image-width']?.value ||
|
|
!properties['border-image-outset']?.value ||
|
|
!properties['border-image-repeat']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['border-image-source'].important &&
|
|
properties['border-image-slice'].important &&
|
|
properties['border-image-width'].important &&
|
|
properties['border-image-outset'].important &&
|
|
properties['border-image-repeat'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['border-image-source'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['border-image-slice'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['border-image-width'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['border-image-outset'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['border-image-repeat'].value)) {
|
|
if (properties['border-image-source'].value !== properties['border-image-slice'].value ||
|
|
properties['border-image-source'].value !== properties['border-image-width'].value ||
|
|
properties['border-image-source'].value !== properties['border-image-outset'].value ||
|
|
properties['border-image-source'].value !== properties['border-image-repeat'].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties['border-image-source'].value
|
|
};
|
|
}
|
|
return {
|
|
important,
|
|
value: `${properties['border-image-source'].value} ${properties['border-image-slice'].value} / ${properties['border-image-width'].value} / ${properties['border-image-outset'].value} ${properties['border-image-repeat'].value}`
|
|
};
|
|
}
|
|
/**
|
|
* Returns background.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBackground(properties) {
|
|
if (!properties['background-image']?.value ||
|
|
!properties['background-repeat']?.value ||
|
|
!properties['background-attachment']?.value ||
|
|
!properties['background-position-x']?.value ||
|
|
!properties['background-position-y']?.value ||
|
|
!properties['background-color']?.value ||
|
|
!properties['background-size']?.value ||
|
|
!properties['background-origin']?.value ||
|
|
!properties['background-clip']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['background-image'].important &&
|
|
properties['background-repeat'].important &&
|
|
properties['background-attachment'].important &&
|
|
properties['background-position-x'].important &&
|
|
properties['background-position-y'].important &&
|
|
properties['background-color'].important &&
|
|
properties['background-size'].important &&
|
|
properties['background-origin'].important &&
|
|
properties['background-clip'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-image'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-repeat'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-attachment'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-position-x'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-position-y'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-color'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-size'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-origin'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties['background-clip'].value)) {
|
|
if (properties['background-image'].value !== properties['background-repeat'].value ||
|
|
properties['background-image'].value !== properties['background-attachment'].value ||
|
|
properties['background-image'].value !== properties['background-position-x'].value ||
|
|
properties['background-image'].value !== properties['background-position-y'].value ||
|
|
properties['background-image'].value !== properties['background-color'].value ||
|
|
properties['background-image'].value !== properties['background-size'].value ||
|
|
properties['background-image'].value !== properties['background-origin'].value ||
|
|
properties['background-image'].value !== properties['background-clip'].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties['background-image'].value
|
|
};
|
|
}
|
|
const values = [];
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-image'].value)) {
|
|
values.push(properties['background-image'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-position-x'].value) &&
|
|
!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-position-y'].value) &&
|
|
!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-size'].value)) {
|
|
values.push(`${properties['background-position-x'].value} ${properties['background-position-y'].value} / ${properties['background-size'].value}`);
|
|
}
|
|
else if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-position-x'].value) &&
|
|
!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-position-y'].value)) {
|
|
values.push(`${properties['background-position-x'].value} ${properties['background-position-y'].value}`);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-repeat'].value)) {
|
|
values.push(properties['background-repeat'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-attachment'].value)) {
|
|
values.push(properties['background-attachment'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-origin'].value)) {
|
|
values.push(properties['background-origin'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-clip'].value)) {
|
|
values.push(properties['background-clip'].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties['background-color'].value)) {
|
|
values.push(properties['background-color'].value);
|
|
}
|
|
return {
|
|
important,
|
|
value: values.join(' ')
|
|
};
|
|
}
|
|
/**
|
|
* Returns background position.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getBackgroundPosition(properties) {
|
|
if (!properties['background-position-x']?.value ||
|
|
!properties['background-position-y']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['background-position-x'].important &&
|
|
properties['background-position-y'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['background-position-x'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['background-position-y'].value)) {
|
|
if (properties['background-position-x'].value !== properties['background-position-y'].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties['background-position-x'].value
|
|
};
|
|
}
|
|
const positionX = properties['background-position-x'].value.replace(/ *, */g, ',').split(',');
|
|
const positionY = properties['background-position-y'].value.replace(/ *, */g, ',').split(',');
|
|
const parts = [];
|
|
for (let i = 0; i < positionX.length; i++) {
|
|
parts.push(`${positionX[i]} ${positionY[i]}`);
|
|
}
|
|
return {
|
|
important,
|
|
value: parts.join(', ')
|
|
};
|
|
}
|
|
/**
|
|
* Returns flex.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getFlex(properties) {
|
|
if (!properties['flex-grow']?.value ||
|
|
!properties['flex-shrink']?.value ||
|
|
!properties['flex-basis']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['flex-grow'].important &&
|
|
properties['flex-shrink'].important &&
|
|
properties['flex-basis'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['flex-grow'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['flex-shrink'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['flex-basis'].value)) {
|
|
if (properties['flex-grow'].value !== properties['flex-shrink'].value ||
|
|
properties['flex-grow'].value !== properties['flex-basis'].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties['flex-grow'].value
|
|
};
|
|
}
|
|
return {
|
|
important,
|
|
value: `${properties['flex-grow'].value} ${properties['flex-shrink'].value} ${properties['flex-basis'].value}`
|
|
};
|
|
}
|
|
/**
|
|
* Returns flex.
|
|
*
|
|
* @param properties Properties.
|
|
* @returns Property value
|
|
*/
|
|
static getFont(properties) {
|
|
if (!properties['font-size']?.value ||
|
|
!properties['font-family']?.value ||
|
|
!properties['font-weight']?.value ||
|
|
!properties['font-style']?.value ||
|
|
!properties['font-variant']?.value ||
|
|
!properties['font-stretch']?.value ||
|
|
!properties['line-height']?.value) {
|
|
return null;
|
|
}
|
|
const important = properties['font-size'].important &&
|
|
properties['font-family'].important &&
|
|
properties['font-weight'].important &&
|
|
properties['font-style'].important &&
|
|
properties['font-variant'].important &&
|
|
properties['font-stretch'].important &&
|
|
properties['line-height'].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['font-size'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['font-family'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['font-weight'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['font-style'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['font-variant'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['font-stretch'].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties['line-height'].value)) {
|
|
if (properties['font-size'].value !== properties['font-family'].value ||
|
|
properties['font-size'].value !== properties['font-weight'].value ||
|
|
properties['font-size'].value !== properties['font-style'].value ||
|
|
properties['font-size'].value !== properties['font-variant'].value ||
|
|
properties['font-size'].value !== properties['font-stretch'].value ||
|
|
properties['font-size'].value !== properties['line-height'].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties['font-size'].value
|
|
};
|
|
}
|
|
const values = [];
|
|
if (properties['font-style'].value !== 'normal') {
|
|
values.push(properties['font-style'].value);
|
|
}
|
|
if (properties['font-variant'].value !== 'normal') {
|
|
values.push(properties['font-variant'].value);
|
|
}
|
|
if (properties['font-weight'].value !== 'normal') {
|
|
values.push(properties['font-weight'].value);
|
|
}
|
|
if (properties['font-stretch'].value !== 'normal') {
|
|
values.push(properties['font-stretch'].value);
|
|
}
|
|
if (properties['line-height'].value !== 'normal') {
|
|
values.push(`${properties['font-size'].value} / ${properties['line-height'].value}`);
|
|
}
|
|
else {
|
|
values.push(properties['font-size'].value);
|
|
}
|
|
values.push(properties['font-family'].value);
|
|
return {
|
|
important,
|
|
value: values.join(' ')
|
|
};
|
|
}
|
|
/**
|
|
* Returns border.
|
|
*
|
|
* @param properties Properties.
|
|
* @param position
|
|
* @returns Property value
|
|
*/
|
|
static getBorderTopRightBottomLeft(position, properties) {
|
|
if (!properties[`border-${position}-width`]?.value ||
|
|
!properties[`border-${position}-style`]?.value ||
|
|
!properties[`border-${position}-color`]?.value) {
|
|
return null;
|
|
}
|
|
const important = properties[`border-${position}-width`].important &&
|
|
properties[`border-${position}-style`].important &&
|
|
properties[`border-${position}-color`].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobalExceptInitial(properties[`border-${position}-width`].value) &&
|
|
properties[`border-${position}-width`].value ===
|
|
properties[`border-${position}-style`].value &&
|
|
properties[`border-${position}-width`].value === properties[`border-${position}-color`].value) {
|
|
return {
|
|
important,
|
|
value: properties[`border-${position}-width`].value
|
|
};
|
|
}
|
|
const values = [];
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties[`border-${position}-width`].value)) {
|
|
values.push(properties[`border-${position}-width`].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties[`border-${position}-style`]?.value)) {
|
|
values.push(properties[`border-${position}-style`].value);
|
|
}
|
|
if (!CSSStyleDeclarationValueParser_js_1.default.getInitial(properties[`border-${position}-color`]?.value)) {
|
|
values.push(properties[`border-${position}-color`].value);
|
|
}
|
|
return {
|
|
important,
|
|
value: values.join(' ')
|
|
};
|
|
}
|
|
/**
|
|
* Returns a padding like property.
|
|
*
|
|
* @param properties Properties.
|
|
* @param position
|
|
* @param propertyNames
|
|
* @returns Property value
|
|
*/
|
|
static getPaddingLikeProperty(propertyNames, properties) {
|
|
if (!properties[propertyNames[0]]?.value ||
|
|
!properties[propertyNames[1]]?.value ||
|
|
!properties[propertyNames[2]]?.value ||
|
|
!properties[propertyNames[3]]?.value) {
|
|
return null;
|
|
}
|
|
const important = properties[propertyNames[0]].important &&
|
|
properties[propertyNames[1]].important &&
|
|
properties[propertyNames[2]].important &&
|
|
properties[propertyNames[3]].important;
|
|
if (CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties[propertyNames[0]].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties[propertyNames[1]].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties[propertyNames[2]].value) ||
|
|
CSSStyleDeclarationValueParser_js_1.default.getGlobal(properties[propertyNames[3]].value)) {
|
|
if (properties[propertyNames[0]].value !== properties[propertyNames[1]].value ||
|
|
properties[propertyNames[0]].value !== properties[propertyNames[2]].value ||
|
|
properties[propertyNames[0]].value !== properties[propertyNames[3]].value) {
|
|
return null;
|
|
}
|
|
return {
|
|
important,
|
|
value: properties[propertyNames[0]].value
|
|
};
|
|
}
|
|
const values = [properties[propertyNames[0]].value];
|
|
if (properties[propertyNames[1]].value !== properties[propertyNames[0]].value ||
|
|
properties[propertyNames[2]].value !== properties[propertyNames[0]].value ||
|
|
properties[propertyNames[3]].value !== properties[propertyNames[1]].value) {
|
|
values.push(properties[propertyNames[1]].value);
|
|
}
|
|
if (properties[propertyNames[2]].value !== properties[propertyNames[0]].value ||
|
|
properties[propertyNames[3]].value !== properties[propertyNames[1]].value) {
|
|
values.push(properties[propertyNames[2]].value);
|
|
}
|
|
if (properties[propertyNames[3]].value !== properties[propertyNames[1]].value) {
|
|
values.push(properties[propertyNames[3]].value);
|
|
}
|
|
return {
|
|
important,
|
|
value: values.join(' ')
|
|
};
|
|
}
|
|
}
|
|
exports.default = CSSStyleDeclarationPropertyGetParser;
|
|
//# sourceMappingURL=CSSStyleDeclarationPropertyGetParser.cjs.map
|