aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
commitafa87af01c79a9baa539f2992d32154d2a4739bd (patch)
tree92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js
parent3b927e84d200402281f68181cd4253bc77e5528d (diff)
downloadneko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js')
-rw-r--r--vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js649
1 files changed, 0 insertions, 649 deletions
diff --git a/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js b/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js
deleted file mode 100644
index ab1dcb1..0000000
--- a/vanilla/node_modules/cssstyle/lib/CSSStyleDeclaration.js
+++ /dev/null
@@ -1,649 +0,0 @@
-/**
- * This is a fork from the CSS Style Declaration part of
- * https://github.com/NV/CSSOM
- */
-"use strict";
-
-const allProperties = require("./generated/allProperties");
-const implementedProperties = require("./generated/implementedProperties");
-const generatedProperties = require("./generated/properties");
-const {
- borderProperties,
- getPositionValue,
- normalizeProperties,
- prepareBorderProperties,
- prepareProperties,
- shorthandProperties
-} = require("./normalize");
-const {
- hasVarFunc,
- isGlobalKeyword,
- parseCSS,
- parsePropertyValue,
- prepareValue
-} = require("./parsers");
-const allExtraProperties = require("./utils/allExtraProperties");
-const { dashedToCamelCase } = require("./utils/camelize");
-const { getPropertyDescriptor } = require("./utils/propertyDescriptors");
-const { asciiLowercase } = require("./utils/strings");
-
-/**
- * @see https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface
- */
-class CSSStyleDeclaration {
- /**
- * @param {Function} onChangeCallback
- * @param {object} [opt]
- * @param {object} [opt.context] - Window, Element or CSSRule.
- */
- constructor(onChangeCallback, opt = {}) {
- // Make constructor and internals non-enumerable.
- Object.defineProperties(this, {
- constructor: {
- enumerable: false,
- writable: true
- },
-
- // Window
- _global: {
- value: globalThis,
- enumerable: false,
- writable: true
- },
-
- // Element
- _ownerNode: {
- value: null,
- enumerable: false,
- writable: true
- },
-
- // CSSRule
- _parentNode: {
- value: null,
- enumerable: false,
- writable: true
- },
-
- _onChange: {
- value: null,
- enumerable: false,
- writable: true
- },
-
- _values: {
- value: new Map(),
- enumerable: false,
- writable: true
- },
-
- _priorities: {
- value: new Map(),
- enumerable: false,
- writable: true
- },
-
- _length: {
- value: 0,
- enumerable: false,
- writable: true
- },
-
- _computed: {
- value: false,
- enumerable: false,
- writable: true
- },
-
- _readonly: {
- value: false,
- enumerable: false,
- writable: true
- },
-
- _setInProgress: {
- value: false,
- enumerable: false,
- writable: true
- }
- });
-
- const { context } = opt;
- if (context) {
- if (typeof context.getComputedStyle === "function") {
- this._global = context;
- this._computed = true;
- this._readonly = true;
- } else if (context.nodeType === 1 && Object.hasOwn(context, "style")) {
- this._global = context.ownerDocument.defaultView;
- this._ownerNode = context;
- } else if (Object.hasOwn(context, "parentRule")) {
- this._parentRule = context;
- // Find Window from the owner node of the StyleSheet.
- const window = context?.parentStyleSheet?.ownerNode?.ownerDocument?.defaultView;
- if (window) {
- this._global = window;
- }
- }
- }
- if (typeof onChangeCallback === "function") {
- this._onChange = onChangeCallback;
- }
- }
-
- get cssText() {
- if (this._computed) {
- return "";
- }
- const properties = new Map();
- for (let i = 0; i < this._length; i++) {
- const property = this[i];
- const value = this.getPropertyValue(property);
- const priority = this._priorities.get(property) ?? "";
- if (shorthandProperties.has(property)) {
- const { shorthandFor } = shorthandProperties.get(property);
- for (const [longhand] of shorthandFor) {
- if (priority || !this._priorities.get(longhand)) {
- properties.delete(longhand);
- }
- }
- }
- properties.set(property, { property, value, priority });
- }
- const normalizedProperties = normalizeProperties(properties);
- const parts = [];
- for (const { property, value, priority } of normalizedProperties.values()) {
- if (priority) {
- parts.push(`${property}: ${value} !${priority};`);
- } else {
- parts.push(`${property}: ${value};`);
- }
- }
- return parts.join(" ");
- }
-
- set cssText(val) {
- if (this._readonly) {
- const msg = "cssText can not be modified.";
- const name = "NoModificationAllowedError";
- throw new this._global.DOMException(msg, name);
- }
- Array.prototype.splice.call(this, 0, this._length);
- this._values.clear();
- this._priorities.clear();
- if (this._parentRule || (this._ownerNode && this._setInProgress)) {
- return;
- }
- try {
- this._setInProgress = true;
- const valueObj = parseCSS(
- val,
- {
- context: "declarationList",
- parseValue: false
- },
- true
- );
- if (valueObj?.children) {
- const properties = new Map();
- let shouldSkipNext = false;
- for (const item of valueObj.children) {
- if (item.type === "Atrule") {
- continue;
- }
- if (item.type === "Rule") {
- shouldSkipNext = true;
- continue;
- }
- if (shouldSkipNext === true) {
- shouldSkipNext = false;
- continue;
- }
- const {
- important,
- property,
- value: { value }
- } = item;
- if (typeof property === "string" && typeof value === "string") {
- const priority = important ? "important" : "";
- const isCustomProperty = property.startsWith("--");
- if (isCustomProperty || hasVarFunc(value)) {
- if (properties.has(property)) {
- const { priority: itemPriority } = properties.get(property);
- if (!itemPriority) {
- properties.set(property, { property, value, priority });
- }
- } else {
- properties.set(property, { property, value, priority });
- }
- } else {
- const parsedValue = parsePropertyValue(property, value, {
- globalObject: this._global
- });
- if (parsedValue) {
- if (properties.has(property)) {
- const { priority: itemPriority } = properties.get(property);
- if (!itemPriority) {
- properties.set(property, { property, value, priority });
- }
- } else {
- properties.set(property, { property, value, priority });
- }
- } else {
- this.removeProperty(property);
- }
- }
- }
- }
- const parsedProperties = prepareProperties(properties, {
- globalObject: this._global
- });
- for (const [property, item] of parsedProperties) {
- const { priority, value } = item;
- this._priorities.set(property, priority);
- this.setProperty(property, value, priority);
- }
- }
- } catch {
- return;
- } finally {
- this._setInProgress = false;
- }
- if (typeof this._onChange === "function") {
- this._onChange(this.cssText);
- }
- }
-
- get length() {
- return this._length;
- }
-
- // This deletes indices if the new length is less then the current length.
- // If the new length is more, it does nothing, the new indices will be
- // undefined until set.
- set length(len) {
- for (let i = len; i < this._length; i++) {
- delete this[i];
- }
- this._length = len;
- }
-
- // Readonly
- get parentRule() {
- return this._parentRule;
- }
-
- get cssFloat() {
- return this.getPropertyValue("float");
- }
-
- set cssFloat(value) {
- this._setProperty("float", value);
- }
-
- /**
- * @param {string} property
- */
- getPropertyPriority(property) {
- return this._priorities.get(property) || "";
- }
-
- /**
- * @param {string} property
- */
- getPropertyValue(property) {
- if (this._values.has(property)) {
- return this._values.get(property).toString();
- }
- return "";
- }
-
- /**
- * @param {...number} args
- */
- item(...args) {
- if (!args.length) {
- const msg = "1 argument required, but only 0 present.";
- throw new this._global.TypeError(msg);
- }
- const [value] = args;
- const index = parseInt(value);
- if (Number.isNaN(index) || index < 0 || index >= this._length) {
- return "";
- }
- return this[index];
- }
-
- /**
- * @param {string} property
- */
- removeProperty(property) {
- if (this._readonly) {
- const msg = `Property ${property} can not be modified.`;
- const name = "NoModificationAllowedError";
- throw new this._global.DOMException(msg, name);
- }
- if (!this._values.has(property)) {
- return "";
- }
- const prevValue = this._values.get(property);
- this._values.delete(property);
- this._priorities.delete(property);
- const index = Array.prototype.indexOf.call(this, property);
- if (index >= 0) {
- Array.prototype.splice.call(this, index, 1);
- if (typeof this._onChange === "function") {
- this._onChange(this.cssText);
- }
- }
- return prevValue;
- }
-
- /**
- * @param {string} prop
- * @param {string} val
- * @param {string} prior
- */
- setProperty(prop, val, prior) {
- if (this._readonly) {
- const msg = `Property ${prop} can not be modified.`;
- const name = "NoModificationAllowedError";
- throw new this._global.DOMException(msg, name);
- }
- const value = prepareValue(val);
- if (value === "") {
- this[prop] = "";
- this.removeProperty(prop);
- return;
- }
- const priority = prior === "important" ? "important" : "";
- const isCustomProperty = prop.startsWith("--");
- if (isCustomProperty) {
- this._setProperty(prop, value, priority);
- return;
- }
- const property = asciiLowercase(prop);
- if (!allProperties.has(property) && !allExtraProperties.has(property)) {
- return;
- }
- if (priority) {
- this._priorities.set(property, priority);
- } else {
- this._priorities.delete(property);
- }
- this[property] = value;
- }
-}
-
-// Internal methods
-Object.defineProperties(CSSStyleDeclaration.prototype, {
- _setProperty: {
- /**
- * @param {string} property
- * @param {string} val
- * @param {string} priority
- */
- value(property, val, priority) {
- if (typeof val !== "string") {
- return;
- }
- if (val === "") {
- this.removeProperty(property);
- return;
- }
- let originalText = "";
- if (typeof this._onChange === "function" && !this._setInProgress) {
- originalText = this.cssText;
- }
- if (this._values.has(property)) {
- const index = Array.prototype.indexOf.call(this, property);
- // The property already exists but is not indexed into `this` so add it.
- if (index < 0) {
- this[this._length] = property;
- this._length++;
- }
- } else {
- // New property.
- this[this._length] = property;
- this._length++;
- }
- if (priority === "important") {
- this._priorities.set(property, priority);
- } else {
- this._priorities.delete(property);
- }
- this._values.set(property, val);
- if (
- typeof this._onChange === "function" &&
- !this._setInProgress &&
- this.cssText !== originalText
- ) {
- this._onChange(this.cssText);
- }
- },
- enumerable: false
- },
-
- _borderSetter: {
- /**
- * @param {string} prop
- * @param {object|Array|string} val
- * @param {string} prior
- */
- value(prop, val, prior) {
- const properties = new Map();
- if (prop === "border") {
- let priority = "";
- if (typeof prior === "string") {
- priority = prior;
- } else {
- priority = this._priorities.get(prop) ?? "";
- }
- properties.set(prop, { propery: prop, value: val, priority });
- } else {
- for (let i = 0; i < this._length; i++) {
- const property = this[i];
- if (borderProperties.has(property)) {
- const value = this.getPropertyValue(property);
- const longhandPriority = this._priorities.get(property) ?? "";
- let priority = longhandPriority;
- if (prop === property && typeof prior === "string") {
- priority = prior;
- }
- properties.set(property, { property, value, priority });
- }
- }
- }
- const parsedProperties = prepareBorderProperties(prop, val, prior, properties, {
- globalObject: this._global
- });
- for (const [property, item] of parsedProperties) {
- const { priority, value } = item;
- this._setProperty(property, value, priority);
- }
- },
- enumerable: false
- },
-
- _flexBoxSetter: {
- /**
- * @param {string} prop
- * @param {string} val
- * @param {string} prior
- * @param {string} shorthandProperty
- */
- value(prop, val, prior, shorthandProperty) {
- if (!shorthandProperty || !shorthandProperties.has(shorthandProperty)) {
- return;
- }
- const shorthandPriority = this._priorities.get(shorthandProperty);
- this.removeProperty(shorthandProperty);
- let priority = "";
- if (typeof prior === "string") {
- priority = prior;
- } else {
- priority = this._priorities.get(prop) ?? "";
- }
- this.removeProperty(prop);
- if (shorthandPriority && priority) {
- this._setProperty(prop, val);
- } else {
- this._setProperty(prop, val, priority);
- }
- if (val && !hasVarFunc(val)) {
- const longhandValues = [];
- const shorthandItem = shorthandProperties.get(shorthandProperty);
- let hasGlobalKeyword = false;
- for (const [longhandProperty] of shorthandItem.shorthandFor) {
- if (longhandProperty === prop) {
- if (isGlobalKeyword(val)) {
- hasGlobalKeyword = true;
- }
- longhandValues.push(val);
- } else {
- const longhandValue = this.getPropertyValue(longhandProperty);
- const longhandPriority = this._priorities.get(longhandProperty) ?? "";
- if (!longhandValue || longhandPriority !== priority) {
- break;
- }
- if (isGlobalKeyword(longhandValue)) {
- hasGlobalKeyword = true;
- }
- longhandValues.push(longhandValue);
- }
- }
- if (longhandValues.length === shorthandItem.shorthandFor.size) {
- if (hasGlobalKeyword) {
- const [firstValue, ...restValues] = longhandValues;
- if (restValues.every((value) => value === firstValue)) {
- this._setProperty(shorthandProperty, firstValue, priority);
- }
- } else {
- const parsedValue = shorthandItem.parse(longhandValues.join(" "));
- const shorthandValue = Object.values(parsedValue).join(" ");
- this._setProperty(shorthandProperty, shorthandValue, priority);
- }
- }
- }
- },
- enumerable: false
- },
-
- _positionShorthandSetter: {
- /**
- * @param {string} prop
- * @param {Array|string} val
- * @param {string} prior
- */
- value(prop, val, prior) {
- if (!shorthandProperties.has(prop)) {
- return;
- }
- const shorthandValues = [];
- if (Array.isArray(val)) {
- shorthandValues.push(...val);
- } else if (typeof val === "string") {
- shorthandValues.push(val);
- } else {
- return;
- }
- let priority = "";
- if (typeof prior === "string") {
- priority = prior;
- } else {
- priority = this._priorities.get(prop) ?? "";
- }
- const { position, shorthandFor } = shorthandProperties.get(prop);
- let hasPriority = false;
- for (const [longhandProperty, longhandItem] of shorthandFor) {
- const { position: longhandPosition } = longhandItem;
- const longhandValue = getPositionValue(shorthandValues, longhandPosition);
- if (priority) {
- this._setProperty(longhandProperty, longhandValue, priority);
- } else {
- const longhandPriority = this._priorities.get(longhandProperty) ?? "";
- if (longhandPriority) {
- hasPriority = true;
- } else {
- this._setProperty(longhandProperty, longhandValue, priority);
- }
- }
- }
- if (hasPriority) {
- this.removeProperty(prop);
- } else {
- const shorthandValue = getPositionValue(shorthandValues, position);
- this._setProperty(prop, shorthandValue, priority);
- }
- },
- enumerable: false
- },
-
- _positionLonghandSetter: {
- /**
- * @param {string} prop
- * @param {string} val
- * @param {string} prior
- * @param {string} shorthandProperty
- */
- value(prop, val, prior, shorthandProperty) {
- if (!shorthandProperty || !shorthandProperties.has(shorthandProperty)) {
- return;
- }
- const shorthandPriority = this._priorities.get(shorthandProperty);
- this.removeProperty(shorthandProperty);
- let priority = "";
- if (typeof prior === "string") {
- priority = prior;
- } else {
- priority = this._priorities.get(prop) ?? "";
- }
- this.removeProperty(prop);
- if (shorthandPriority && priority) {
- this._setProperty(prop, val);
- } else {
- this._setProperty(prop, val, priority);
- }
- if (val && !hasVarFunc(val)) {
- const longhandValues = [];
- const { shorthandFor, position: shorthandPosition } =
- shorthandProperties.get(shorthandProperty);
- for (const [longhandProperty] of shorthandFor) {
- const longhandValue = this.getPropertyValue(longhandProperty);
- const longhandPriority = this._priorities.get(longhandProperty) ?? "";
- if (!longhandValue || longhandPriority !== priority) {
- return;
- }
- longhandValues.push(longhandValue);
- }
- if (longhandValues.length === shorthandFor.size) {
- const replacedValue = getPositionValue(longhandValues, shorthandPosition);
- this._setProperty(shorthandProperty, replacedValue);
- }
- }
- },
- enumerable: false
- }
-});
-
-// Properties
-Object.defineProperties(CSSStyleDeclaration.prototype, generatedProperties);
-
-// Additional properties
-[...allProperties, ...allExtraProperties].forEach((property) => {
- if (!implementedProperties.has(property)) {
- const declaration = getPropertyDescriptor(property);
- Object.defineProperty(CSSStyleDeclaration.prototype, property, declaration);
- const camel = dashedToCamelCase(property);
- Object.defineProperty(CSSStyleDeclaration.prototype, camel, declaration);
- if (/^webkit[A-Z]/.test(camel)) {
- const pascal = camel.replace(/^webkit/, "Webkit");
- Object.defineProperty(CSSStyleDeclaration.prototype, pascal, declaration);
- }
- }
-});
-
-module.exports = {
- CSSStyleDeclaration,
- propertyList: Object.fromEntries(implementedProperties)
-};