Skip to content

Commit 4913d7e

Browse files
committed
+ CSSOM
1 parent 23b7e5a commit 4913d7e

File tree

5 files changed

+2711
-1
lines changed

5 files changed

+2711
-1
lines changed

Package.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ let package = Package(
4747
name: "Gamepad",
4848
targets: ["Gamepad"]
4949
),
50+
.library(
51+
name: "CSSOM",
52+
targets: ["CSSOM"]
53+
),
5054
.executable(name: "WebIDLToSwift", targets: ["WebIDLToSwift"]),
5155
],
5256
dependencies: [
@@ -96,6 +100,10 @@ let package = Package(
96100
name: "Gamepad",
97101
dependencies: ["DOM", "WebAPIBase", "ECMAScript"]
98102
),
103+
.target(
104+
name: "CSSOM",
105+
dependencies: ["DOM", "WebAPIBase", "ECMAScript"]
106+
),
99107
// This support library should be moved to JavaScriptKit
100108
.target(name: "ECMAScript", dependencies: [
101109
"JavaScriptKit",

Sources/CSSOM/Customized.swift

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import ECMAScript
2+
import JavaScriptKit
3+
4+
// copied out of generated file to work around issue with `colorSpace` being more permissive than in superclass
5+
public class CSSColor: CSSColorValue {
6+
@inlinable override public class var constructor: JSFunction? { JSObject.global[Strings.CSSColor].function }
7+
8+
public required init(unsafelyWrapping jsObject: JSObject) {
9+
_colorSpace = ReadWriteAttribute(jsObject: jsObject, name: Strings.colorSpace)
10+
_channels = ReadWriteAttribute(jsObject: jsObject, name: Strings.channels)
11+
_alpha = ReadWriteAttribute(jsObject: jsObject, name: Strings.alpha)
12+
super.init(unsafelyWrapping: jsObject)
13+
}
14+
15+
@inlinable public convenience init(colorSpace: CSSKeywordish, channels: [CSSColorPercent], alpha: CSSNumberish? = nil) {
16+
self.init(unsafelyWrapping: Self.constructor!.new(arguments: [_toJSValue(colorSpace), _toJSValue(channels), _toJSValue(alpha)]))
17+
}
18+
19+
@available(*, unavailable)
20+
override public var colorSpace: CSSKeywordValue {
21+
get { colorSpaceOrString.cssKeywordValue! }
22+
set { colorSpaceOrString = .cssKeywordValue(newValue) }
23+
}
24+
25+
@usableFromInline let _colorSpace: ReadWriteAttribute<CSSKeywordish>
26+
@inlinable public var colorSpaceOrString: CSSKeywordish {
27+
get { _colorSpace.wrappedValue }
28+
set { _colorSpace.wrappedValue = newValue }
29+
}
30+
31+
@ReadWriteAttribute
32+
public var channels: [CSSColorPercent]
33+
34+
@ReadWriteAttribute
35+
public var alpha: CSSNumberish
36+
}
37+
38+
extension Strings {
39+
@usableFromInline static let CSSColor: JSString = "CSSColor"
40+
@usableFromInline static let channels: JSString = "channels"
41+
}

0 commit comments

Comments
 (0)