- web/: Vue 3 + Vite + UnoCSS + Pinia, dark tactical theme (amber/#0d1117) - AppNav, ListingCard, SearchView with filters/sort, composables (useSnipeMode, useKonamiCode, useMotion), Pinia search store - Steal shimmer, auction countdown, Snipe Mode easter egg all native in Vue - docker/web/: nginx + multi-stage Dockerfile (node build → nginx serve) - compose.yml: api (8510) + web (8509) services - Dockerfile CMD updated to uvicorn for upcoming FastAPI layer - Clean build: 0 TS errors, 380 modules
27 lines
569 B
JavaScript
27 lines
569 B
JavaScript
'use strict'
|
|
|
|
let Container = require('./container')
|
|
let list = require('./list')
|
|
|
|
class Rule extends Container {
|
|
get selectors() {
|
|
return list.comma(this.selector)
|
|
}
|
|
|
|
set selectors(values) {
|
|
let match = this.selector ? this.selector.match(/,\s*/) : null
|
|
let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')
|
|
this.selector = values.join(sep)
|
|
}
|
|
|
|
constructor(defaults) {
|
|
super(defaults)
|
|
this.type = 'rule'
|
|
if (!this.nodes) this.nodes = []
|
|
}
|
|
}
|
|
|
|
module.exports = Rule
|
|
Rule.default = Rule
|
|
|
|
Container.registerRule(Rule)
|