diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51613c80..50d95ce0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,8 @@ jobs: strategy: fail-fast: false matrix: - sdk: [stable] + # TODO(srujzs): Replace with stable when 3.3 is out. + sdk: [beta] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d @@ -45,7 +46,8 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - sdk: [dev, beta, stable] + # TODO(srujzs): Add back stable when 3.3 is out. + sdk: [dev, beta] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d diff --git a/CHANGELOG.md b/CHANGELOG.md index f6580773..ec3d7fe8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ `package:web` classes. - Contribute a markdown file for the renamed classes from `dart:html` to `package:web` (see [renames.md](tool/renames.md)). +- Migrate classes to use interop extension types that implement `JSObject`. ## 0.4.2 diff --git a/lib/src/dom/accelerometer.dart b/lib/src/dom/accelerometer.dart index b831312f..6bd3c2f9 100644 --- a/lib/src/dom/accelerometer.dart +++ b/lib/src/dom/accelerometer.dart @@ -9,57 +9,36 @@ import 'dart:js_interop'; import 'generic_sensor.dart'; typedef AccelerometerLocalCoordinateSystem = String; - -@JS('Accelerometer') -@staticInterop -class Accelerometer implements Sensor { +extension type Accelerometer._(JSObject _) implements Sensor, JSObject { external factory Accelerometer([AccelerometerSensorOptions options]); -} -extension AccelerometerExtension on Accelerometer { external num? get x; external num? get y; external num? get z; } - -@JS() -@staticInterop -@anonymous -class AccelerometerSensorOptions implements SensorOptions { +extension type AccelerometerSensorOptions._(JSObject _) + implements SensorOptions, JSObject { external factory AccelerometerSensorOptions( {AccelerometerLocalCoordinateSystem referenceFrame}); -} -extension AccelerometerSensorOptionsExtension on AccelerometerSensorOptions { external set referenceFrame(AccelerometerLocalCoordinateSystem value); external AccelerometerLocalCoordinateSystem get referenceFrame; } - -@JS('LinearAccelerationSensor') -@staticInterop -class LinearAccelerationSensor implements Accelerometer { +extension type LinearAccelerationSensor._(JSObject _) + implements Accelerometer, JSObject { external factory LinearAccelerationSensor( [AccelerometerSensorOptions options]); } - -@JS('GravitySensor') -@staticInterop -class GravitySensor implements Accelerometer { +extension type GravitySensor._(JSObject _) implements Accelerometer, JSObject { external factory GravitySensor([AccelerometerSensorOptions options]); } - -@JS() -@staticInterop -@anonymous -class AccelerometerReadingValues { +extension type AccelerometerReadingValues._(JSObject _) implements JSObject { external factory AccelerometerReadingValues({ required num? x, required num? y, required num? z, }); -} -extension AccelerometerReadingValuesExtension on AccelerometerReadingValues { external set x(num? value); external num? get x; external set y(num? value); @@ -67,17 +46,11 @@ extension AccelerometerReadingValuesExtension on AccelerometerReadingValues { external set z(num? value); external num? get z; } - -@JS() -@staticInterop -@anonymous -class LinearAccelerationReadingValues implements AccelerometerReadingValues { +extension type LinearAccelerationReadingValues._(JSObject _) + implements AccelerometerReadingValues, JSObject { external factory LinearAccelerationReadingValues(); } - -@JS() -@staticInterop -@anonymous -class GravityReadingValues implements AccelerometerReadingValues { +extension type GravityReadingValues._(JSObject _) + implements AccelerometerReadingValues, JSObject { external factory GravityReadingValues(); } diff --git a/lib/src/dom/ambient_light.dart b/lib/src/dom/ambient_light.dart index ad1c614d..404c714b 100644 --- a/lib/src/dom/ambient_light.dart +++ b/lib/src/dom/ambient_light.dart @@ -8,24 +8,14 @@ import 'dart:js_interop'; import 'generic_sensor.dart'; -@JS('AmbientLightSensor') -@staticInterop -class AmbientLightSensor implements Sensor { +extension type AmbientLightSensor._(JSObject _) implements Sensor, JSObject { external factory AmbientLightSensor([SensorOptions sensorOptions]); -} -extension AmbientLightSensorExtension on AmbientLightSensor { external num? get illuminance; } - -@JS() -@staticInterop -@anonymous -class AmbientLightReadingValues { +extension type AmbientLightReadingValues._(JSObject _) implements JSObject { external factory AmbientLightReadingValues({required num? illuminance}); -} -extension AmbientLightReadingValuesExtension on AmbientLightReadingValues { external set illuminance(num? value); external num? get illuminance; } diff --git a/lib/src/dom/anchors.dart b/lib/src/dom/anchors.dart index 70b80f37..54f1811e 100644 --- a/lib/src/dom/anchors.dart +++ b/lib/src/dom/anchors.dart @@ -8,18 +8,9 @@ import 'dart:js_interop'; import 'webxr.dart'; -@JS('XRAnchor') -@staticInterop -class XRAnchor {} - -extension XRAnchorExtension on XRAnchor { +extension type XRAnchor._(JSObject _) implements JSObject { external JSPromise requestPersistentHandle(); external void delete(); external XRSpace get anchorSpace; } - -@JS('XRAnchorSet') -@staticInterop -class XRAnchorSet {} - -extension XRAnchorSetExtension on XRAnchorSet {} +extension type XRAnchorSet._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/angle_instanced_arrays.dart b/lib/src/dom/angle_instanced_arrays.dart index abbe54ec..c35494fa 100644 --- a/lib/src/dom/angle_instanced_arrays.dart +++ b/lib/src/dom/angle_instanced_arrays.dart @@ -8,13 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('ANGLE_instanced_arrays') -@staticInterop -class ANGLE_instanced_arrays { +extension type ANGLE_instanced_arrays._(JSObject _) implements JSObject { external static GLenum get VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE; -} - -extension ANGLEInstancedArraysExtension on ANGLE_instanced_arrays { external void drawArraysInstancedANGLE( GLenum mode, GLint first, diff --git a/lib/src/dom/attribution_reporting_api.dart b/lib/src/dom/attribution_reporting_api.dart index 28ad884b..77cd38e2 100644 --- a/lib/src/dom/attribution_reporting_api.dart +++ b/lib/src/dom/attribution_reporting_api.dart @@ -6,18 +6,13 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class AttributionReportingRequestOptions { +extension type AttributionReportingRequestOptions._(JSObject _) + implements JSObject { external factory AttributionReportingRequestOptions({ required bool eventSourceEligible, required bool triggerEligible, }); -} -extension AttributionReportingRequestOptionsExtension - on AttributionReportingRequestOptions { external set eventSourceEligible(bool value); external bool get eventSourceEligible; external set triggerEligible(bool value); diff --git a/lib/src/dom/audio_output.dart b/lib/src/dom/audio_output.dart index e319e634..e96a1e36 100644 --- a/lib/src/dom/audio_output.dart +++ b/lib/src/dom/audio_output.dart @@ -6,14 +6,9 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class AudioOutputOptions { +extension type AudioOutputOptions._(JSObject _) implements JSObject { external factory AudioOutputOptions({String deviceId}); -} -extension AudioOutputOptionsExtension on AudioOutputOptions { external set deviceId(String value); external String get deviceId; } diff --git a/lib/src/dom/audio_session.dart b/lib/src/dom/audio_session.dart index 2799ad11..26b551b8 100644 --- a/lib/src/dom/audio_session.dart +++ b/lib/src/dom/audio_session.dart @@ -11,12 +11,7 @@ import 'html.dart'; typedef AudioSessionState = String; typedef AudioSessionType = String; - -@JS('AudioSession') -@staticInterop -class AudioSession implements EventTarget {} - -extension AudioSessionExtension on AudioSession { +extension type AudioSession._(JSObject _) implements EventTarget, JSObject { external set type(AudioSessionType value); external AudioSessionType get type; external AudioSessionState get state; diff --git a/lib/src/dom/background_fetch.dart b/lib/src/dom/background_fetch.dart index d4b38bc7..674958ed 100644 --- a/lib/src/dom/background_fetch.dart +++ b/lib/src/dom/background_fetch.dart @@ -13,12 +13,7 @@ import 'service_workers.dart'; typedef BackgroundFetchResult = String; typedef BackgroundFetchFailureReason = String; - -@JS('BackgroundFetchManager') -@staticInterop -class BackgroundFetchManager {} - -extension BackgroundFetchManagerExtension on BackgroundFetchManager { +extension type BackgroundFetchManager._(JSObject _) implements JSObject { external JSPromise fetch( String id, JSAny requests, [ @@ -27,41 +22,26 @@ extension BackgroundFetchManagerExtension on BackgroundFetchManager { external JSPromise get(String id); external JSPromise getIds(); } - -@JS() -@staticInterop -@anonymous -class BackgroundFetchUIOptions { +extension type BackgroundFetchUIOptions._(JSObject _) implements JSObject { external factory BackgroundFetchUIOptions({ JSArray icons, String title, }); -} -extension BackgroundFetchUIOptionsExtension on BackgroundFetchUIOptions { external set icons(JSArray value); external JSArray get icons; external set title(String value); external String get title; } - -@JS() -@staticInterop -@anonymous -class BackgroundFetchOptions implements BackgroundFetchUIOptions { +extension type BackgroundFetchOptions._(JSObject _) + implements BackgroundFetchUIOptions, JSObject { external factory BackgroundFetchOptions({int downloadTotal}); -} -extension BackgroundFetchOptionsExtension on BackgroundFetchOptions { external set downloadTotal(int value); external int get downloadTotal; } - -@JS('BackgroundFetchRegistration') -@staticInterop -class BackgroundFetchRegistration implements EventTarget {} - -extension BackgroundFetchRegistrationExtension on BackgroundFetchRegistration { +extension type BackgroundFetchRegistration._(JSObject _) + implements EventTarget, JSObject { external JSPromise abort(); external JSPromise match( RequestInfo request, [ @@ -82,52 +62,33 @@ extension BackgroundFetchRegistrationExtension on BackgroundFetchRegistration { external set onprogress(EventHandler value); external EventHandler get onprogress; } - -@JS('BackgroundFetchRecord') -@staticInterop -class BackgroundFetchRecord {} - -extension BackgroundFetchRecordExtension on BackgroundFetchRecord { +extension type BackgroundFetchRecord._(JSObject _) implements JSObject { external Request get request; external JSPromise get responseReady; } - -@JS('BackgroundFetchEvent') -@staticInterop -class BackgroundFetchEvent implements ExtendableEvent { +extension type BackgroundFetchEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory BackgroundFetchEvent( String type, BackgroundFetchEventInit init, ); -} -extension BackgroundFetchEventExtension on BackgroundFetchEvent { external BackgroundFetchRegistration get registration; } - -@JS() -@staticInterop -@anonymous -class BackgroundFetchEventInit implements ExtendableEventInit { +extension type BackgroundFetchEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory BackgroundFetchEventInit( {required BackgroundFetchRegistration registration}); -} -extension BackgroundFetchEventInitExtension on BackgroundFetchEventInit { external set registration(BackgroundFetchRegistration value); external BackgroundFetchRegistration get registration; } - -@JS('BackgroundFetchUpdateUIEvent') -@staticInterop -class BackgroundFetchUpdateUIEvent implements BackgroundFetchEvent { +extension type BackgroundFetchUpdateUIEvent._(JSObject _) + implements BackgroundFetchEvent, JSObject { external factory BackgroundFetchUpdateUIEvent( String type, BackgroundFetchEventInit init, ); -} -extension BackgroundFetchUpdateUIEventExtension - on BackgroundFetchUpdateUIEvent { external JSPromise updateUI([BackgroundFetchUIOptions options]); } diff --git a/lib/src/dom/background_sync.dart b/lib/src/dom/background_sync.dart index f558f31f..bacd5a75 100644 --- a/lib/src/dom/background_sync.dart +++ b/lib/src/dom/background_sync.dart @@ -8,40 +8,26 @@ import 'dart:js_interop'; import 'service_workers.dart'; -@JS('SyncManager') -@staticInterop -class SyncManager {} - -extension SyncManagerExtension on SyncManager { +extension type SyncManager._(JSObject _) implements JSObject { external JSPromise register(String tag); external JSPromise getTags(); } - -@JS('SyncEvent') -@staticInterop -class SyncEvent implements ExtendableEvent { +extension type SyncEvent._(JSObject _) implements ExtendableEvent, JSObject { external factory SyncEvent( String type, SyncEventInit init, ); -} -extension SyncEventExtension on SyncEvent { external String get tag; external bool get lastChance; } - -@JS() -@staticInterop -@anonymous -class SyncEventInit implements ExtendableEventInit { +extension type SyncEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory SyncEventInit({ required String tag, bool lastChance, }); -} -extension SyncEventInitExtension on SyncEventInit { external set tag(String value); external String get tag; external set lastChance(bool value); diff --git a/lib/src/dom/battery_status.dart b/lib/src/dom/battery_status.dart index d1d31524..752d5801 100644 --- a/lib/src/dom/battery_status.dart +++ b/lib/src/dom/battery_status.dart @@ -9,11 +9,7 @@ import 'dart:js_interop'; import 'dom.dart'; import 'html.dart'; -@JS('BatteryManager') -@staticInterop -class BatteryManager implements EventTarget {} - -extension BatteryManagerExtension on BatteryManager { +extension type BatteryManager._(JSObject _) implements EventTarget, JSObject { external bool get charging; external num get chargingTime; external num get dischargingTime; diff --git a/lib/src/dom/capture_handle_identity.dart b/lib/src/dom/capture_handle_identity.dart index 5bf1b59a..f671de52 100644 --- a/lib/src/dom/capture_handle_identity.dart +++ b/lib/src/dom/capture_handle_identity.dart @@ -6,18 +6,13 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class CaptureHandleConfig { +extension type CaptureHandleConfig._(JSObject _) implements JSObject { external factory CaptureHandleConfig({ bool exposeOrigin, String handle, JSArray permittedOrigins, }); -} -extension CaptureHandleConfigExtension on CaptureHandleConfig { external set exposeOrigin(bool value); external bool get exposeOrigin; external set handle(String value); @@ -25,18 +20,12 @@ extension CaptureHandleConfigExtension on CaptureHandleConfig { external set permittedOrigins(JSArray value); external JSArray get permittedOrigins; } - -@JS() -@staticInterop -@anonymous -class CaptureHandle { +extension type CaptureHandle._(JSObject _) implements JSObject { external factory CaptureHandle({ String origin, String handle, }); -} -extension CaptureHandleExtension on CaptureHandle { external set origin(String value); external String get origin; external set handle(String value); diff --git a/lib/src/dom/captured_mouse_events.dart b/lib/src/dom/captured_mouse_events.dart index 1afba3c5..0f473401 100644 --- a/lib/src/dom/captured_mouse_events.dart +++ b/lib/src/dom/captured_mouse_events.dart @@ -8,31 +8,22 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('CapturedMouseEvent') -@staticInterop -class CapturedMouseEvent implements Event { +extension type CapturedMouseEvent._(JSObject _) implements Event, JSObject { external factory CapturedMouseEvent( String type, [ CapturedMouseEventInit eventInitDict, ]); -} -extension CapturedMouseEventExtension on CapturedMouseEvent { external int get surfaceX; external int get surfaceY; } - -@JS() -@staticInterop -@anonymous -class CapturedMouseEventInit implements EventInit { +extension type CapturedMouseEventInit._(JSObject _) + implements EventInit, JSObject { external factory CapturedMouseEventInit({ int surfaceX, int surfaceY, }); -} -extension CapturedMouseEventInitExtension on CapturedMouseEventInit { external set surfaceX(int value); external int get surfaceX; external set surfaceY(int value); diff --git a/lib/src/dom/clipboard_apis.dart b/lib/src/dom/clipboard_apis.dart index 1a6d6fc9..e444a1d1 100644 --- a/lib/src/dom/clipboard_apis.dart +++ b/lib/src/dom/clipboard_apis.dart @@ -13,81 +13,47 @@ import 'permissions.dart'; typedef ClipboardItemData = JSPromise; typedef ClipboardItems = JSArray; typedef PresentationStyle = String; - -@JS() -@staticInterop -@anonymous -class ClipboardEventInit implements EventInit { +extension type ClipboardEventInit._(JSObject _) implements EventInit, JSObject { external factory ClipboardEventInit({DataTransfer? clipboardData}); -} -extension ClipboardEventInitExtension on ClipboardEventInit { external set clipboardData(DataTransfer? value); external DataTransfer? get clipboardData; } - -@JS('ClipboardEvent') -@staticInterop -class ClipboardEvent implements Event { +extension type ClipboardEvent._(JSObject _) implements Event, JSObject { external factory ClipboardEvent( String type, [ ClipboardEventInit eventInitDict, ]); -} -extension ClipboardEventExtension on ClipboardEvent { external DataTransfer? get clipboardData; } - -@JS('ClipboardItem') -@staticInterop -class ClipboardItem { +extension type ClipboardItem._(JSObject _) implements JSObject { external factory ClipboardItem( JSAny items, [ ClipboardItemOptions options, ]); external static bool supports(String type); -} - -extension ClipboardItemExtension on ClipboardItem { external JSPromise getType(String type); external PresentationStyle get presentationStyle; external JSArray get types; } - -@JS() -@staticInterop -@anonymous -class ClipboardItemOptions { +extension type ClipboardItemOptions._(JSObject _) implements JSObject { external factory ClipboardItemOptions({PresentationStyle presentationStyle}); -} -extension ClipboardItemOptionsExtension on ClipboardItemOptions { external set presentationStyle(PresentationStyle value); external PresentationStyle get presentationStyle; } - -@JS('Clipboard') -@staticInterop -class Clipboard implements EventTarget {} - -extension ClipboardExtension on Clipboard { +extension type Clipboard._(JSObject _) implements EventTarget, JSObject { external JSPromise read(); external JSPromise readText(); external JSPromise write(ClipboardItems data); external JSPromise writeText(String data); } - -@JS() -@staticInterop -@anonymous -class ClipboardPermissionDescriptor implements PermissionDescriptor { +extension type ClipboardPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory ClipboardPermissionDescriptor({bool allowWithoutGesture}); -} -extension ClipboardPermissionDescriptorExtension - on ClipboardPermissionDescriptor { external set allowWithoutGesture(bool value); external bool get allowWithoutGesture; } diff --git a/lib/src/dom/compression.dart b/lib/src/dom/compression.dart index e3389342..f7ee1fb6 100644 --- a/lib/src/dom/compression.dart +++ b/lib/src/dom/compression.dart @@ -9,25 +9,15 @@ import 'dart:js_interop'; import 'streams.dart'; typedef CompressionFormat = String; - -@JS('CompressionStream') -@staticInterop -class CompressionStream { +extension type CompressionStream._(JSObject _) implements JSObject { external factory CompressionStream(CompressionFormat format); -} -extension CompressionStreamExtension on CompressionStream { external ReadableStream get readable; external WritableStream get writable; } - -@JS('DecompressionStream') -@staticInterop -class DecompressionStream { +extension type DecompressionStream._(JSObject _) implements JSObject { external factory DecompressionStream(CompressionFormat format); -} -extension DecompressionStreamExtension on DecompressionStream { external ReadableStream get readable; external WritableStream get writable; } diff --git a/lib/src/dom/compute_pressure.dart b/lib/src/dom/compute_pressure.dart index 8f643a7a..8e242f2c 100644 --- a/lib/src/dom/compute_pressure.dart +++ b/lib/src/dom/compute_pressure.dart @@ -11,44 +11,27 @@ import 'hr_time.dart'; typedef PressureUpdateCallback = JSFunction; typedef PressureSource = String; typedef PressureState = String; - -@JS('PressureObserver') -@staticInterop -class PressureObserver { +extension type PressureObserver._(JSObject _) implements JSObject { external factory PressureObserver( PressureUpdateCallback callback, [ PressureObserverOptions options, ]); external static JSArray get supportedSources; -} - -extension PressureObserverExtension on PressureObserver { external JSPromise observe(PressureSource source); external void unobserve(PressureSource source); external void disconnect(); external JSArray takeRecords(); } - -@JS('PressureRecord') -@staticInterop -class PressureRecord {} - -extension PressureRecordExtension on PressureRecord { +extension type PressureRecord._(JSObject _) implements JSObject { external JSObject toJSON(); external PressureSource get source; external PressureState get state; external DOMHighResTimeStamp get time; } - -@JS() -@staticInterop -@anonymous -class PressureObserverOptions { +extension type PressureObserverOptions._(JSObject _) implements JSObject { external factory PressureObserverOptions({num sampleRate}); -} -extension PressureObserverOptionsExtension on PressureObserverOptions { external set sampleRate(num value); external num get sampleRate; } diff --git a/lib/src/dom/console.dart b/lib/src/dom/console.dart index 172953ee..17b68cbc 100644 --- a/lib/src/dom/console.dart +++ b/lib/src/dom/console.dart @@ -8,12 +8,8 @@ import 'dart:js_interop'; @JS() external $Console get console; - @JS('console') -@staticInterop -abstract class $Console {} - -extension $ConsoleExtension on $Console { +extension type $Console._(JSObject _) implements JSObject { @JS('assert') external void assert_( JSAny? data, [ diff --git a/lib/src/dom/contact_picker.dart b/lib/src/dom/contact_picker.dart index ce7fba89..f148e3e6 100644 --- a/lib/src/dom/contact_picker.dart +++ b/lib/src/dom/contact_picker.dart @@ -7,12 +7,7 @@ import 'dart:js_interop'; typedef ContactProperty = String; - -@JS('ContactAddress') -@staticInterop -class ContactAddress {} - -extension ContactAddressExtension on ContactAddress { +extension type ContactAddress._(JSObject _) implements JSObject { external JSObject toJSON(); external String get city; external String get country; @@ -25,11 +20,7 @@ extension ContactAddressExtension on ContactAddress { external String get sortingCode; external JSArray get addressLine; } - -@JS() -@staticInterop -@anonymous -class ContactInfo { +extension type ContactInfo._(JSObject _) implements JSObject { external factory ContactInfo({ JSArray address, JSArray email, @@ -37,9 +28,7 @@ class ContactInfo { JSArray name, JSArray tel, }); -} -extension ContactInfoExtension on ContactInfo { external set address(JSArray value); external JSArray get address; external set email(JSArray value); @@ -51,24 +40,13 @@ extension ContactInfoExtension on ContactInfo { external set tel(JSArray value); external JSArray get tel; } - -@JS() -@staticInterop -@anonymous -class ContactsSelectOptions { +extension type ContactsSelectOptions._(JSObject _) implements JSObject { external factory ContactsSelectOptions({bool multiple}); -} -extension ContactsSelectOptionsExtension on ContactsSelectOptions { external set multiple(bool value); external bool get multiple; } - -@JS('ContactsManager') -@staticInterop -class ContactsManager {} - -extension ContactsManagerExtension on ContactsManager { +extension type ContactsManager._(JSObject _) implements JSObject { external JSPromise getProperties(); external JSPromise select( JSArray properties, [ diff --git a/lib/src/dom/content_index.dart b/lib/src/dom/content_index.dart index 758a221b..4acf9d51 100644 --- a/lib/src/dom/content_index.dart +++ b/lib/src/dom/content_index.dart @@ -9,11 +9,7 @@ import 'dart:js_interop'; import 'service_workers.dart'; typedef ContentCategory = String; - -@JS() -@staticInterop -@anonymous -class ContentDescription { +extension type ContentDescription._(JSObject _) implements JSObject { external factory ContentDescription({ required String id, required String title, @@ -22,9 +18,7 @@ class ContentDescription { JSArray icons, required String url, }); -} -extension ContentDescriptionExtension on ContentDescription { external set id(String value); external String get id; external set title(String value); @@ -38,38 +32,24 @@ extension ContentDescriptionExtension on ContentDescription { external set url(String value); external String get url; } - -@JS('ContentIndex') -@staticInterop -class ContentIndex {} - -extension ContentIndexExtension on ContentIndex { +extension type ContentIndex._(JSObject _) implements JSObject { external JSPromise add(ContentDescription description); external JSPromise delete(String id); external JSPromise getAll(); } - -@JS() -@staticInterop -@anonymous -class ContentIndexEventInit implements ExtendableEventInit { +extension type ContentIndexEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory ContentIndexEventInit({required String id}); -} -extension ContentIndexEventInitExtension on ContentIndexEventInit { external set id(String value); external String get id; } - -@JS('ContentIndexEvent') -@staticInterop -class ContentIndexEvent implements ExtendableEvent { +extension type ContentIndexEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory ContentIndexEvent( String type, ContentIndexEventInit init, ); -} -extension ContentIndexEventExtension on ContentIndexEvent { external String get id; } diff --git a/lib/src/dom/cookie_store.dart b/lib/src/dom/cookie_store.dart index a4dec176..0744659a 100644 --- a/lib/src/dom/cookie_store.dart +++ b/lib/src/dom/cookie_store.dart @@ -13,12 +13,7 @@ import 'service_workers.dart'; typedef CookieList = JSArray; typedef CookieSameSite = String; - -@JS('CookieStore') -@staticInterop -class CookieStore implements EventTarget {} - -extension CookieStoreExtension on CookieStore { +extension type CookieStore._(JSObject _) implements EventTarget, JSObject { external JSPromise get([JSAny nameOrOptions]); external JSPromise getAll([JSAny nameOrOptions]); external JSPromise set( @@ -29,28 +24,18 @@ extension CookieStoreExtension on CookieStore { external set onchange(EventHandler value); external EventHandler get onchange; } - -@JS() -@staticInterop -@anonymous -class CookieStoreGetOptions { +extension type CookieStoreGetOptions._(JSObject _) implements JSObject { external factory CookieStoreGetOptions({ String name, String url, }); -} -extension CookieStoreGetOptionsExtension on CookieStoreGetOptions { external set name(String value); external String get name; external set url(String value); external String get url; } - -@JS() -@staticInterop -@anonymous -class CookieInit { +extension type CookieInit._(JSObject _) implements JSObject { external factory CookieInit({ required String name, required String value, @@ -60,9 +45,7 @@ class CookieInit { CookieSameSite sameSite, bool partitioned, }); -} -extension CookieInitExtension on CookieInit { external set name(String value); external String get name; external set value(String value); @@ -78,20 +61,14 @@ extension CookieInitExtension on CookieInit { external set partitioned(bool value); external bool get partitioned; } - -@JS() -@staticInterop -@anonymous -class CookieStoreDeleteOptions { +extension type CookieStoreDeleteOptions._(JSObject _) implements JSObject { external factory CookieStoreDeleteOptions({ required String name, String? domain, String path, bool partitioned, }); -} -extension CookieStoreDeleteOptionsExtension on CookieStoreDeleteOptions { external set name(String value); external String get name; external set domain(String? value); @@ -101,11 +78,7 @@ extension CookieStoreDeleteOptionsExtension on CookieStoreDeleteOptions { external set partitioned(bool value); external bool get partitioned; } - -@JS() -@staticInterop -@anonymous -class CookieListItem { +extension type CookieListItem._(JSObject _) implements JSObject { external factory CookieListItem({ String name, String value, @@ -116,9 +89,7 @@ class CookieListItem { CookieSameSite sameSite, bool partitioned, }); -} -extension CookieListItemExtension on CookieListItem { external set name(String value); external String get name; external set value(String value); @@ -136,74 +107,49 @@ extension CookieListItemExtension on CookieListItem { external set partitioned(bool value); external bool get partitioned; } - -@JS('CookieStoreManager') -@staticInterop -class CookieStoreManager {} - -extension CookieStoreManagerExtension on CookieStoreManager { +extension type CookieStoreManager._(JSObject _) implements JSObject { external JSPromise subscribe(JSArray subscriptions); external JSPromise getSubscriptions(); external JSPromise unsubscribe(JSArray subscriptions); } - -@JS('CookieChangeEvent') -@staticInterop -class CookieChangeEvent implements Event { +extension type CookieChangeEvent._(JSObject _) implements Event, JSObject { external factory CookieChangeEvent( String type, [ CookieChangeEventInit eventInitDict, ]); -} -extension CookieChangeEventExtension on CookieChangeEvent { external JSArray get changed; external JSArray get deleted; } - -@JS() -@staticInterop -@anonymous -class CookieChangeEventInit implements EventInit { +extension type CookieChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory CookieChangeEventInit({ CookieList changed, CookieList deleted, }); -} -extension CookieChangeEventInitExtension on CookieChangeEventInit { external set changed(CookieList value); external CookieList get changed; external set deleted(CookieList value); external CookieList get deleted; } - -@JS('ExtendableCookieChangeEvent') -@staticInterop -class ExtendableCookieChangeEvent implements ExtendableEvent { +extension type ExtendableCookieChangeEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory ExtendableCookieChangeEvent( String type, [ ExtendableCookieChangeEventInit eventInitDict, ]); -} -extension ExtendableCookieChangeEventExtension on ExtendableCookieChangeEvent { external JSArray get changed; external JSArray get deleted; } - -@JS() -@staticInterop -@anonymous -class ExtendableCookieChangeEventInit implements ExtendableEventInit { +extension type ExtendableCookieChangeEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory ExtendableCookieChangeEventInit({ CookieList changed, CookieList deleted, }); -} -extension ExtendableCookieChangeEventInitExtension - on ExtendableCookieChangeEventInit { external set changed(CookieList value); external CookieList get changed; external set deleted(CookieList value); diff --git a/lib/src/dom/crash_reporting.dart b/lib/src/dom/crash_reporting.dart index 56d9fc97..a041c060 100644 --- a/lib/src/dom/crash_reporting.dart +++ b/lib/src/dom/crash_reporting.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'reporting.dart'; -@JS('CrashReportBody') -@staticInterop -class CrashReportBody implements ReportBody {} - -extension CrashReportBodyExtension on CrashReportBody { +extension type CrashReportBody._(JSObject _) implements ReportBody, JSObject { external JSObject toJSON(); external String? get reason; } diff --git a/lib/src/dom/credential_management.dart b/lib/src/dom/credential_management.dart index 6e6b23b8..0a2ceeea 100644 --- a/lib/src/dom/credential_management.dart +++ b/lib/src/dom/credential_management.dart @@ -13,45 +13,24 @@ import 'webauthn.dart'; typedef PasswordCredentialInit = JSObject; typedef CredentialMediationRequirement = String; - -@JS('Credential') -@staticInterop -class Credential { +extension type Credential._(JSObject _) implements JSObject { external static JSPromise isConditionalMediationAvailable(); -} - -extension CredentialExtension on Credential { external String get id; external String get type; } - -@JS('CredentialsContainer') -@staticInterop -class CredentialsContainer {} - -extension CredentialsContainerExtension on CredentialsContainer { +extension type CredentialsContainer._(JSObject _) implements JSObject { external JSPromise get([CredentialRequestOptions options]); external JSPromise store(Credential credential); external JSPromise create([CredentialCreationOptions options]); external JSPromise preventSilentAccess(); } - -@JS() -@staticInterop -@anonymous -class CredentialData { +extension type CredentialData._(JSObject _) implements JSObject { external factory CredentialData({required String id}); -} -extension CredentialDataExtension on CredentialData { external set id(String value); external String get id; } - -@JS() -@staticInterop -@anonymous -class CredentialRequestOptions { +extension type CredentialRequestOptions._(JSObject _) implements JSObject { external factory CredentialRequestOptions({ IdentityCredentialRequestOptions identity, CredentialMediationRequirement mediation, @@ -61,9 +40,7 @@ class CredentialRequestOptions { OTPCredentialRequestOptions otp, PublicKeyCredentialRequestOptions publicKey, }); -} -extension CredentialRequestOptionsExtension on CredentialRequestOptions { external set identity(IdentityCredentialRequestOptions value); external IdentityCredentialRequestOptions get identity; external set mediation(CredentialMediationRequirement value); @@ -79,20 +56,14 @@ extension CredentialRequestOptionsExtension on CredentialRequestOptions { external set publicKey(PublicKeyCredentialRequestOptions value); external PublicKeyCredentialRequestOptions get publicKey; } - -@JS() -@staticInterop -@anonymous -class CredentialCreationOptions { +extension type CredentialCreationOptions._(JSObject _) implements JSObject { external factory CredentialCreationOptions({ AbortSignal signal, PasswordCredentialInit password, FederatedCredentialInit federated, PublicKeyCredentialCreationOptions publicKey, }); -} -extension CredentialCreationOptionsExtension on CredentialCreationOptions { external set signal(AbortSignal value); external AbortSignal get signal; external set password(PasswordCredentialInit value); @@ -102,32 +73,23 @@ extension CredentialCreationOptionsExtension on CredentialCreationOptions { external set publicKey(PublicKeyCredentialCreationOptions value); external PublicKeyCredentialCreationOptions get publicKey; } - -@JS('PasswordCredential') -@staticInterop -class PasswordCredential implements Credential { +extension type PasswordCredential._(JSObject _) + implements Credential, JSObject { external factory PasswordCredential(JSObject dataOrForm); -} -extension PasswordCredentialExtension on PasswordCredential { external String get password; external String get name; external String get iconURL; } - -@JS() -@staticInterop -@anonymous -class PasswordCredentialData implements CredentialData { +extension type PasswordCredentialData._(JSObject _) + implements CredentialData, JSObject { external factory PasswordCredentialData({ String name, String iconURL, required String origin, required String password, }); -} -extension PasswordCredentialDataExtension on PasswordCredentialData { external set name(String value); external String get name; external set iconURL(String value); @@ -137,42 +99,29 @@ extension PasswordCredentialDataExtension on PasswordCredentialData { external set password(String value); external String get password; } - -@JS('FederatedCredential') -@staticInterop -class FederatedCredential implements Credential { +extension type FederatedCredential._(JSObject _) + implements Credential, JSObject { external factory FederatedCredential(FederatedCredentialInit data); -} -extension FederatedCredentialExtension on FederatedCredential { external String get provider; external String? get protocol; external String get name; external String get iconURL; } - -@JS() -@staticInterop -@anonymous -class FederatedCredentialRequestOptions { +extension type FederatedCredentialRequestOptions._(JSObject _) + implements JSObject { external factory FederatedCredentialRequestOptions({ JSArray providers, JSArray protocols, }); -} -extension FederatedCredentialRequestOptionsExtension - on FederatedCredentialRequestOptions { external set providers(JSArray value); external JSArray get providers; external set protocols(JSArray value); external JSArray get protocols; } - -@JS() -@staticInterop -@anonymous -class FederatedCredentialInit implements CredentialData { +extension type FederatedCredentialInit._(JSObject _) + implements CredentialData, JSObject { external factory FederatedCredentialInit({ String name, String iconURL, @@ -180,9 +129,7 @@ class FederatedCredentialInit implements CredentialData { required String provider, String protocol, }); -} -extension FederatedCredentialInitExtension on FederatedCredentialInit { external set name(String value); external String get name; external set iconURL(String value); diff --git a/lib/src/dom/csp.dart b/lib/src/dom/csp.dart index f3533931..28f7d1be 100644 --- a/lib/src/dom/csp.dart +++ b/lib/src/dom/csp.dart @@ -10,12 +10,8 @@ import 'dom.dart'; import 'reporting.dart'; typedef SecurityPolicyViolationEventDisposition = String; - -@JS('CSPViolationReportBody') -@staticInterop -class CSPViolationReportBody implements ReportBody {} - -extension CSPViolationReportBodyExtension on CSPViolationReportBody { +extension type CSPViolationReportBody._(JSObject _) + implements ReportBody, JSObject { external JSObject toJSON(); external String get documentURL; external String? get referrer; @@ -29,18 +25,13 @@ extension CSPViolationReportBodyExtension on CSPViolationReportBody { external int? get lineNumber; external int? get columnNumber; } - -@JS('SecurityPolicyViolationEvent') -@staticInterop -class SecurityPolicyViolationEvent implements Event { +extension type SecurityPolicyViolationEvent._(JSObject _) + implements Event, JSObject { external factory SecurityPolicyViolationEvent( String type, [ SecurityPolicyViolationEventInit eventInitDict, ]); -} -extension SecurityPolicyViolationEventExtension - on SecurityPolicyViolationEvent { external String get documentURI; external String get referrer; external String get blockedURI; @@ -54,11 +45,8 @@ extension SecurityPolicyViolationEventExtension external int get lineNumber; external int get columnNumber; } - -@JS() -@staticInterop -@anonymous -class SecurityPolicyViolationEventInit implements EventInit { +extension type SecurityPolicyViolationEventInit._(JSObject _) + implements EventInit, JSObject { external factory SecurityPolicyViolationEventInit({ required String documentURI, String referrer, @@ -73,10 +61,7 @@ class SecurityPolicyViolationEventInit implements EventInit { int lineNumber, int columnNumber, }); -} -extension SecurityPolicyViolationEventInitExtension - on SecurityPolicyViolationEventInit { external set documentURI(String value); external String get documentURI; external set referrer(String value); diff --git a/lib/src/dom/csp_next.dart b/lib/src/dom/csp_next.dart index f12780d2..009d2653 100644 --- a/lib/src/dom/csp_next.dart +++ b/lib/src/dom/csp_next.dart @@ -9,12 +9,8 @@ import 'dart:js_interop'; import 'reporting.dart'; typedef ScriptingPolicyViolationType = String; - -@JS('ScriptingPolicyReportBody') -@staticInterop -class ScriptingPolicyReportBody implements ReportBody {} - -extension ScriptingPolicyReportBodyExtension on ScriptingPolicyReportBody { +extension type ScriptingPolicyReportBody._(JSObject _) + implements ReportBody, JSObject { external JSObject toJSON(); external String get violationType; external String? get violationURL; diff --git a/lib/src/dom/css_anchor_position.dart b/lib/src/dom/css_anchor_position.dart index 69f3c869..9c85f869 100644 --- a/lib/src/dom/css_anchor_position.dart +++ b/lib/src/dom/css_anchor_position.dart @@ -8,18 +8,10 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSPositionFallbackRule') -@staticInterop -class CSSPositionFallbackRule implements CSSGroupingRule {} - -extension CSSPositionFallbackRuleExtension on CSSPositionFallbackRule { +extension type CSSPositionFallbackRule._(JSObject _) + implements CSSGroupingRule, JSObject { external String get name; } - -@JS('CSSTryRule') -@staticInterop -class CSSTryRule implements CSSRule {} - -extension CSSTryRuleExtension on CSSTryRule { +extension type CSSTryRule._(JSObject _) implements CSSRule, JSObject { external CSSStyleDeclaration get style; } diff --git a/lib/src/dom/css_animation_worklet.dart b/lib/src/dom/css_animation_worklet.dart index 6eabb422..bc8ce068 100644 --- a/lib/src/dom/css_animation_worklet.dart +++ b/lib/src/dom/css_animation_worklet.dart @@ -10,48 +10,29 @@ import 'html.dart'; import 'web_animations.dart'; typedef AnimatorInstanceConstructor = JSFunction; - -@JS('AnimationWorkletGlobalScope') -@staticInterop -class AnimationWorkletGlobalScope implements WorkletGlobalScope {} - -extension AnimationWorkletGlobalScopeExtension on AnimationWorkletGlobalScope { +extension type AnimationWorkletGlobalScope._(JSObject _) + implements WorkletGlobalScope, JSObject { external void registerAnimator( String name, AnimatorInstanceConstructor animatorCtor, ); } - -@JS('WorkletAnimationEffect') -@staticInterop -class WorkletAnimationEffect {} - -extension WorkletAnimationEffectExtension on WorkletAnimationEffect { +extension type WorkletAnimationEffect._(JSObject _) implements JSObject { external EffectTiming getTiming(); external ComputedEffectTiming getComputedTiming(); external set localTime(num? value); external num? get localTime; } - -@JS('WorkletAnimation') -@staticInterop -class WorkletAnimation implements Animation { +extension type WorkletAnimation._(JSObject _) implements Animation, JSObject { external factory WorkletAnimation( String animatorName, [ JSObject? effects, AnimationTimeline? timeline, JSAny? options, ]); -} -extension WorkletAnimationExtension on WorkletAnimation { external String get animatorName; } - -@JS('WorkletGroupEffect') -@staticInterop -class WorkletGroupEffect {} - -extension WorkletGroupEffectExtension on WorkletGroupEffect { +extension type WorkletGroupEffect._(JSObject _) implements JSObject { external JSArray getChildren(); } diff --git a/lib/src/dom/css_animations.dart b/lib/src/dom/css_animations.dart index 489e43f7..17a60673 100644 --- a/lib/src/dom/css_animations.dart +++ b/lib/src/dom/css_animations.dart @@ -9,33 +9,23 @@ import 'dart:js_interop'; import 'cssom.dart'; import 'dom.dart'; -@JS('AnimationEvent') -@staticInterop -class AnimationEvent implements Event { +extension type AnimationEvent._(JSObject _) implements Event, JSObject { external factory AnimationEvent( String type, [ AnimationEventInit animationEventInitDict, ]); -} -extension AnimationEventExtension on AnimationEvent { external String get animationName; external num get elapsedTime; external String get pseudoElement; } - -@JS() -@staticInterop -@anonymous -class AnimationEventInit implements EventInit { +extension type AnimationEventInit._(JSObject _) implements EventInit, JSObject { external factory AnimationEventInit({ String animationName, num elapsedTime, String pseudoElement, }); -} -extension AnimationEventInitExtension on AnimationEventInit { external set animationName(String value); external String get animationName; external set elapsedTime(num value); @@ -43,22 +33,12 @@ extension AnimationEventInitExtension on AnimationEventInit { external set pseudoElement(String value); external String get pseudoElement; } - -@JS('CSSKeyframeRule') -@staticInterop -class CSSKeyframeRule implements CSSRule {} - -extension CSSKeyframeRuleExtension on CSSKeyframeRule { +extension type CSSKeyframeRule._(JSObject _) implements CSSRule, JSObject { external set keyText(String value); external String get keyText; external CSSStyleDeclaration get style; } - -@JS('CSSKeyframesRule') -@staticInterop -class CSSKeyframesRule implements CSSRule {} - -extension CSSKeyframesRuleExtension on CSSKeyframesRule { +extension type CSSKeyframesRule._(JSObject _) implements CSSRule, JSObject { external void appendRule(String rule); external void deleteRule(String select); external CSSKeyframeRule? findRule(String select); diff --git a/lib/src/dom/css_animations_2.dart b/lib/src/dom/css_animations_2.dart index 4b513b95..89026622 100644 --- a/lib/src/dom/css_animations_2.dart +++ b/lib/src/dom/css_animations_2.dart @@ -8,10 +8,6 @@ import 'dart:js_interop'; import 'web_animations.dart'; -@JS('CSSAnimation') -@staticInterop -class CSSAnimation implements Animation {} - -extension CSSAnimationExtension on CSSAnimation { +extension type CSSAnimation._(JSObject _) implements Animation, JSObject { external String get animationName; } diff --git a/lib/src/dom/css_cascade.dart b/lib/src/dom/css_cascade.dart index 79c568f4..2becea6d 100644 --- a/lib/src/dom/css_cascade.dart +++ b/lib/src/dom/css_cascade.dart @@ -8,18 +8,11 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSLayerBlockRule') -@staticInterop -class CSSLayerBlockRule implements CSSGroupingRule {} - -extension CSSLayerBlockRuleExtension on CSSLayerBlockRule { +extension type CSSLayerBlockRule._(JSObject _) + implements CSSGroupingRule, JSObject { external String get name; } - -@JS('CSSLayerStatementRule') -@staticInterop -class CSSLayerStatementRule implements CSSRule {} - -extension CSSLayerStatementRuleExtension on CSSLayerStatementRule { +extension type CSSLayerStatementRule._(JSObject _) + implements CSSRule, JSObject { external JSArray get nameList; } diff --git a/lib/src/dom/css_cascade_6.dart b/lib/src/dom/css_cascade_6.dart index 087d35a1..19871c4d 100644 --- a/lib/src/dom/css_cascade_6.dart +++ b/lib/src/dom/css_cascade_6.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSScopeRule') -@staticInterop -class CSSScopeRule implements CSSGroupingRule {} - -extension CSSScopeRuleExtension on CSSScopeRule { +extension type CSSScopeRule._(JSObject _) implements CSSGroupingRule, JSObject { external String? get start; external String? get end; } diff --git a/lib/src/dom/css_color_5.dart b/lib/src/dom/css_color_5.dart index fd2e2e13..08226bdb 100644 --- a/lib/src/dom/css_color_5.dart +++ b/lib/src/dom/css_color_5.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSColorProfileRule') -@staticInterop -class CSSColorProfileRule implements CSSRule {} - -extension CSSColorProfileRuleExtension on CSSColorProfileRule { +extension type CSSColorProfileRule._(JSObject _) implements CSSRule, JSObject { external String get name; external String get src; external String get renderingIntent; diff --git a/lib/src/dom/css_conditional.dart b/lib/src/dom/css_conditional.dart index b7b962b0..cba3da83 100644 --- a/lib/src/dom/css_conditional.dart +++ b/lib/src/dom/css_conditional.dart @@ -8,22 +8,13 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSConditionRule') -@staticInterop -class CSSConditionRule implements CSSGroupingRule {} - -extension CSSConditionRuleExtension on CSSConditionRule { +extension type CSSConditionRule._(JSObject _) + implements CSSGroupingRule, JSObject { external String get conditionText; } - -@JS('CSSMediaRule') -@staticInterop -class CSSMediaRule implements CSSConditionRule {} - -extension CSSMediaRuleExtension on CSSMediaRule { +extension type CSSMediaRule._(JSObject _) + implements CSSConditionRule, JSObject { external MediaList get media; } - -@JS('CSSSupportsRule') -@staticInterop -class CSSSupportsRule implements CSSConditionRule {} +extension type CSSSupportsRule._(JSObject _) + implements CSSConditionRule, JSObject {} diff --git a/lib/src/dom/css_contain.dart b/lib/src/dom/css_contain.dart index 632bf5e2..ce1f3b67 100644 --- a/lib/src/dom/css_contain.dart +++ b/lib/src/dom/css_contain.dart @@ -8,29 +8,19 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('ContentVisibilityAutoStateChangeEvent') -@staticInterop -class ContentVisibilityAutoStateChangeEvent implements Event { +extension type ContentVisibilityAutoStateChangeEvent._(JSObject _) + implements Event, JSObject { external factory ContentVisibilityAutoStateChangeEvent( String type, [ ContentVisibilityAutoStateChangeEventInit eventInitDict, ]); -} -extension ContentVisibilityAutoStateChangeEventExtension - on ContentVisibilityAutoStateChangeEvent { external bool get skipped; } - -@JS() -@staticInterop -@anonymous -class ContentVisibilityAutoStateChangeEventInit implements EventInit { +extension type ContentVisibilityAutoStateChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory ContentVisibilityAutoStateChangeEventInit({bool skipped}); -} -extension ContentVisibilityAutoStateChangeEventInitExtension - on ContentVisibilityAutoStateChangeEventInit { external set skipped(bool value); external bool get skipped; } diff --git a/lib/src/dom/css_contain_3.dart b/lib/src/dom/css_contain_3.dart index 5bc5170d..ffd352ce 100644 --- a/lib/src/dom/css_contain_3.dart +++ b/lib/src/dom/css_contain_3.dart @@ -8,11 +8,8 @@ import 'dart:js_interop'; import 'css_conditional.dart'; -@JS('CSSContainerRule') -@staticInterop -class CSSContainerRule implements CSSConditionRule {} - -extension CSSContainerRuleExtension on CSSContainerRule { +extension type CSSContainerRule._(JSObject _) + implements CSSConditionRule, JSObject { external String get containerName; external String get containerQuery; } diff --git a/lib/src/dom/css_counter_styles.dart b/lib/src/dom/css_counter_styles.dart index 54773cb2..a6acb7d2 100644 --- a/lib/src/dom/css_counter_styles.dart +++ b/lib/src/dom/css_counter_styles.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSCounterStyleRule') -@staticInterop -class CSSCounterStyleRule implements CSSRule {} - -extension CSSCounterStyleRuleExtension on CSSCounterStyleRule { +extension type CSSCounterStyleRule._(JSObject _) implements CSSRule, JSObject { external set name(String value); external String get name; external set system(String value); diff --git a/lib/src/dom/css_font_loading.dart b/lib/src/dom/css_font_loading.dart index 947d582d..b6afae34 100644 --- a/lib/src/dom/css_font_loading.dart +++ b/lib/src/dom/css_font_loading.dart @@ -12,11 +12,7 @@ import 'html.dart'; typedef BinaryData = JSObject; typedef FontFaceLoadStatus = String; typedef FontFaceSetLoadStatus = String; - -@JS() -@staticInterop -@anonymous -class FontFaceDescriptors { +extension type FontFaceDescriptors._(JSObject _) implements JSObject { external factory FontFaceDescriptors({ String style, String weight, @@ -29,9 +25,7 @@ class FontFaceDescriptors { String descentOverride, String lineGapOverride, }); -} -extension FontFaceDescriptorsExtension on FontFaceDescriptors { external set style(String value); external String get style; external set weight(String value); @@ -53,18 +47,13 @@ extension FontFaceDescriptorsExtension on FontFaceDescriptors { external set lineGapOverride(String value); external String get lineGapOverride; } - -@JS('FontFace') -@staticInterop -class FontFace { +extension type FontFace._(JSObject _) implements JSObject { external factory FontFace( String family, JSAny source, [ FontFaceDescriptors descriptors, ]); -} -extension FontFaceExtension on FontFace { external JSPromise load(); external set family(String value); external String get family; @@ -94,79 +83,41 @@ extension FontFaceExtension on FontFace { external FontFaceVariations get variations; external FontFacePalettes get palettes; } - -@JS('FontFaceFeatures') -@staticInterop -class FontFaceFeatures {} - -@JS('FontFaceVariationAxis') -@staticInterop -class FontFaceVariationAxis {} - -extension FontFaceVariationAxisExtension on FontFaceVariationAxis { +extension type FontFaceFeatures._(JSObject _) implements JSObject {} +extension type FontFaceVariationAxis._(JSObject _) implements JSObject { external String get name; external String get axisTag; external num get minimumValue; external num get maximumValue; external num get defaultValue; } - -@JS('FontFaceVariations') -@staticInterop -class FontFaceVariations {} - -extension FontFaceVariationsExtension on FontFaceVariations {} - -@JS('FontFacePalette') -@staticInterop -class FontFacePalette {} - -extension FontFacePaletteExtension on FontFacePalette { +extension type FontFaceVariations._(JSObject _) implements JSObject {} +extension type FontFacePalette._(JSObject _) implements JSObject { external int get length; external bool get usableWithLightBackground; external bool get usableWithDarkBackground; } - -@JS('FontFacePalettes') -@staticInterop -class FontFacePalettes {} - -extension FontFacePalettesExtension on FontFacePalettes { +extension type FontFacePalettes._(JSObject _) implements JSObject { external int get length; } - -@JS() -@staticInterop -@anonymous -class FontFaceSetLoadEventInit implements EventInit { +extension type FontFaceSetLoadEventInit._(JSObject _) + implements EventInit, JSObject { external factory FontFaceSetLoadEventInit({JSArray fontfaces}); -} -extension FontFaceSetLoadEventInitExtension on FontFaceSetLoadEventInit { external set fontfaces(JSArray value); external JSArray get fontfaces; } - -@JS('FontFaceSetLoadEvent') -@staticInterop -class FontFaceSetLoadEvent implements Event { +extension type FontFaceSetLoadEvent._(JSObject _) implements Event, JSObject { external factory FontFaceSetLoadEvent( String type, [ FontFaceSetLoadEventInit eventInitDict, ]); -} -extension FontFaceSetLoadEventExtension on FontFaceSetLoadEvent { external JSArray get fontfaces; } - -@JS('FontFaceSet') -@staticInterop -class FontFaceSet implements EventTarget { +extension type FontFaceSet._(JSObject _) implements EventTarget, JSObject { external factory FontFaceSet(JSArray initialFaces); -} -extension FontFaceSetExtension on FontFaceSet { external FontFaceSet add(FontFace font); external bool delete(FontFace font); external void clear(); diff --git a/lib/src/dom/css_fonts.dart b/lib/src/dom/css_fonts.dart index c7f772e0..a85e4998 100644 --- a/lib/src/dom/css_fonts.dart +++ b/lib/src/dom/css_fonts.dart @@ -8,19 +8,11 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS('CSSFontFaceRule') -@staticInterop -class CSSFontFaceRule implements CSSRule {} - -extension CSSFontFaceRuleExtension on CSSFontFaceRule { +extension type CSSFontFaceRule._(JSObject _) implements CSSRule, JSObject { external CSSStyleDeclaration get style; } - -@JS('CSSFontFeatureValuesRule') -@staticInterop -class CSSFontFeatureValuesRule implements CSSRule {} - -extension CSSFontFeatureValuesRuleExtension on CSSFontFeatureValuesRule { +extension type CSSFontFeatureValuesRule._(JSObject _) + implements CSSRule, JSObject { external set fontFamily(String value); external String get fontFamily; external CSSFontFeatureValuesMap get annotation; @@ -30,23 +22,14 @@ extension CSSFontFeatureValuesRuleExtension on CSSFontFeatureValuesRule { external CSSFontFeatureValuesMap get characterVariant; external CSSFontFeatureValuesMap get styleset; } - -@JS('CSSFontFeatureValuesMap') -@staticInterop -class CSSFontFeatureValuesMap {} - -extension CSSFontFeatureValuesMapExtension on CSSFontFeatureValuesMap { +extension type CSSFontFeatureValuesMap._(JSObject _) implements JSObject { external void set( String featureValueName, JSAny values, ); } - -@JS('CSSFontPaletteValuesRule') -@staticInterop -class CSSFontPaletteValuesRule implements CSSRule {} - -extension CSSFontPaletteValuesRuleExtension on CSSFontPaletteValuesRule { +extension type CSSFontPaletteValuesRule._(JSObject _) + implements CSSRule, JSObject { external String get name; external String get fontFamily; external String get basePalette; diff --git a/lib/src/dom/css_highlight_api.dart b/lib/src/dom/css_highlight_api.dart index 69a805f3..905b93fb 100644 --- a/lib/src/dom/css_highlight_api.dart +++ b/lib/src/dom/css_highlight_api.dart @@ -9,22 +9,12 @@ import 'dart:js_interop'; import 'dom.dart'; typedef HighlightType = String; - -@JS('Highlight') -@staticInterop -class Highlight { +extension type Highlight._(JSObject _) implements JSObject { external factory Highlight(AbstractRange initialRanges); -} -extension HighlightExtension on Highlight { external set priority(int value); external int get priority; external set type(HighlightType value); external HighlightType get type; } - -@JS('HighlightRegistry') -@staticInterop -class HighlightRegistry {} - -extension HighlightRegistryExtension on HighlightRegistry {} +extension type HighlightRegistry._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/css_layout_api.dart b/lib/src/dom/css_layout_api.dart index 9f36cf34..33c6abba 100644 --- a/lib/src/dom/css_layout_api.dart +++ b/lib/src/dom/css_layout_api.dart @@ -14,40 +14,25 @@ typedef ChildDisplayType = String; typedef LayoutSizingMode = String; typedef BlockFragmentationType = String; typedef BreakType = String; - -@JS('LayoutWorkletGlobalScope') -@staticInterop -class LayoutWorkletGlobalScope implements WorkletGlobalScope {} - -extension LayoutWorkletGlobalScopeExtension on LayoutWorkletGlobalScope { +extension type LayoutWorkletGlobalScope._(JSObject _) + implements WorkletGlobalScope, JSObject { external void registerLayout( String name, VoidFunction layoutCtor, ); } - -@JS() -@staticInterop -@anonymous -class LayoutOptions { +extension type LayoutOptions._(JSObject _) implements JSObject { external factory LayoutOptions({ ChildDisplayType childDisplay, LayoutSizingMode sizing, }); -} -extension LayoutOptionsExtension on LayoutOptions { external set childDisplay(ChildDisplayType value); external ChildDisplayType get childDisplay; external set sizing(LayoutSizingMode value); external LayoutSizingMode get sizing; } - -@JS('LayoutChild') -@staticInterop -class LayoutChild {} - -extension LayoutChildExtension on LayoutChild { +extension type LayoutChild._(JSObject _) implements JSObject { external JSPromise intrinsicSizes(); external JSPromise layoutNextFragment( LayoutConstraintsOptions constraints, @@ -55,12 +40,7 @@ extension LayoutChildExtension on LayoutChild { ); external StylePropertyMapReadOnly get styleMap; } - -@JS('LayoutFragment') -@staticInterop -class LayoutFragment {} - -extension LayoutFragmentExtension on LayoutFragment { +extension type LayoutFragment._(JSObject _) implements JSObject { external num get inlineSize; external num get blockSize; external set inlineOffset(num value); @@ -70,21 +50,11 @@ extension LayoutFragmentExtension on LayoutFragment { external JSAny? get data; external ChildBreakToken? get breakToken; } - -@JS('IntrinsicSizes') -@staticInterop -class IntrinsicSizes {} - -extension IntrinsicSizesExtension on IntrinsicSizes { +extension type IntrinsicSizes._(JSObject _) implements JSObject { external num get minContentSize; external num get maxContentSize; } - -@JS('LayoutConstraints') -@staticInterop -class LayoutConstraints {} - -extension LayoutConstraintsExtension on LayoutConstraints { +extension type LayoutConstraints._(JSObject _) implements JSObject { external num get availableInlineSize; external num get availableBlockSize; external num? get fixedInlineSize; @@ -95,11 +65,7 @@ extension LayoutConstraintsExtension on LayoutConstraints { external BlockFragmentationType get blockFragmentationType; external JSAny? get data; } - -@JS() -@staticInterop -@anonymous -class LayoutConstraintsOptions { +extension type LayoutConstraintsOptions._(JSObject _) implements JSObject { external factory LayoutConstraintsOptions({ num availableInlineSize, num availableBlockSize, @@ -111,9 +77,7 @@ class LayoutConstraintsOptions { BlockFragmentationType blockFragmentationType, JSAny? data, }); -} -extension LayoutConstraintsOptionsExtension on LayoutConstraintsOptions { external set availableInlineSize(num value); external num get availableInlineSize; external set availableBlockSize(num value); @@ -133,47 +97,26 @@ extension LayoutConstraintsOptionsExtension on LayoutConstraintsOptions { external set data(JSAny? value); external JSAny? get data; } - -@JS('ChildBreakToken') -@staticInterop -class ChildBreakToken {} - -extension ChildBreakTokenExtension on ChildBreakToken { +extension type ChildBreakToken._(JSObject _) implements JSObject { external BreakType get breakType; external LayoutChild get child; } - -@JS('BreakToken') -@staticInterop -class BreakToken {} - -extension BreakTokenExtension on BreakToken { +extension type BreakToken._(JSObject _) implements JSObject { external JSArray get childBreakTokens; external JSAny? get data; } - -@JS() -@staticInterop -@anonymous -class BreakTokenOptions { +extension type BreakTokenOptions._(JSObject _) implements JSObject { external factory BreakTokenOptions({ JSArray childBreakTokens, JSAny? data, }); -} -extension BreakTokenOptionsExtension on BreakTokenOptions { external set childBreakTokens(JSArray value); external JSArray get childBreakTokens; external set data(JSAny? value); external JSAny? get data; } - -@JS('LayoutEdges') -@staticInterop -class LayoutEdges {} - -extension LayoutEdgesExtension on LayoutEdges { +extension type LayoutEdges._(JSObject _) implements JSObject { external num get inlineStart; external num get inlineEnd; external num get blockStart; @@ -181,11 +124,7 @@ extension LayoutEdgesExtension on LayoutEdges { external num get inline; external num get block; } - -@JS() -@staticInterop -@anonymous -class FragmentResultOptions { +extension type FragmentResultOptions._(JSObject _) implements JSObject { external factory FragmentResultOptions({ num inlineSize, num blockSize, @@ -194,9 +133,7 @@ class FragmentResultOptions { JSAny? data, BreakTokenOptions breakToken, }); -} -extension FragmentResultOptionsExtension on FragmentResultOptions { external set inlineSize(num value); external num get inlineSize; external set blockSize(num value); @@ -210,29 +147,18 @@ extension FragmentResultOptionsExtension on FragmentResultOptions { external set breakToken(BreakTokenOptions value); external BreakTokenOptions get breakToken; } - -@JS('FragmentResult') -@staticInterop -class FragmentResult { +extension type FragmentResult._(JSObject _) implements JSObject { external factory FragmentResult([FragmentResultOptions options]); -} -extension FragmentResultExtension on FragmentResult { external num get inlineSize; external num get blockSize; } - -@JS() -@staticInterop -@anonymous -class IntrinsicSizesResultOptions { +extension type IntrinsicSizesResultOptions._(JSObject _) implements JSObject { external factory IntrinsicSizesResultOptions({ num maxContentSize, num minContentSize, }); -} -extension IntrinsicSizesResultOptionsExtension on IntrinsicSizesResultOptions { external set maxContentSize(num value); external num get maxContentSize; external set minContentSize(num value); diff --git a/lib/src/dom/css_masking.dart b/lib/src/dom/css_masking.dart index 938b35ba..354273c8 100644 --- a/lib/src/dom/css_masking.dart +++ b/lib/src/dom/css_masking.dart @@ -8,20 +8,12 @@ import 'dart:js_interop'; import 'svg.dart'; -@JS('SVGClipPathElement') -@staticInterop -class SVGClipPathElement implements SVGElement {} - -extension SVGClipPathElementExtension on SVGClipPathElement { +extension type SVGClipPathElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedEnumeration get clipPathUnits; external SVGAnimatedTransformList get transform; } - -@JS('SVGMaskElement') -@staticInterop -class SVGMaskElement implements SVGElement {} - -extension SVGMaskElementExtension on SVGMaskElement { +extension type SVGMaskElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedEnumeration get maskUnits; external SVGAnimatedEnumeration get maskContentUnits; external SVGAnimatedLength get x; diff --git a/lib/src/dom/css_nav.dart b/lib/src/dom/css_nav.dart index a0dbb08b..2a5a8649 100644 --- a/lib/src/dom/css_nav.dart +++ b/lib/src/dom/css_nav.dart @@ -11,62 +11,40 @@ import 'uievents.dart'; typedef SpatialNavigationDirection = String; typedef FocusableAreaSearchMode = String; - -@JS() -@staticInterop -@anonymous -class FocusableAreasOption { +extension type FocusableAreasOption._(JSObject _) implements JSObject { external factory FocusableAreasOption({FocusableAreaSearchMode mode}); -} -extension FocusableAreasOptionExtension on FocusableAreasOption { external set mode(FocusableAreaSearchMode value); external FocusableAreaSearchMode get mode; } - -@JS() -@staticInterop -@anonymous -class SpatialNavigationSearchOptions { +extension type SpatialNavigationSearchOptions._(JSObject _) + implements JSObject { external factory SpatialNavigationSearchOptions({ JSArray? candidates, Node? container, }); -} -extension SpatialNavigationSearchOptionsExtension - on SpatialNavigationSearchOptions { external set candidates(JSArray? value); external JSArray? get candidates; external set container(Node? value); external Node? get container; } - -@JS('NavigationEvent') -@staticInterop -class NavigationEvent implements UIEvent { +extension type NavigationEvent._(JSObject _) implements UIEvent, JSObject { external factory NavigationEvent( String type, [ NavigationEventInit eventInitDict, ]); -} -extension NavigationEventExtension on NavigationEvent { external SpatialNavigationDirection get dir; external EventTarget? get relatedTarget; } - -@JS() -@staticInterop -@anonymous -class NavigationEventInit implements UIEventInit { +extension type NavigationEventInit._(JSObject _) + implements UIEventInit, JSObject { external factory NavigationEventInit({ SpatialNavigationDirection dir, EventTarget? relatedTarget, }); -} -extension NavigationEventInitExtension on NavigationEventInit { external set dir(SpatialNavigationDirection value); external SpatialNavigationDirection get dir; external set relatedTarget(EventTarget? value); diff --git a/lib/src/dom/css_paint_api.dart b/lib/src/dom/css_paint_api.dart index b2918c90..649abd16 100644 --- a/lib/src/dom/css_paint_api.dart +++ b/lib/src/dom/css_paint_api.dart @@ -10,36 +10,22 @@ import 'geometry.dart'; import 'html.dart'; import 'webidl.dart'; -@JS('PaintWorkletGlobalScope') -@staticInterop -class PaintWorkletGlobalScope implements WorkletGlobalScope {} - -extension PaintWorkletGlobalScopeExtension on PaintWorkletGlobalScope { +extension type PaintWorkletGlobalScope._(JSObject _) + implements WorkletGlobalScope, JSObject { external void registerPaint( String name, VoidFunction paintCtor, ); external num get devicePixelRatio; } - -@JS() -@staticInterop -@anonymous -class PaintRenderingContext2DSettings { +extension type PaintRenderingContext2DSettings._(JSObject _) + implements JSObject { external factory PaintRenderingContext2DSettings({bool alpha}); -} -extension PaintRenderingContext2DSettingsExtension - on PaintRenderingContext2DSettings { external set alpha(bool value); external bool get alpha; } - -@JS('PaintRenderingContext2D') -@staticInterop -class PaintRenderingContext2D {} - -extension PaintRenderingContext2DExtension on PaintRenderingContext2D { +extension type PaintRenderingContext2D._(JSObject _) implements JSObject { external void save(); external void restore(); external void reset(); @@ -238,12 +224,7 @@ extension PaintRenderingContext2DExtension on PaintRenderingContext2D { external set lineDashOffset(num value); external num get lineDashOffset; } - -@JS('PaintSize') -@staticInterop -class PaintSize {} - -extension PaintSizeExtension on PaintSize { +extension type PaintSize._(JSObject _) implements JSObject { external num get width; external num get height; } diff --git a/lib/src/dom/css_parser_api.dart b/lib/src/dom/css_parser_api.dart index 1c8f9f21..fe0184df 100644 --- a/lib/src/dom/css_parser_api.dart +++ b/lib/src/dom/css_parser_api.dart @@ -8,95 +8,63 @@ import 'dart:js_interop'; typedef CSSStringSource = JSAny; typedef CSSToken = JSAny; - -@JS() -@staticInterop -@anonymous -class CSSParserOptions { +extension type CSSParserOptions._(JSObject _) implements JSObject { external factory CSSParserOptions({JSObject atRules}); -} -extension CSSParserOptionsExtension on CSSParserOptions { external set atRules(JSObject value); external JSObject get atRules; } - -@JS('CSSParserRule') -@staticInterop -class CSSParserRule {} - -@JS('CSSParserAtRule') -@staticInterop -class CSSParserAtRule implements CSSParserRule { +extension type CSSParserRule._(JSObject _) implements JSObject {} +extension type CSSParserAtRule._(JSObject _) + implements CSSParserRule, JSObject { external factory CSSParserAtRule( String name, JSArray prelude, [ JSArray? body, ]); -} -extension CSSParserAtRuleExtension on CSSParserAtRule { external String get name; external JSArray get prelude; external JSArray? get body; } - -@JS('CSSParserQualifiedRule') -@staticInterop -class CSSParserQualifiedRule implements CSSParserRule { +extension type CSSParserQualifiedRule._(JSObject _) + implements CSSParserRule, JSObject { external factory CSSParserQualifiedRule( JSArray prelude, [ JSArray? body, ]); -} -extension CSSParserQualifiedRuleExtension on CSSParserQualifiedRule { external JSArray get prelude; external JSArray get body; } - -@JS('CSSParserDeclaration') -@staticInterop -class CSSParserDeclaration implements CSSParserRule { +extension type CSSParserDeclaration._(JSObject _) + implements CSSParserRule, JSObject { external factory CSSParserDeclaration( String name, [ JSArray body, ]); -} -extension CSSParserDeclarationExtension on CSSParserDeclaration { external String get name; external JSArray get body; } - -@JS('CSSParserValue') -@staticInterop -class CSSParserValue {} - -@JS('CSSParserBlock') -@staticInterop -class CSSParserBlock implements CSSParserValue { +extension type CSSParserValue._(JSObject _) implements JSObject {} +extension type CSSParserBlock._(JSObject _) + implements CSSParserValue, JSObject { external factory CSSParserBlock( String name, JSArray body, ); -} -extension CSSParserBlockExtension on CSSParserBlock { external String get name; external JSArray get body; } - -@JS('CSSParserFunction') -@staticInterop -class CSSParserFunction implements CSSParserValue { +extension type CSSParserFunction._(JSObject _) + implements CSSParserValue, JSObject { external factory CSSParserFunction( String name, JSArray args, ); -} -extension CSSParserFunctionExtension on CSSParserFunction { external String get name; external JSArray get args; } diff --git a/lib/src/dom/css_properties_values_api.dart b/lib/src/dom/css_properties_values_api.dart index 08fcbf36..3d80b662 100644 --- a/lib/src/dom/css_properties_values_api.dart +++ b/lib/src/dom/css_properties_values_api.dart @@ -8,19 +8,14 @@ import 'dart:js_interop'; import 'cssom.dart'; -@JS() -@staticInterop -@anonymous -class PropertyDefinition { +extension type PropertyDefinition._(JSObject _) implements JSObject { external factory PropertyDefinition({ required String name, String syntax, required bool inherits, String initialValue, }); -} -extension PropertyDefinitionExtension on PropertyDefinition { external set name(String value); external String get name; external set syntax(String value); @@ -30,12 +25,7 @@ extension PropertyDefinitionExtension on PropertyDefinition { external set initialValue(String value); external String get initialValue; } - -@JS('CSSPropertyRule') -@staticInterop -class CSSPropertyRule implements CSSRule {} - -extension CSSPropertyRuleExtension on CSSPropertyRule { +extension type CSSPropertyRule._(JSObject _) implements CSSRule, JSObject { external String get name; external String get syntax; external bool get inherits; diff --git a/lib/src/dom/css_pseudo.dart b/lib/src/dom/css_pseudo.dart index cb33934b..8c9489d8 100644 --- a/lib/src/dom/css_pseudo.dart +++ b/lib/src/dom/css_pseudo.dart @@ -10,11 +10,7 @@ import 'cssom_view.dart'; import 'dom.dart'; import 'geometry.dart'; -@JS('CSSPseudoElement') -@staticInterop -class CSSPseudoElement implements EventTarget {} - -extension CSSPseudoElementExtension on CSSPseudoElement { +extension type CSSPseudoElement._(JSObject _) implements EventTarget, JSObject { external CSSPseudoElement? pseudo(String type); external JSArray getBoxQuads([BoxQuadOptions options]); external DOMQuad convertQuadFromNode( diff --git a/lib/src/dom/css_regions.dart b/lib/src/dom/css_regions.dart index 4b7129d3..5bb91537 100644 --- a/lib/src/dom/css_regions.dart +++ b/lib/src/dom/css_regions.dart @@ -8,17 +8,8 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('NamedFlowMap') -@staticInterop -class NamedFlowMap {} - -extension NamedFlowMapExtension on NamedFlowMap {} - -@JS('NamedFlow') -@staticInterop -class NamedFlow implements EventTarget {} - -extension NamedFlowExtension on NamedFlow { +extension type NamedFlowMap._(JSObject _) implements JSObject {} +extension type NamedFlow._(JSObject _) implements EventTarget, JSObject { external JSArray getRegions(); external JSArray getContent(); external JSArray getRegionsByContent(Node node); diff --git a/lib/src/dom/css_transitions.dart b/lib/src/dom/css_transitions.dart index 5cfd253c..98ddeaa3 100644 --- a/lib/src/dom/css_transitions.dart +++ b/lib/src/dom/css_transitions.dart @@ -8,33 +8,24 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('TransitionEvent') -@staticInterop -class TransitionEvent implements Event { +extension type TransitionEvent._(JSObject _) implements Event, JSObject { external factory TransitionEvent( String type, [ TransitionEventInit transitionEventInitDict, ]); -} -extension TransitionEventExtension on TransitionEvent { external String get propertyName; external num get elapsedTime; external String get pseudoElement; } - -@JS() -@staticInterop -@anonymous -class TransitionEventInit implements EventInit { +extension type TransitionEventInit._(JSObject _) + implements EventInit, JSObject { external factory TransitionEventInit({ String propertyName, num elapsedTime, String pseudoElement, }); -} -extension TransitionEventInitExtension on TransitionEventInit { external set propertyName(String value); external String get propertyName; external set elapsedTime(num value); diff --git a/lib/src/dom/css_transitions_2.dart b/lib/src/dom/css_transitions_2.dart index 2b07ae7a..23804942 100644 --- a/lib/src/dom/css_transitions_2.dart +++ b/lib/src/dom/css_transitions_2.dart @@ -9,14 +9,8 @@ import 'dart:js_interop'; import 'cssom.dart'; import 'web_animations.dart'; -@JS('CSSStartingStyleRule') -@staticInterop -class CSSStartingStyleRule implements CSSGroupingRule {} - -@JS('CSSTransition') -@staticInterop -class CSSTransition implements Animation {} - -extension CSSTransitionExtension on CSSTransition { +extension type CSSStartingStyleRule._(JSObject _) + implements CSSGroupingRule, JSObject {} +extension type CSSTransition._(JSObject _) implements Animation, JSObject { external String get transitionProperty; } diff --git a/lib/src/dom/css_typed_om.dart b/lib/src/dom/css_typed_om.dart index 5f9f4350..bf8eed69 100644 --- a/lib/src/dom/css_typed_om.dart +++ b/lib/src/dom/css_typed_om.dart @@ -18,10 +18,7 @@ typedef CSSColorNumber = JSAny; typedef CSSColorAngle = JSAny; typedef CSSNumericBaseType = String; typedef CSSMathOperator = String; - -@JS('CSSStyleValue') -@staticInterop -class CSSStyleValue { +extension type CSSStyleValue._(JSObject _) implements JSObject { external static CSSStyleValue parse( String property, String cssText, @@ -31,23 +28,14 @@ class CSSStyleValue { String cssText, ); } - -@JS('StylePropertyMapReadOnly') -@staticInterop -class StylePropertyMapReadOnly {} - -extension StylePropertyMapReadOnlyExtension on StylePropertyMapReadOnly { +extension type StylePropertyMapReadOnly._(JSObject _) implements JSObject { external CSSStyleValue? get(String property); external JSArray getAll(String property); external bool has(String property); external int get size; } - -@JS('StylePropertyMap') -@staticInterop -class StylePropertyMap implements StylePropertyMapReadOnly {} - -extension StylePropertyMapExtension on StylePropertyMap { +extension type StylePropertyMap._(JSObject _) + implements StylePropertyMapReadOnly, JSObject { external void set( String property, JSAny values, @@ -59,47 +47,30 @@ extension StylePropertyMapExtension on StylePropertyMap { external void delete(String property); external void clear(); } - -@JS('CSSUnparsedValue') -@staticInterop -class CSSUnparsedValue implements CSSStyleValue { +extension type CSSUnparsedValue._(JSObject _) + implements CSSStyleValue, JSObject { external factory CSSUnparsedValue(JSArray members); -} -extension CSSUnparsedValueExtension on CSSUnparsedValue { external int get length; } - -@JS('CSSVariableReferenceValue') -@staticInterop -class CSSVariableReferenceValue { +extension type CSSVariableReferenceValue._(JSObject _) implements JSObject { external factory CSSVariableReferenceValue( String variable, [ CSSUnparsedValue? fallback, ]); -} -extension CSSVariableReferenceValueExtension on CSSVariableReferenceValue { external set variable(String value); external String get variable; external CSSUnparsedValue? get fallback; } - -@JS('CSSKeywordValue') -@staticInterop -class CSSKeywordValue implements CSSStyleValue { +extension type CSSKeywordValue._(JSObject _) + implements CSSStyleValue, JSObject { external factory CSSKeywordValue(String value); -} -extension CSSKeywordValueExtension on CSSKeywordValue { external set value(String value); external String get value; } - -@JS() -@staticInterop -@anonymous -class CSSNumericType { +extension type CSSNumericType._(JSObject _) implements JSObject { external factory CSSNumericType({ int length, int angle, @@ -110,9 +81,7 @@ class CSSNumericType { int percent, CSSNumericBaseType percentHint, }); -} -extension CSSNumericTypeExtension on CSSNumericType { external set length(int value); external int get length; external set angle(int value); @@ -130,14 +99,9 @@ extension CSSNumericTypeExtension on CSSNumericType { external set percentHint(CSSNumericBaseType value); external CSSNumericBaseType get percentHint; } - -@JS('CSSNumericValue') -@staticInterop -class CSSNumericValue implements CSSStyleValue { +extension type CSSNumericValue._(JSObject _) + implements CSSStyleValue, JSObject { external static CSSNumericValue parse(String cssText); -} - -extension CSSNumericValueExtension on CSSNumericValue { external CSSNumericValue add(CSSNumberish values); external CSSNumericValue sub(CSSNumberish values); external CSSNumericValue mul(CSSNumberish values); @@ -149,147 +113,84 @@ extension CSSNumericValueExtension on CSSNumericValue { external CSSMathSum toSum(String units); external CSSNumericType type(); } - -@JS('CSSUnitValue') -@staticInterop -class CSSUnitValue implements CSSNumericValue { +extension type CSSUnitValue._(JSObject _) implements CSSNumericValue, JSObject { external factory CSSUnitValue( num value, String unit, ); -} -extension CSSUnitValueExtension on CSSUnitValue { external set value(num value); external num get value; external String get unit; } - -@JS('CSSMathValue') -@staticInterop -class CSSMathValue implements CSSNumericValue {} - -extension CSSMathValueExtension on CSSMathValue { +extension type CSSMathValue._(JSObject _) implements CSSNumericValue, JSObject { external CSSMathOperator get operator; } - -@JS('CSSMathSum') -@staticInterop -class CSSMathSum implements CSSMathValue { +extension type CSSMathSum._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathSum(CSSNumberish args); -} -extension CSSMathSumExtension on CSSMathSum { external CSSNumericArray get values; } - -@JS('CSSMathProduct') -@staticInterop -class CSSMathProduct implements CSSMathValue { +extension type CSSMathProduct._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathProduct(CSSNumberish args); -} -extension CSSMathProductExtension on CSSMathProduct { external CSSNumericArray get values; } - -@JS('CSSMathNegate') -@staticInterop -class CSSMathNegate implements CSSMathValue { +extension type CSSMathNegate._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathNegate(CSSNumberish arg); -} -extension CSSMathNegateExtension on CSSMathNegate { external CSSNumericValue get value; } - -@JS('CSSMathInvert') -@staticInterop -class CSSMathInvert implements CSSMathValue { +extension type CSSMathInvert._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathInvert(CSSNumberish arg); -} -extension CSSMathInvertExtension on CSSMathInvert { external CSSNumericValue get value; } - -@JS('CSSMathMin') -@staticInterop -class CSSMathMin implements CSSMathValue { +extension type CSSMathMin._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathMin(CSSNumberish args); -} -extension CSSMathMinExtension on CSSMathMin { external CSSNumericArray get values; } - -@JS('CSSMathMax') -@staticInterop -class CSSMathMax implements CSSMathValue { +extension type CSSMathMax._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathMax(CSSNumberish args); -} -extension CSSMathMaxExtension on CSSMathMax { external CSSNumericArray get values; } - -@JS('CSSMathClamp') -@staticInterop -class CSSMathClamp implements CSSMathValue { +extension type CSSMathClamp._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathClamp( CSSNumberish lower, CSSNumberish value, CSSNumberish upper, ); -} -extension CSSMathClampExtension on CSSMathClamp { external CSSNumericValue get lower; external CSSNumericValue get value; external CSSNumericValue get upper; } - -@JS('CSSNumericArray') -@staticInterop -class CSSNumericArray {} - -extension CSSNumericArrayExtension on CSSNumericArray { +extension type CSSNumericArray._(JSObject _) implements JSObject { external int get length; } - -@JS('CSSTransformValue') -@staticInterop -class CSSTransformValue implements CSSStyleValue { +extension type CSSTransformValue._(JSObject _) + implements CSSStyleValue, JSObject { external factory CSSTransformValue(JSArray transforms); -} -extension CSSTransformValueExtension on CSSTransformValue { external DOMMatrix toMatrix(); external int get length; external bool get is2D; } - -@JS('CSSTransformComponent') -@staticInterop -class CSSTransformComponent {} - -extension CSSTransformComponentExtension on CSSTransformComponent { +extension type CSSTransformComponent._(JSObject _) implements JSObject { external DOMMatrix toMatrix(); external set is2D(bool value); external bool get is2D; } - -@JS('CSSTranslate') -@staticInterop -class CSSTranslate implements CSSTransformComponent { +extension type CSSTranslate._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSTranslate( CSSNumericValue x, CSSNumericValue y, [ CSSNumericValue z, ]); -} -extension CSSTranslateExtension on CSSTranslate { external set x(CSSNumericValue value); external CSSNumericValue get x; external set y(CSSNumericValue value); @@ -297,19 +198,15 @@ extension CSSTranslateExtension on CSSTranslate { external set z(CSSNumericValue value); external CSSNumericValue get z; } - -@JS('CSSRotate') -@staticInterop -class CSSRotate implements CSSTransformComponent { +extension type CSSRotate._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSRotate( JSAny angleOrX, [ CSSNumberish y, CSSNumberish z, CSSNumericValue angle, ]); -} -extension CSSRotateExtension on CSSRotate { external set x(CSSNumberish value); external CSSNumberish get x; external set y(CSSNumberish value); @@ -319,18 +216,14 @@ extension CSSRotateExtension on CSSRotate { external set angle(CSSNumericValue value); external CSSNumericValue get angle; } - -@JS('CSSScale') -@staticInterop -class CSSScale implements CSSTransformComponent { +extension type CSSScale._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSScale( CSSNumberish x, CSSNumberish y, [ CSSNumberish z, ]); -} -extension CSSScaleExtension on CSSScale { external set x(CSSNumberish value); external CSSNumberish get x; external set y(CSSNumberish value); @@ -338,104 +231,67 @@ extension CSSScaleExtension on CSSScale { external set z(CSSNumberish value); external CSSNumberish get z; } - -@JS('CSSSkew') -@staticInterop -class CSSSkew implements CSSTransformComponent { +extension type CSSSkew._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSSkew( CSSNumericValue ax, CSSNumericValue ay, ); -} -extension CSSSkewExtension on CSSSkew { external set ax(CSSNumericValue value); external CSSNumericValue get ax; external set ay(CSSNumericValue value); external CSSNumericValue get ay; } - -@JS('CSSSkewX') -@staticInterop -class CSSSkewX implements CSSTransformComponent { +extension type CSSSkewX._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSSkewX(CSSNumericValue ax); -} -extension CSSSkewXExtension on CSSSkewX { external set ax(CSSNumericValue value); external CSSNumericValue get ax; } - -@JS('CSSSkewY') -@staticInterop -class CSSSkewY implements CSSTransformComponent { +extension type CSSSkewY._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSSkewY(CSSNumericValue ay); -} -extension CSSSkewYExtension on CSSSkewY { external set ay(CSSNumericValue value); external CSSNumericValue get ay; } - -@JS('CSSPerspective') -@staticInterop -class CSSPerspective implements CSSTransformComponent { +extension type CSSPerspective._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSPerspective(CSSPerspectiveValue length); -} -extension CSSPerspectiveExtension on CSSPerspective { external set length(CSSPerspectiveValue value); external CSSPerspectiveValue get length; } - -@JS('CSSMatrixComponent') -@staticInterop -class CSSMatrixComponent implements CSSTransformComponent { +extension type CSSMatrixComponent._(JSObject _) + implements CSSTransformComponent, JSObject { external factory CSSMatrixComponent( DOMMatrixReadOnly matrix, [ CSSMatrixComponentOptions options, ]); -} -extension CSSMatrixComponentExtension on CSSMatrixComponent { external set matrix(DOMMatrix value); external DOMMatrix get matrix; } - -@JS() -@staticInterop -@anonymous -class CSSMatrixComponentOptions { +extension type CSSMatrixComponentOptions._(JSObject _) implements JSObject { external factory CSSMatrixComponentOptions({bool is2D}); -} -extension CSSMatrixComponentOptionsExtension on CSSMatrixComponentOptions { external set is2D(bool value); external bool get is2D; } - -@JS('CSSImageValue') -@staticInterop -class CSSImageValue implements CSSStyleValue {} - -@JS('CSSColorValue') -@staticInterop -class CSSColorValue implements CSSStyleValue { +extension type CSSImageValue._(JSObject _) implements CSSStyleValue, JSObject {} +extension type CSSColorValue._(JSObject _) implements CSSStyleValue, JSObject { external static JSObject parse(String cssText); } - -@JS('CSSRGB') -@staticInterop -class CSSRGB implements CSSColorValue { +extension type CSSRGB._(JSObject _) implements CSSColorValue, JSObject { external factory CSSRGB( CSSColorRGBComp r, CSSColorRGBComp g, CSSColorRGBComp b, [ CSSColorPercent alpha, ]); -} -extension CSSRGBExtension on CSSRGB { external set r(CSSColorRGBComp value); external CSSColorRGBComp get r; external set g(CSSColorRGBComp value); @@ -445,19 +301,14 @@ extension CSSRGBExtension on CSSRGB { external set alpha(CSSColorPercent value); external CSSColorPercent get alpha; } - -@JS('CSSHSL') -@staticInterop -class CSSHSL implements CSSColorValue { +extension type CSSHSL._(JSObject _) implements CSSColorValue, JSObject { external factory CSSHSL( CSSColorAngle h, CSSColorPercent s, CSSColorPercent l, [ CSSColorPercent alpha, ]); -} -extension CSSHSLExtension on CSSHSL { external set h(CSSColorAngle value); external CSSColorAngle get h; external set s(CSSColorPercent value); @@ -467,19 +318,14 @@ extension CSSHSLExtension on CSSHSL { external set alpha(CSSColorPercent value); external CSSColorPercent get alpha; } - -@JS('CSSHWB') -@staticInterop -class CSSHWB implements CSSColorValue { +extension type CSSHWB._(JSObject _) implements CSSColorValue, JSObject { external factory CSSHWB( CSSNumericValue h, CSSNumberish w, CSSNumberish b, [ CSSNumberish alpha, ]); -} -extension CSSHWBExtension on CSSHWB { external set h(CSSNumericValue value); external CSSNumericValue get h; external set w(CSSNumberish value); @@ -489,19 +335,14 @@ extension CSSHWBExtension on CSSHWB { external set alpha(CSSNumberish value); external CSSNumberish get alpha; } - -@JS('CSSLab') -@staticInterop -class CSSLab implements CSSColorValue { +extension type CSSLab._(JSObject _) implements CSSColorValue, JSObject { external factory CSSLab( CSSColorPercent l, CSSColorNumber a, CSSColorNumber b, [ CSSColorPercent alpha, ]); -} -extension CSSLabExtension on CSSLab { external set l(CSSColorPercent value); external CSSColorPercent get l; external set a(CSSColorNumber value); @@ -511,19 +352,14 @@ extension CSSLabExtension on CSSLab { external set alpha(CSSColorPercent value); external CSSColorPercent get alpha; } - -@JS('CSSLCH') -@staticInterop -class CSSLCH implements CSSColorValue { +extension type CSSLCH._(JSObject _) implements CSSColorValue, JSObject { external factory CSSLCH( CSSColorPercent l, CSSColorPercent c, CSSColorAngle h, [ CSSColorPercent alpha, ]); -} -extension CSSLCHExtension on CSSLCH { external set l(CSSColorPercent value); external CSSColorPercent get l; external set c(CSSColorPercent value); @@ -533,19 +369,14 @@ extension CSSLCHExtension on CSSLCH { external set alpha(CSSColorPercent value); external CSSColorPercent get alpha; } - -@JS('CSSOKLab') -@staticInterop -class CSSOKLab implements CSSColorValue { +extension type CSSOKLab._(JSObject _) implements CSSColorValue, JSObject { external factory CSSOKLab( CSSColorPercent l, CSSColorNumber a, CSSColorNumber b, [ CSSColorPercent alpha, ]); -} -extension CSSOKLabExtension on CSSOKLab { external set l(CSSColorPercent value); external CSSColorPercent get l; external set a(CSSColorNumber value); @@ -555,19 +386,14 @@ extension CSSOKLabExtension on CSSOKLab { external set alpha(CSSColorPercent value); external CSSColorPercent get alpha; } - -@JS('CSSOKLCH') -@staticInterop -class CSSOKLCH implements CSSColorValue { +extension type CSSOKLCH._(JSObject _) implements CSSColorValue, JSObject { external factory CSSOKLCH( CSSColorPercent l, CSSColorPercent c, CSSColorAngle h, [ CSSColorPercent alpha, ]); -} -extension CSSOKLCHExtension on CSSOKLCH { external set l(CSSColorPercent value); external CSSColorPercent get l; external set c(CSSColorPercent value); @@ -577,18 +403,13 @@ extension CSSOKLCHExtension on CSSOKLCH { external set alpha(CSSColorPercent value); external CSSColorPercent get alpha; } - -@JS('CSSColor') -@staticInterop -class CSSColor implements CSSColorValue { +extension type CSSColor._(JSObject _) implements CSSColorValue, JSObject { external factory CSSColor( CSSKeywordish colorSpace, JSArray channels, [ CSSNumberish alpha, ]); -} -extension CSSColorExtension on CSSColor { external set colorSpace(CSSKeywordish value); external CSSKeywordish get colorSpace; external set channels(JSArray value); diff --git a/lib/src/dom/css_view_transitions.dart b/lib/src/dom/css_view_transitions.dart index d9f0daf6..43524f7c 100644 --- a/lib/src/dom/css_view_transitions.dart +++ b/lib/src/dom/css_view_transitions.dart @@ -7,12 +7,7 @@ import 'dart:js_interop'; typedef UpdateCallback = JSFunction; - -@JS('ViewTransition') -@staticInterop -class ViewTransition {} - -extension ViewTransitionExtension on ViewTransition { +extension type ViewTransition._(JSObject _) implements JSObject { external void skipTransition(); external JSPromise get updateCallbackDone; external JSPromise get ready; diff --git a/lib/src/dom/css_view_transitions_2.dart b/lib/src/dom/css_view_transitions_2.dart index 98b72891..65eecf68 100644 --- a/lib/src/dom/css_view_transitions_2.dart +++ b/lib/src/dom/css_view_transitions_2.dart @@ -9,10 +9,6 @@ import 'dart:js_interop'; import 'css_view_transitions.dart'; import 'dom.dart'; -@JS('PageRevealEvent') -@staticInterop -class PageRevealEvent implements Event {} - -extension PageRevealEventExtension on PageRevealEvent { +extension type PageRevealEvent._(JSObject _) implements Event, JSObject { external ViewTransition? get viewTransition; } diff --git a/lib/src/dom/cssom.dart b/lib/src/dom/cssom.dart index b193026a..2ed8c7bb 100644 --- a/lib/src/dom/cssom.dart +++ b/lib/src/dom/cssom.dart @@ -12,11 +12,7 @@ import 'css_properties_values_api.dart'; import 'css_typed_om.dart'; import 'html.dart'; -@JS('MediaList') -@staticInterop -class MediaList {} - -extension MediaListExtension on MediaList { +extension type MediaList._(JSObject _) implements JSObject { external String? item(int index); external void appendMedium(String medium); external void deleteMedium(String medium); @@ -24,12 +20,7 @@ extension MediaListExtension on MediaList { external String get mediaText; external int get length; } - -@JS('StyleSheet') -@staticInterop -class StyleSheet {} - -extension StyleSheetExtension on StyleSheet { +extension type StyleSheet._(JSObject _) implements JSObject { external String get type; external String? get href; external JSObject? get ownerNode; @@ -39,14 +30,9 @@ extension StyleSheetExtension on StyleSheet { external set disabled(bool value); external bool get disabled; } - -@JS('CSSStyleSheet') -@staticInterop -class CSSStyleSheet implements StyleSheet { +extension type CSSStyleSheet._(JSObject _) implements StyleSheet, JSObject { external factory CSSStyleSheet([CSSStyleSheetInit options]); -} -extension CSSStyleSheetExtension on CSSStyleSheet { external int insertRule( String rule, [ int index, @@ -64,19 +50,13 @@ extension CSSStyleSheetExtension on CSSStyleSheet { external CSSRuleList get cssRules; external CSSRuleList get rules; } - -@JS() -@staticInterop -@anonymous -class CSSStyleSheetInit { +extension type CSSStyleSheetInit._(JSObject _) implements JSObject { external factory CSSStyleSheetInit({ String baseURL, JSAny media, bool disabled, }); -} -extension CSSStyleSheetInitExtension on CSSStyleSheetInit { external set baseURL(String value); external String get baseURL; external set media(JSAny value); @@ -84,28 +64,15 @@ extension CSSStyleSheetInitExtension on CSSStyleSheetInit { external set disabled(bool value); external bool get disabled; } - -@JS('StyleSheetList') -@staticInterop -class StyleSheetList {} - -extension StyleSheetListExtension on StyleSheetList { +extension type StyleSheetList._(JSObject _) implements JSObject { external CSSStyleSheet? item(int index); external int get length; } - -@JS('CSSRuleList') -@staticInterop -class CSSRuleList {} - -extension CSSRuleListExtension on CSSRuleList { +extension type CSSRuleList._(JSObject _) implements JSObject { external CSSRule? item(int index); external int get length; } - -@JS('CSSRule') -@staticInterop -class CSSRule { +extension type CSSRule._(JSObject _) implements JSObject { external static int get KEYFRAMES_RULE; external static int get KEYFRAME_RULE; external static int get SUPPORTS_RULE; @@ -119,44 +86,26 @@ class CSSRule { external static int get PAGE_RULE; external static int get MARGIN_RULE; external static int get NAMESPACE_RULE; -} - -extension CSSRuleExtension on CSSRule { external set cssText(String value); external String get cssText; external CSSRule? get parentRule; external CSSStyleSheet? get parentStyleSheet; external int get type; } - -@JS('CSSStyleRule') -@staticInterop -class CSSStyleRule implements CSSGroupingRule {} - -extension CSSStyleRuleExtension on CSSStyleRule { +extension type CSSStyleRule._(JSObject _) implements CSSGroupingRule, JSObject { external StylePropertyMap get styleMap; external set selectorText(String value); external String get selectorText; external CSSStyleDeclaration get style; } - -@JS('CSSImportRule') -@staticInterop -class CSSImportRule implements CSSRule {} - -extension CSSImportRuleExtension on CSSImportRule { +extension type CSSImportRule._(JSObject _) implements CSSRule, JSObject { external String get href; external MediaList get media; external CSSStyleSheet? get styleSheet; external String? get layerName; external String? get supportsText; } - -@JS('CSSGroupingRule') -@staticInterop -class CSSGroupingRule implements CSSRule {} - -extension CSSGroupingRuleExtension on CSSGroupingRule { +extension type CSSGroupingRule._(JSObject _) implements CSSRule, JSObject { external int insertRule( String rule, [ int index, @@ -164,40 +113,20 @@ extension CSSGroupingRuleExtension on CSSGroupingRule { external void deleteRule(int index); external CSSRuleList get cssRules; } - -@JS('CSSPageRule') -@staticInterop -class CSSPageRule implements CSSGroupingRule {} - -extension CSSPageRuleExtension on CSSPageRule { +extension type CSSPageRule._(JSObject _) implements CSSGroupingRule, JSObject { external set selectorText(String value); external String get selectorText; external CSSStyleDeclaration get style; } - -@JS('CSSMarginRule') -@staticInterop -class CSSMarginRule implements CSSRule {} - -extension CSSMarginRuleExtension on CSSMarginRule { +extension type CSSMarginRule._(JSObject _) implements CSSRule, JSObject { external String get name; external CSSStyleDeclaration get style; } - -@JS('CSSNamespaceRule') -@staticInterop -class CSSNamespaceRule implements CSSRule {} - -extension CSSNamespaceRuleExtension on CSSNamespaceRule { +extension type CSSNamespaceRule._(JSObject _) implements CSSRule, JSObject { external String get namespaceURI; external String get prefix; } - -@JS('CSSStyleDeclaration') -@staticInterop -class CSSStyleDeclaration {} - -extension CSSStyleDeclarationExtension on CSSStyleDeclaration { +extension type CSSStyleDeclaration._(JSObject _) implements JSObject { external String item(int index); external String getPropertyValue(String property); external String getPropertyPriority(String property); @@ -1472,15 +1401,10 @@ extension CSSStyleDeclarationExtension on CSSStyleDeclaration { external set zIndex(String value); external String get zIndex; } - @JS() external $CSS get CSS; - @JS('CSS') -@staticInterop -abstract class $CSS {} - -extension $CSSExtension on $CSS { +extension type $CSS._(JSObject _) implements JSObject { external bool supports( String conditionTextOrProperty, [ String value, diff --git a/lib/src/dom/cssom_view.dart b/lib/src/dom/cssom_view.dart index d6a74f09..6c4a1933 100644 --- a/lib/src/dom/cssom_view.dart +++ b/lib/src/dom/cssom_view.dart @@ -15,41 +15,25 @@ typedef GeometryNode = JSObject; typedef ScrollBehavior = String; typedef ScrollLogicalPosition = String; typedef CSSBoxType = String; - -@JS() -@staticInterop -@anonymous -class ScrollOptions { +extension type ScrollOptions._(JSObject _) implements JSObject { external factory ScrollOptions({ScrollBehavior behavior}); -} -extension ScrollOptionsExtension on ScrollOptions { external set behavior(ScrollBehavior value); external ScrollBehavior get behavior; } - -@JS() -@staticInterop -@anonymous -class ScrollToOptions implements ScrollOptions { +extension type ScrollToOptions._(JSObject _) + implements ScrollOptions, JSObject { external factory ScrollToOptions({ num left, num top, }); -} -extension ScrollToOptionsExtension on ScrollToOptions { external set left(num value); external num get left; external set top(num value); external num get top; } - -@JS('MediaQueryList') -@staticInterop -class MediaQueryList implements EventTarget {} - -extension MediaQueryListExtension on MediaQueryList { +extension type MediaQueryList._(JSObject _) implements EventTarget, JSObject { external void addListener(EventListener? callback); external void removeListener(EventListener? callback); external String get media; @@ -57,43 +41,28 @@ extension MediaQueryListExtension on MediaQueryList { external set onchange(EventHandler value); external EventHandler get onchange; } - -@JS('MediaQueryListEvent') -@staticInterop -class MediaQueryListEvent implements Event { +extension type MediaQueryListEvent._(JSObject _) implements Event, JSObject { external factory MediaQueryListEvent( String type, [ MediaQueryListEventInit eventInitDict, ]); -} -extension MediaQueryListEventExtension on MediaQueryListEvent { external String get media; external bool get matches; } - -@JS() -@staticInterop -@anonymous -class MediaQueryListEventInit implements EventInit { +extension type MediaQueryListEventInit._(JSObject _) + implements EventInit, JSObject { external factory MediaQueryListEventInit({ String media, bool matches, }); -} -extension MediaQueryListEventInitExtension on MediaQueryListEventInit { external set media(String value); external String get media; external set matches(bool value); external bool get matches; } - -@JS('Screen') -@staticInterop -class Screen {} - -extension ScreenExtension on Screen { +extension type Screen._(JSObject _) implements JSObject { external int get availWidth; external int get availHeight; external int get width; @@ -105,90 +74,57 @@ extension ScreenExtension on Screen { external set onchange(EventHandler value); external EventHandler get onchange; } - -@JS('CaretPosition') -@staticInterop -class CaretPosition {} - -extension CaretPositionExtension on CaretPosition { +extension type CaretPosition._(JSObject _) implements JSObject { external DOMRect? getClientRect(); external Node get offsetNode; external int get offset; } - -@JS() -@staticInterop -@anonymous -class ScrollIntoViewOptions implements ScrollOptions { +extension type ScrollIntoViewOptions._(JSObject _) + implements ScrollOptions, JSObject { external factory ScrollIntoViewOptions({ ScrollLogicalPosition block, ScrollLogicalPosition inline, }); -} -extension ScrollIntoViewOptionsExtension on ScrollIntoViewOptions { external set block(ScrollLogicalPosition value); external ScrollLogicalPosition get block; external set inline(ScrollLogicalPosition value); external ScrollLogicalPosition get inline; } - -@JS() -@staticInterop -@anonymous -class CheckVisibilityOptions { +extension type CheckVisibilityOptions._(JSObject _) implements JSObject { external factory CheckVisibilityOptions({ bool checkOpacity, bool checkVisibilityCSS, }); -} -extension CheckVisibilityOptionsExtension on CheckVisibilityOptions { external set checkOpacity(bool value); external bool get checkOpacity; external set checkVisibilityCSS(bool value); external bool get checkVisibilityCSS; } - -@JS() -@staticInterop -@anonymous -class BoxQuadOptions { +extension type BoxQuadOptions._(JSObject _) implements JSObject { external factory BoxQuadOptions({ CSSBoxType box, GeometryNode relativeTo, }); -} -extension BoxQuadOptionsExtension on BoxQuadOptions { external set box(CSSBoxType value); external CSSBoxType get box; external set relativeTo(GeometryNode value); external GeometryNode get relativeTo; } - -@JS() -@staticInterop -@anonymous -class ConvertCoordinateOptions { +extension type ConvertCoordinateOptions._(JSObject _) implements JSObject { external factory ConvertCoordinateOptions({ CSSBoxType fromBox, CSSBoxType toBox, }); -} -extension ConvertCoordinateOptionsExtension on ConvertCoordinateOptions { external set fromBox(CSSBoxType value); external CSSBoxType get fromBox; external set toBox(CSSBoxType value); external CSSBoxType get toBox; } - -@JS('VisualViewport') -@staticInterop -class VisualViewport implements EventTarget {} - -extension VisualViewportExtension on VisualViewport { +extension type VisualViewport._(JSObject _) implements EventTarget, JSObject { external num get offsetLeft; external num get offsetTop; external num get pageLeft; diff --git a/lib/src/dom/custom_state_pseudo_class.dart b/lib/src/dom/custom_state_pseudo_class.dart index d78ddeef..733ebe3a 100644 --- a/lib/src/dom/custom_state_pseudo_class.dart +++ b/lib/src/dom/custom_state_pseudo_class.dart @@ -6,10 +6,6 @@ import 'dart:js_interop'; -@JS('CustomStateSet') -@staticInterop -class CustomStateSet {} - -extension CustomStateSetExtension on CustomStateSet { +extension type CustomStateSet._(JSObject _) implements JSObject { external void add(String value); } diff --git a/lib/src/dom/datacue.dart b/lib/src/dom/datacue.dart index 96b9ea08..983e0934 100644 --- a/lib/src/dom/datacue.dart +++ b/lib/src/dom/datacue.dart @@ -8,18 +8,14 @@ import 'dart:js_interop'; import 'html.dart'; -@JS('DataCue') -@staticInterop -class DataCue implements TextTrackCue { +extension type DataCue._(JSObject _) implements TextTrackCue, JSObject { external factory DataCue( num startTime, num endTime, JSAny? value, [ String type, ]); -} -extension DataCueExtension on DataCue { external set value(JSAny? value); external JSAny? get value; external String get type; diff --git a/lib/src/dom/deprecation_reporting.dart b/lib/src/dom/deprecation_reporting.dart index 67efa858..5fbf15ed 100644 --- a/lib/src/dom/deprecation_reporting.dart +++ b/lib/src/dom/deprecation_reporting.dart @@ -8,11 +8,8 @@ import 'dart:js_interop'; import 'reporting.dart'; -@JS('DeprecationReportBody') -@staticInterop -class DeprecationReportBody implements ReportBody {} - -extension DeprecationReportBodyExtension on DeprecationReportBody { +extension type DeprecationReportBody._(JSObject _) + implements ReportBody, JSObject { external JSObject toJSON(); external String get id; external JSObject? get anticipatedRemoval; diff --git a/lib/src/dom/device_posture.dart b/lib/src/dom/device_posture.dart index c3ae3cc9..acfefaf8 100644 --- a/lib/src/dom/device_posture.dart +++ b/lib/src/dom/device_posture.dart @@ -10,12 +10,7 @@ import 'dom.dart'; import 'html.dart'; typedef DevicePostureType = String; - -@JS('DevicePosture') -@staticInterop -class DevicePosture implements EventTarget {} - -extension DevicePostureExtension on DevicePosture { +extension type DevicePosture._(JSObject _) implements EventTarget, JSObject { external DevicePostureType get type; external set onchange(EventHandler value); external EventHandler get onchange; diff --git a/lib/src/dom/digital_goods.dart b/lib/src/dom/digital_goods.dart index ade62bde..f8856ea4 100644 --- a/lib/src/dom/digital_goods.dart +++ b/lib/src/dom/digital_goods.dart @@ -9,22 +9,13 @@ import 'dart:js_interop'; import 'payment_request.dart'; typedef ItemType = String; - -@JS('DigitalGoodsService') -@staticInterop -class DigitalGoodsService {} - -extension DigitalGoodsServiceExtension on DigitalGoodsService { +extension type DigitalGoodsService._(JSObject _) implements JSObject { external JSPromise getDetails(JSArray itemIds); external JSPromise listPurchases(); external JSPromise listPurchaseHistory(); external JSPromise consume(String purchaseToken); } - -@JS() -@staticInterop -@anonymous -class ItemDetails { +extension type ItemDetails._(JSObject _) implements JSObject { external factory ItemDetails({ required String itemId, required String title, @@ -38,9 +29,7 @@ class ItemDetails { String introductoryPricePeriod, int introductoryPriceCycles, }); -} -extension ItemDetailsExtension on ItemDetails { external set itemId(String value); external String get itemId; external set title(String value); @@ -64,18 +53,12 @@ extension ItemDetailsExtension on ItemDetails { external set introductoryPriceCycles(int value); external int get introductoryPriceCycles; } - -@JS() -@staticInterop -@anonymous -class PurchaseDetails { +extension type PurchaseDetails._(JSObject _) implements JSObject { external factory PurchaseDetails({ required String itemId, required String purchaseToken, }); -} -extension PurchaseDetailsExtension on PurchaseDetails { external set itemId(String value); external String get itemId; external set purchaseToken(String value); diff --git a/lib/src/dom/document_picture_in_picture.dart b/lib/src/dom/document_picture_in_picture.dart index 4dac2bc2..37d12819 100644 --- a/lib/src/dom/document_picture_in_picture.dart +++ b/lib/src/dom/document_picture_in_picture.dart @@ -9,58 +9,38 @@ import 'dart:js_interop'; import 'dom.dart'; import 'html.dart'; -@JS('DocumentPictureInPicture') -@staticInterop -class DocumentPictureInPicture implements EventTarget {} - -extension DocumentPictureInPictureExtension on DocumentPictureInPicture { +extension type DocumentPictureInPicture._(JSObject _) + implements EventTarget, JSObject { external JSPromise requestWindow([DocumentPictureInPictureOptions options]); external Window get window; external set onenter(EventHandler value); external EventHandler get onenter; } - -@JS() -@staticInterop -@anonymous -class DocumentPictureInPictureOptions { +extension type DocumentPictureInPictureOptions._(JSObject _) + implements JSObject { external factory DocumentPictureInPictureOptions({ int width, int height, }); -} -extension DocumentPictureInPictureOptionsExtension - on DocumentPictureInPictureOptions { external set width(int value); external int get width; external set height(int value); external int get height; } - -@JS('DocumentPictureInPictureEvent') -@staticInterop -class DocumentPictureInPictureEvent implements Event { +extension type DocumentPictureInPictureEvent._(JSObject _) + implements Event, JSObject { external factory DocumentPictureInPictureEvent( String type, DocumentPictureInPictureEventInit eventInitDict, ); -} -extension DocumentPictureInPictureEventExtension - on DocumentPictureInPictureEvent { external Window get window; } - -@JS() -@staticInterop -@anonymous -class DocumentPictureInPictureEventInit implements EventInit { +extension type DocumentPictureInPictureEventInit._(JSObject _) + implements EventInit, JSObject { external factory DocumentPictureInPictureEventInit({required Window window}); -} -extension DocumentPictureInPictureEventInitExtension - on DocumentPictureInPictureEventInit { external set window(Window value); external Window get window; } diff --git a/lib/src/dom/dom.dart b/lib/src/dom/dom.dart index cb94a999..0f98f051 100644 --- a/lib/src/dom/dom.dart +++ b/lib/src/dom/dom.dart @@ -32,10 +32,7 @@ typedef NodeFilter = JSFunction; typedef XPathNSResolver = JSFunction; typedef ShadowRootMode = String; typedef SlotAssignmentMode = String; - -@JS('Event') -@staticInterop -class Event { +extension type Event._(JSObject _) implements JSObject { external factory Event( String type, [ EventInit eventInitDict, @@ -45,9 +42,6 @@ class Event { external static int get CAPTURING_PHASE; external static int get AT_TARGET; external static int get BUBBLING_PHASE; -} - -extension EventExtension on Event { external JSArray composedPath(); external void stopPropagation(); external void stopImmediatePropagation(); @@ -73,19 +67,13 @@ extension EventExtension on Event { external bool get isTrusted; external DOMHighResTimeStamp get timeStamp; } - -@JS() -@staticInterop -@anonymous -class EventInit { +extension type EventInit._(JSObject _) implements JSObject { external factory EventInit({ bool bubbles, bool cancelable, bool composed, }); -} -extension EventInitExtension on EventInit { external set bubbles(bool value); external bool get bubbles; external set cancelable(bool value); @@ -93,17 +81,12 @@ extension EventInitExtension on EventInit { external set composed(bool value); external bool get composed; } - -@JS('CustomEvent') -@staticInterop -class CustomEvent implements Event { +extension type CustomEvent._(JSObject _) implements Event, JSObject { external factory CustomEvent( String type, [ CustomEventInit eventInitDict, ]); -} -extension CustomEventExtension on CustomEvent { external void initCustomEvent( String type, [ bool bubbles, @@ -112,26 +95,15 @@ extension CustomEventExtension on CustomEvent { ]); external JSAny? get detail; } - -@JS() -@staticInterop -@anonymous -class CustomEventInit implements EventInit { +extension type CustomEventInit._(JSObject _) implements EventInit, JSObject { external factory CustomEventInit({JSAny? detail}); -} -extension CustomEventInitExtension on CustomEventInit { external set detail(JSAny? value); external JSAny? get detail; } - -@JS('EventTarget') -@staticInterop -class EventTarget { +extension type EventTarget._(JSObject _) implements JSObject { external factory EventTarget(); -} -extension EventTargetExtension on EventTarget { external void addEventListener( String type, EventListener? callback, [ @@ -144,31 +116,20 @@ extension EventTargetExtension on EventTarget { ]); external bool dispatchEvent(Event event); } - -@JS() -@staticInterop -@anonymous -class EventListenerOptions { +extension type EventListenerOptions._(JSObject _) implements JSObject { external factory EventListenerOptions({bool capture}); -} -extension EventListenerOptionsExtension on EventListenerOptions { external set capture(bool value); external bool get capture; } - -@JS() -@staticInterop -@anonymous -class AddEventListenerOptions implements EventListenerOptions { +extension type AddEventListenerOptions._(JSObject _) + implements EventListenerOptions, JSObject { external factory AddEventListenerOptions({ bool passive, bool once, AbortSignal signal, }); -} -extension AddEventListenerOptionsExtension on AddEventListenerOptions { external set passive(bool value); external bool get passive; external set once(bool value); @@ -176,60 +137,34 @@ extension AddEventListenerOptionsExtension on AddEventListenerOptions { external set signal(AbortSignal value); external AbortSignal get signal; } - -@JS('AbortController') -@staticInterop -class AbortController { +extension type AbortController._(JSObject _) implements JSObject { external factory AbortController(); -} -extension AbortControllerExtension on AbortController { external void abort([JSAny? reason]); external AbortSignal get signal; } - -@JS('AbortSignal') -@staticInterop -class AbortSignal implements EventTarget { +extension type AbortSignal._(JSObject _) implements EventTarget, JSObject { external static AbortSignal abort([JSAny? reason]); external static AbortSignal timeout(int milliseconds); external static AbortSignal any(JSArray signals); -} - -extension AbortSignalExtension on AbortSignal { external void throwIfAborted(); external bool get aborted; external JSAny? get reason; external set onabort(EventHandler value); external EventHandler get onabort; } - -@JS('NodeList') -@staticInterop -class NodeList {} - -extension NodeListExtension on NodeList { +extension type NodeList._(JSObject _) implements JSObject { external Node? item(int index); external int get length; } - -@JS('HTMLCollection') -@staticInterop -class HTMLCollection {} - -extension HTMLCollectionExtension on HTMLCollection { +extension type HTMLCollection._(JSObject _) implements JSObject { external Element? item(int index); external Element? namedItem(String name); external int get length; } - -@JS('MutationObserver') -@staticInterop -class MutationObserver { +extension type MutationObserver._(JSObject _) implements JSObject { external factory MutationObserver(MutationCallback callback); -} -extension MutationObserverExtension on MutationObserver { external void observe( Node target, [ MutationObserverInit options, @@ -237,11 +172,7 @@ extension MutationObserverExtension on MutationObserver { external void disconnect(); external JSArray takeRecords(); } - -@JS() -@staticInterop -@anonymous -class MutationObserverInit { +extension type MutationObserverInit._(JSObject _) implements JSObject { external factory MutationObserverInit({ bool childList, bool attributes, @@ -251,9 +182,7 @@ class MutationObserverInit { bool characterDataOldValue, JSArray attributeFilter, }); -} -extension MutationObserverInitExtension on MutationObserverInit { external set childList(bool value); external bool get childList; external set attributes(bool value); @@ -269,12 +198,7 @@ extension MutationObserverInitExtension on MutationObserverInit { external set attributeFilter(JSArray value); external JSArray get attributeFilter; } - -@JS('MutationRecord') -@staticInterop -class MutationRecord {} - -extension MutationRecordExtension on MutationRecord { +extension type MutationRecord._(JSObject _) implements JSObject { external String get type; external Node get target; external NodeList get addedNodes; @@ -285,10 +209,7 @@ extension MutationRecordExtension on MutationRecord { external String? get attributeNamespace; external String? get oldValue; } - -@JS('Node') -@staticInterop -class Node implements EventTarget { +extension type Node._(JSObject _) implements EventTarget, JSObject { external static int get ELEMENT_NODE; external static int get ATTRIBUTE_NODE; external static int get TEXT_NODE; @@ -307,9 +228,6 @@ class Node implements EventTarget { external static int get DOCUMENT_POSITION_CONTAINS; external static int get DOCUMENT_POSITION_CONTAINED_BY; external static int get DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC; -} - -extension NodeExtension on Node { external Node getRootNode([GetRootNodeOptions options]); external bool hasChildNodes(); external void normalize(); @@ -348,29 +266,17 @@ extension NodeExtension on Node { external set textContent(String? value); external String? get textContent; } - -@JS() -@staticInterop -@anonymous -class GetRootNodeOptions { +extension type GetRootNodeOptions._(JSObject _) implements JSObject { external factory GetRootNodeOptions({bool composed}); -} -extension GetRootNodeOptionsExtension on GetRootNodeOptions { external set composed(bool value); external bool get composed; } - @JS() external Document get document; - -@JS('Document') -@staticInterop -class Document implements Node { +extension type Document._(JSObject _) implements Node, JSObject { external factory Document(); -} -extension DocumentExtension on Document { external ViewTransition startViewTransition([UpdateCallback? updateCallback]); external Element? elementFromPoint( num x, @@ -795,30 +701,16 @@ extension DocumentExtension on Document { external set onbeforexrselect(EventHandler value); external EventHandler get onbeforexrselect; } - -@JS('XMLDocument') -@staticInterop -class XMLDocument implements Document {} - -@JS() -@staticInterop -@anonymous -class ElementCreationOptions { +extension type XMLDocument._(JSObject _) implements Document, JSObject {} +extension type ElementCreationOptions._(JSObject _) implements JSObject { external factory ElementCreationOptions({String is_}); -} -extension ElementCreationOptionsExtension on ElementCreationOptions { @JS('is') external set is_(String value); @JS('is') external String get is_; } - -@JS('DOMImplementation') -@staticInterop -class DOMImplementation {} - -extension DOMImplementationExtension on DOMImplementation { +extension type DOMImplementation._(JSObject _) implements JSObject { external DocumentType createDocumentType( String qualifiedName, String publicId, @@ -832,12 +724,7 @@ extension DOMImplementationExtension on DOMImplementation { external Document createHTMLDocument([String title]); external bool hasFeature(); } - -@JS('DocumentType') -@staticInterop -class DocumentType implements Node {} - -extension DocumentTypeExtension on DocumentType { +extension type DocumentType._(JSObject _) implements Node, JSObject { external void before(JSAny nodes); external void after(JSAny nodes); external void replaceWith(JSAny nodes); @@ -846,14 +733,9 @@ extension DocumentTypeExtension on DocumentType { external String get publicId; external String get systemId; } - -@JS('DocumentFragment') -@staticInterop -class DocumentFragment implements Node { +extension type DocumentFragment._(JSObject _) implements Node, JSObject { external factory DocumentFragment(); -} -extension DocumentFragmentExtension on DocumentFragment { external Element? getElementById(String elementId); external void prepend(JSAny nodes); external void append(JSAny nodes); @@ -865,12 +747,7 @@ extension DocumentFragmentExtension on DocumentFragment { external Element? get lastElementChild; external int get childElementCount; } - -@JS('ShadowRoot') -@staticInterop -class ShadowRoot implements DocumentFragment {} - -extension ShadowRootExtension on ShadowRoot { +extension type ShadowRoot._(JSObject _) implements DocumentFragment, JSObject { external JSArray getAnimations(); external ShadowRootMode get mode; external bool get delegatesFocus; @@ -888,12 +765,7 @@ extension ShadowRootExtension on ShadowRoot { external Element? get pictureInPictureElement; external Element? get pointerLockElement; } - -@JS('Element') -@staticInterop -class Element implements Node {} - -extension ElementExtension on Element { +extension type Element._(JSObject _) implements Node, JSObject { external void insertAdjacentHTML( String position, String text, @@ -1159,19 +1031,13 @@ extension ElementExtension on Element { external set ariaValueText(String? value); external String? get ariaValueText; } - -@JS() -@staticInterop -@anonymous -class ShadowRootInit { +extension type ShadowRootInit._(JSObject _) implements JSObject { external factory ShadowRootInit({ required ShadowRootMode mode, bool delegatesFocus, SlotAssignmentMode slotAssignment, }); -} -extension ShadowRootInitExtension on ShadowRootInit { external set mode(ShadowRootMode value); external ShadowRootMode get mode; external set delegatesFocus(bool value); @@ -1179,12 +1045,7 @@ extension ShadowRootInitExtension on ShadowRootInit { external set slotAssignment(SlotAssignmentMode value); external SlotAssignmentMode get slotAssignment; } - -@JS('NamedNodeMap') -@staticInterop -class NamedNodeMap {} - -extension NamedNodeMapExtension on NamedNodeMap { +extension type NamedNodeMap._(JSObject _) implements JSObject { external Attr? item(int index); external Attr? getNamedItem(String qualifiedName); external Attr? getNamedItemNS( @@ -1200,12 +1061,7 @@ extension NamedNodeMapExtension on NamedNodeMap { ); external int get length; } - -@JS('Attr') -@staticInterop -class Attr implements Node {} - -extension AttrExtension on Attr { +extension type Attr._(JSObject _) implements Node, JSObject { external String? get namespaceURI; external String? get prefix; external String get localName; @@ -1215,12 +1071,7 @@ extension AttrExtension on Attr { external Element? get ownerElement; external bool get specified; } - -@JS('CharacterData') -@staticInterop -class CharacterData implements Node {} - -extension CharacterDataExtension on CharacterData { +extension type CharacterData._(JSObject _) implements Node, JSObject { external String substringData( int offset, int count, @@ -1249,14 +1100,9 @@ extension CharacterDataExtension on CharacterData { external Element? get previousElementSibling; external Element? get nextElementSibling; } - -@JS('Text') -@staticInterop -class Text implements CharacterData { +extension type Text._(JSObject _) implements CharacterData, JSObject { external factory Text([String data]); -} -extension TextExtension on Text { external Text splitText(int offset); external JSArray getBoxQuads([BoxQuadOptions options]); external DOMQuad convertQuadFromNode( @@ -1277,51 +1123,30 @@ extension TextExtension on Text { external String get wholeText; external HTMLSlotElement? get assignedSlot; } - -@JS('CDATASection') -@staticInterop -class CDATASection implements Text {} - -@JS('ProcessingInstruction') -@staticInterop -class ProcessingInstruction implements CharacterData {} - -extension ProcessingInstructionExtension on ProcessingInstruction { +extension type CDATASection._(JSObject _) implements Text, JSObject {} +extension type ProcessingInstruction._(JSObject _) + implements CharacterData, JSObject { external String get target; external CSSStyleSheet? get sheet; } - -@JS('Comment') -@staticInterop -class Comment implements CharacterData { +extension type Comment._(JSObject _) implements CharacterData, JSObject { external factory Comment([String data]); } - -@JS('AbstractRange') -@staticInterop -class AbstractRange {} - -extension AbstractRangeExtension on AbstractRange { +extension type AbstractRange._(JSObject _) implements JSObject { external Node get startContainer; external int get startOffset; external Node get endContainer; external int get endOffset; external bool get collapsed; } - -@JS() -@staticInterop -@anonymous -class StaticRangeInit { +extension type StaticRangeInit._(JSObject _) implements JSObject { external factory StaticRangeInit({ required Node startContainer, required int startOffset, required Node endContainer, required int endOffset, }); -} -extension StaticRangeInitExtension on StaticRangeInit { external set startContainer(Node value); external Node get startContainer; external set startOffset(int value); @@ -1331,25 +1156,16 @@ extension StaticRangeInitExtension on StaticRangeInit { external set endOffset(int value); external int get endOffset; } - -@JS('StaticRange') -@staticInterop -class StaticRange implements AbstractRange { +extension type StaticRange._(JSObject _) implements AbstractRange, JSObject { external factory StaticRange(StaticRangeInit init); } - -@JS('Range') -@staticInterop -class Range implements AbstractRange { +extension type Range._(JSObject _) implements AbstractRange, JSObject { external factory Range(); external static int get START_TO_START; external static int get START_TO_END; external static int get END_TO_END; external static int get END_TO_START; -} - -extension RangeExtension on Range { external DocumentFragment createContextualFragment(String fragment); external DOMRectList getClientRects(); external DOMRect getBoundingClientRect(); @@ -1390,12 +1206,7 @@ extension RangeExtension on Range { external bool intersectsNode(Node node); external Node get commonAncestorContainer; } - -@JS('NodeIterator') -@staticInterop -class NodeIterator {} - -extension NodeIteratorExtension on NodeIterator { +extension type NodeIterator._(JSObject _) implements JSObject { external Node? nextNode(); external Node? previousNode(); external void detach(); @@ -1405,12 +1216,7 @@ extension NodeIteratorExtension on NodeIterator { external int get whatToShow; external NodeFilter? get filter; } - -@JS('TreeWalker') -@staticInterop -class TreeWalker {} - -extension TreeWalkerExtension on TreeWalker { +extension type TreeWalker._(JSObject _) implements JSObject { external Node? parentNode(); external Node? firstChild(); external Node? lastChild(); @@ -1424,12 +1230,7 @@ extension TreeWalkerExtension on TreeWalker { external set currentNode(Node value); external Node get currentNode; } - -@JS('DOMTokenList') -@staticInterop -class DOMTokenList {} - -extension DOMTokenListExtension on DOMTokenList { +extension type DOMTokenList._(JSObject _) implements JSObject { external String? item(int index); external bool contains(String token); external void add(String tokens); @@ -1447,10 +1248,7 @@ extension DOMTokenListExtension on DOMTokenList { external set value(String value); external String get value; } - -@JS('XPathResult') -@staticInterop -class XPathResult { +extension type XPathResult._(JSObject _) implements JSObject { external static int get ANY_TYPE; external static int get NUMBER_TYPE; external static int get STRING_TYPE; @@ -1461,9 +1259,6 @@ class XPathResult { external static int get ORDERED_NODE_SNAPSHOT_TYPE; external static int get ANY_UNORDERED_NODE_TYPE; external static int get FIRST_ORDERED_NODE_TYPE; -} - -extension XPathResultExtension on XPathResult { external Node? iterateNext(); external Node? snapshotItem(int index); external int get resultType; @@ -1474,26 +1269,16 @@ extension XPathResultExtension on XPathResult { external bool get invalidIteratorState; external int get snapshotLength; } - -@JS('XPathExpression') -@staticInterop -class XPathExpression {} - -extension XPathExpressionExtension on XPathExpression { +extension type XPathExpression._(JSObject _) implements JSObject { external XPathResult evaluate( Node contextNode, [ int type, XPathResult? result, ]); } - -@JS('XPathEvaluator') -@staticInterop -class XPathEvaluator { +extension type XPathEvaluator._(JSObject _) implements JSObject { external factory XPathEvaluator(); -} -extension XPathEvaluatorExtension on XPathEvaluator { external XPathExpression createExpression( String expression, [ XPathNSResolver? resolver, @@ -1507,14 +1292,9 @@ extension XPathEvaluatorExtension on XPathEvaluator { XPathResult? result, ]); } - -@JS('XSLTProcessor') -@staticInterop -class XSLTProcessor { +extension type XSLTProcessor._(JSObject _) implements JSObject { external factory XSLTProcessor(); -} -extension XSLTProcessorExtension on XSLTProcessor { external void importStylesheet(Node style); external DocumentFragment transformToFragment( Node source, diff --git a/lib/src/dom/dom_parsing.dart b/lib/src/dom/dom_parsing.dart index f5d05977..7921cdb5 100644 --- a/lib/src/dom/dom_parsing.dart +++ b/lib/src/dom/dom_parsing.dart @@ -8,12 +8,8 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('XMLSerializer') -@staticInterop -class XMLSerializer { +extension type XMLSerializer._(JSObject _) implements JSObject { external factory XMLSerializer(); -} -extension XMLSerializerExtension on XMLSerializer { external String serializeToString(Node root); } diff --git a/lib/src/dom/edit_context.dart b/lib/src/dom/edit_context.dart index 5483d7da..cc40cf47 100644 --- a/lib/src/dom/edit_context.dart +++ b/lib/src/dom/edit_context.dart @@ -12,19 +12,13 @@ import 'html.dart'; typedef UnderlineStyle = String; typedef UnderlineThickness = String; - -@JS() -@staticInterop -@anonymous -class EditContextInit { +extension type EditContextInit._(JSObject _) implements JSObject { external factory EditContextInit({ String text, int selectionStart, int selectionEnd, }); -} -extension EditContextInitExtension on EditContextInit { external set text(String value); external String get text; external set selectionStart(int value); @@ -32,14 +26,9 @@ extension EditContextInitExtension on EditContextInit { external set selectionEnd(int value); external int get selectionEnd; } - -@JS('EditContext') -@staticInterop -class EditContext implements EventTarget { +extension type EditContext._(JSObject _) implements EventTarget, JSObject { external factory EditContext([EditContextInit options]); -} -extension EditContextExtension on EditContext { external void updateText( int rangeStart, int rangeEnd, @@ -77,11 +66,8 @@ extension EditContextExtension on EditContext { external set oncompositionend(EventHandler value); external EventHandler get oncompositionend; } - -@JS() -@staticInterop -@anonymous -class TextUpdateEventInit implements EventInit { +extension type TextUpdateEventInit._(JSObject _) + implements EventInit, JSObject { external factory TextUpdateEventInit({ int updateRangeStart, int updateRangeEnd, @@ -91,9 +77,7 @@ class TextUpdateEventInit implements EventInit { int compositionStart, int compositionEnd, }); -} -extension TextUpdateEventInitExtension on TextUpdateEventInit { external set updateRangeStart(int value); external int get updateRangeStart; external set updateRangeEnd(int value); @@ -109,17 +93,12 @@ extension TextUpdateEventInitExtension on TextUpdateEventInit { external set compositionEnd(int value); external int get compositionEnd; } - -@JS('TextUpdateEvent') -@staticInterop -class TextUpdateEvent implements Event { +extension type TextUpdateEvent._(JSObject _) implements Event, JSObject { external factory TextUpdateEvent( String type, [ TextUpdateEventInit options, ]); -} -extension TextUpdateEventExtension on TextUpdateEvent { external int get updateRangeStart; external int get updateRangeEnd; external String get text; @@ -128,20 +107,14 @@ extension TextUpdateEventExtension on TextUpdateEvent { external int get compositionStart; external int get compositionEnd; } - -@JS() -@staticInterop -@anonymous -class TextFormatInit { +extension type TextFormatInit._(JSObject _) implements JSObject { external factory TextFormatInit({ int rangeStart, int rangeEnd, UnderlineStyle underlineStyle, UnderlineThickness underlineThickness, }); -} -extension TextFormatInitExtension on TextFormatInit { external set rangeStart(int value); external int get rangeStart; external set rangeEnd(int value); @@ -151,73 +124,48 @@ extension TextFormatInitExtension on TextFormatInit { external set underlineThickness(UnderlineThickness value); external UnderlineThickness get underlineThickness; } - -@JS('TextFormat') -@staticInterop -class TextFormat { +extension type TextFormat._(JSObject _) implements JSObject { external factory TextFormat([TextFormatInit options]); -} -extension TextFormatExtension on TextFormat { external int get rangeStart; external int get rangeEnd; external UnderlineStyle get underlineStyle; external UnderlineThickness get underlineThickness; } - -@JS() -@staticInterop -@anonymous -class TextFormatUpdateEventInit implements EventInit { +extension type TextFormatUpdateEventInit._(JSObject _) + implements EventInit, JSObject { external factory TextFormatUpdateEventInit({JSArray textFormats}); -} -extension TextFormatUpdateEventInitExtension on TextFormatUpdateEventInit { external set textFormats(JSArray value); external JSArray get textFormats; } - -@JS('TextFormatUpdateEvent') -@staticInterop -class TextFormatUpdateEvent implements Event { +extension type TextFormatUpdateEvent._(JSObject _) implements Event, JSObject { external factory TextFormatUpdateEvent( String type, [ TextFormatUpdateEventInit options, ]); -} -extension TextFormatUpdateEventExtension on TextFormatUpdateEvent { external JSArray getTextFormats(); } - -@JS() -@staticInterop -@anonymous -class CharacterBoundsUpdateEventInit implements EventInit { +extension type CharacterBoundsUpdateEventInit._(JSObject _) + implements EventInit, JSObject { external factory CharacterBoundsUpdateEventInit({ int rangeStart, int rangeEnd, }); -} -extension CharacterBoundsUpdateEventInitExtension - on CharacterBoundsUpdateEventInit { external set rangeStart(int value); external int get rangeStart; external set rangeEnd(int value); external int get rangeEnd; } - -@JS('CharacterBoundsUpdateEvent') -@staticInterop -class CharacterBoundsUpdateEvent implements Event { +extension type CharacterBoundsUpdateEvent._(JSObject _) + implements Event, JSObject { external factory CharacterBoundsUpdateEvent( String type, [ CharacterBoundsUpdateEventInit options, ]); -} -extension CharacterBoundsUpdateEventExtension on CharacterBoundsUpdateEvent { external int get rangeStart; external int get rangeEnd; } diff --git a/lib/src/dom/element_capture.dart b/lib/src/dom/element_capture.dart index ad203b62..55903c74 100644 --- a/lib/src/dom/element_capture.dart +++ b/lib/src/dom/element_capture.dart @@ -8,8 +8,6 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('RestrictionTarget') -@staticInterop -class RestrictionTarget { +extension type RestrictionTarget._(JSObject _) implements JSObject { external static JSPromise fromElement(Element element); } diff --git a/lib/src/dom/element_timing.dart b/lib/src/dom/element_timing.dart index fe660891..ef3eaf3f 100644 --- a/lib/src/dom/element_timing.dart +++ b/lib/src/dom/element_timing.dart @@ -11,11 +11,8 @@ import 'geometry.dart'; import 'hr_time.dart'; import 'performance_timeline.dart'; -@JS('PerformanceElementTiming') -@staticInterop -class PerformanceElementTiming implements PerformanceEntry {} - -extension PerformanceElementTimingExtension on PerformanceElementTiming { +extension type PerformanceElementTiming._(JSObject _) + implements PerformanceEntry, JSObject { external JSObject toJSON(); external DOMHighResTimeStamp get renderTime; external DOMHighResTimeStamp get loadTime; diff --git a/lib/src/dom/encoding.dart b/lib/src/dom/encoding.dart index e3f755fc..c65aef68 100644 --- a/lib/src/dom/encoding.dart +++ b/lib/src/dom/encoding.dart @@ -9,45 +9,29 @@ import 'dart:js_interop'; import 'streams.dart'; import 'webidl.dart'; -@JS() -@staticInterop -@anonymous -class TextDecoderOptions { +extension type TextDecoderOptions._(JSObject _) implements JSObject { external factory TextDecoderOptions({ bool fatal, bool ignoreBOM, }); -} -extension TextDecoderOptionsExtension on TextDecoderOptions { external set fatal(bool value); external bool get fatal; external set ignoreBOM(bool value); external bool get ignoreBOM; } - -@JS() -@staticInterop -@anonymous -class TextDecodeOptions { +extension type TextDecodeOptions._(JSObject _) implements JSObject { external factory TextDecodeOptions({bool stream}); -} -extension TextDecodeOptionsExtension on TextDecodeOptions { external set stream(bool value); external bool get stream; } - -@JS('TextDecoder') -@staticInterop -class TextDecoder { +extension type TextDecoder._(JSObject _) implements JSObject { external factory TextDecoder([ String label, TextDecoderOptions options, ]); -} -extension TextDecoderExtension on TextDecoder { external String decode([ AllowSharedBufferSource input, TextDecodeOptions options, @@ -56,31 +40,20 @@ extension TextDecoderExtension on TextDecoder { external bool get fatal; external bool get ignoreBOM; } - -@JS() -@staticInterop -@anonymous -class TextEncoderEncodeIntoResult { +extension type TextEncoderEncodeIntoResult._(JSObject _) implements JSObject { external factory TextEncoderEncodeIntoResult({ int read, int written, }); -} -extension TextEncoderEncodeIntoResultExtension on TextEncoderEncodeIntoResult { external set read(int value); external int get read; external set written(int value); external int get written; } - -@JS('TextEncoder') -@staticInterop -class TextEncoder { +extension type TextEncoder._(JSObject _) implements JSObject { external factory TextEncoder(); -} -extension TextEncoderExtension on TextEncoder { external JSUint8Array encode([String input]); external TextEncoderEncodeIntoResult encodeInto( String source, @@ -88,31 +61,21 @@ extension TextEncoderExtension on TextEncoder { ); external String get encoding; } - -@JS('TextDecoderStream') -@staticInterop -class TextDecoderStream { +extension type TextDecoderStream._(JSObject _) implements JSObject { external factory TextDecoderStream([ String label, TextDecoderOptions options, ]); -} -extension TextDecoderStreamExtension on TextDecoderStream { external String get encoding; external bool get fatal; external bool get ignoreBOM; external ReadableStream get readable; external WritableStream get writable; } - -@JS('TextEncoderStream') -@staticInterop -class TextEncoderStream { +extension type TextEncoderStream._(JSObject _) implements JSObject { external factory TextEncoderStream(); -} -extension TextEncoderStreamExtension on TextEncoderStream { external String get encoding; external ReadableStream get readable; external WritableStream get writable; diff --git a/lib/src/dom/encrypted_media.dart b/lib/src/dom/encrypted_media.dart index 0013ce42..9aa9b446 100644 --- a/lib/src/dom/encrypted_media.dart +++ b/lib/src/dom/encrypted_media.dart @@ -15,11 +15,7 @@ typedef MediaKeySessionType = String; typedef MediaKeySessionClosedReason = String; typedef MediaKeyStatus = String; typedef MediaKeyMessageType = String; - -@JS() -@staticInterop -@anonymous -class MediaKeySystemConfiguration { +extension type MediaKeySystemConfiguration._(JSObject _) implements JSObject { external factory MediaKeySystemConfiguration({ String label, JSArray initDataTypes, @@ -29,9 +25,7 @@ class MediaKeySystemConfiguration { MediaKeysRequirement persistentState, JSArray sessionTypes, }); -} -extension MediaKeySystemConfigurationExtension on MediaKeySystemConfiguration { external set label(String value); external String get label; external set initDataTypes(JSArray value); @@ -47,20 +41,13 @@ extension MediaKeySystemConfigurationExtension on MediaKeySystemConfiguration { external set sessionTypes(JSArray value); external JSArray get sessionTypes; } - -@JS() -@staticInterop -@anonymous -class MediaKeySystemMediaCapability { +extension type MediaKeySystemMediaCapability._(JSObject _) implements JSObject { external factory MediaKeySystemMediaCapability({ String contentType, String? encryptionScheme, String robustness, }); -} -extension MediaKeySystemMediaCapabilityExtension - on MediaKeySystemMediaCapability { external set contentType(String value); external String get contentType; external set encryptionScheme(String? value); @@ -68,31 +55,16 @@ extension MediaKeySystemMediaCapabilityExtension external set robustness(String value); external String get robustness; } - -@JS('MediaKeySystemAccess') -@staticInterop -class MediaKeySystemAccess {} - -extension MediaKeySystemAccessExtension on MediaKeySystemAccess { +extension type MediaKeySystemAccess._(JSObject _) implements JSObject { external MediaKeySystemConfiguration getConfiguration(); external JSPromise createMediaKeys(); external String get keySystem; } - -@JS('MediaKeys') -@staticInterop -class MediaKeys {} - -extension MediaKeysExtension on MediaKeys { +extension type MediaKeys._(JSObject _) implements JSObject { external MediaKeySession createSession([MediaKeySessionType sessionType]); external JSPromise setServerCertificate(BufferSource serverCertificate); } - -@JS('MediaKeySession') -@staticInterop -class MediaKeySession implements EventTarget {} - -extension MediaKeySessionExtension on MediaKeySession { +extension type MediaKeySession._(JSObject _) implements EventTarget, JSObject { external JSPromise generateRequest( String initDataType, BufferSource initData, @@ -110,73 +82,48 @@ extension MediaKeySessionExtension on MediaKeySession { external set onmessage(EventHandler value); external EventHandler get onmessage; } - -@JS('MediaKeyStatusMap') -@staticInterop -class MediaKeyStatusMap {} - -extension MediaKeyStatusMapExtension on MediaKeyStatusMap { +extension type MediaKeyStatusMap._(JSObject _) implements JSObject { external bool has(BufferSource keyId); external MediaKeyStatus? get(BufferSource keyId); external int get size; } - -@JS('MediaKeyMessageEvent') -@staticInterop -class MediaKeyMessageEvent implements Event { +extension type MediaKeyMessageEvent._(JSObject _) implements Event, JSObject { external factory MediaKeyMessageEvent( String type, MediaKeyMessageEventInit eventInitDict, ); -} -extension MediaKeyMessageEventExtension on MediaKeyMessageEvent { external MediaKeyMessageType get messageType; external JSArrayBuffer get message; } - -@JS() -@staticInterop -@anonymous -class MediaKeyMessageEventInit implements EventInit { +extension type MediaKeyMessageEventInit._(JSObject _) + implements EventInit, JSObject { external factory MediaKeyMessageEventInit({ required MediaKeyMessageType messageType, required JSArrayBuffer message, }); -} -extension MediaKeyMessageEventInitExtension on MediaKeyMessageEventInit { external set messageType(MediaKeyMessageType value); external MediaKeyMessageType get messageType; external set message(JSArrayBuffer value); external JSArrayBuffer get message; } - -@JS('MediaEncryptedEvent') -@staticInterop -class MediaEncryptedEvent implements Event { +extension type MediaEncryptedEvent._(JSObject _) implements Event, JSObject { external factory MediaEncryptedEvent( String type, [ MediaEncryptedEventInit eventInitDict, ]); -} -extension MediaEncryptedEventExtension on MediaEncryptedEvent { external String get initDataType; external JSArrayBuffer? get initData; } - -@JS() -@staticInterop -@anonymous -class MediaEncryptedEventInit implements EventInit { +extension type MediaEncryptedEventInit._(JSObject _) + implements EventInit, JSObject { external factory MediaEncryptedEventInit({ String initDataType, JSArrayBuffer? initData, }); -} -extension MediaEncryptedEventInitExtension on MediaEncryptedEventInit { external set initDataType(String value); external String get initDataType; external set initData(JSArrayBuffer? value); diff --git a/lib/src/dom/entries_api.dart b/lib/src/dom/entries_api.dart index 7d71b64f..86ca3527 100644 --- a/lib/src/dom/entries_api.dart +++ b/lib/src/dom/entries_api.dart @@ -10,12 +10,7 @@ typedef ErrorCallback = JSFunction; typedef FileSystemEntryCallback = JSFunction; typedef FileSystemEntriesCallback = JSFunction; typedef FileCallback = JSFunction; - -@JS('FileSystemEntry') -@staticInterop -class FileSystemEntry {} - -extension FileSystemEntryExtension on FileSystemEntry { +extension type FileSystemEntry._(JSObject _) implements JSObject { external void getParent([ FileSystemEntryCallback successCallback, ErrorCallback errorCallback, @@ -26,12 +21,8 @@ extension FileSystemEntryExtension on FileSystemEntry { external String get fullPath; external FileSystem get filesystem; } - -@JS('FileSystemDirectoryEntry') -@staticInterop -class FileSystemDirectoryEntry implements FileSystemEntry {} - -extension FileSystemDirectoryEntryExtension on FileSystemDirectoryEntry { +extension type FileSystemDirectoryEntry._(JSObject _) + implements FileSystemEntry, JSObject { external FileSystemDirectoryReader createReader(); external void getFile([ String? path, @@ -46,51 +37,31 @@ extension FileSystemDirectoryEntryExtension on FileSystemDirectoryEntry { ErrorCallback errorCallback, ]); } - -@JS() -@staticInterop -@anonymous -class FileSystemFlags { +extension type FileSystemFlags._(JSObject _) implements JSObject { external factory FileSystemFlags({ bool create, bool exclusive, }); -} -extension FileSystemFlagsExtension on FileSystemFlags { external set create(bool value); external bool get create; external set exclusive(bool value); external bool get exclusive; } - -@JS('FileSystemDirectoryReader') -@staticInterop -class FileSystemDirectoryReader {} - -extension FileSystemDirectoryReaderExtension on FileSystemDirectoryReader { +extension type FileSystemDirectoryReader._(JSObject _) implements JSObject { external void readEntries( FileSystemEntriesCallback successCallback, [ ErrorCallback errorCallback, ]); } - -@JS('FileSystemFileEntry') -@staticInterop -class FileSystemFileEntry implements FileSystemEntry {} - -extension FileSystemFileEntryExtension on FileSystemFileEntry { +extension type FileSystemFileEntry._(JSObject _) + implements FileSystemEntry, JSObject { external void file( FileCallback successCallback, [ ErrorCallback errorCallback, ]); } - -@JS('FileSystem') -@staticInterop -class FileSystem {} - -extension FileSystemExtension on FileSystem { +extension type FileSystem._(JSObject _) implements JSObject { external String get name; external FileSystemDirectoryEntry get root; } diff --git a/lib/src/dom/event_timing.dart b/lib/src/dom/event_timing.dart index 0915cc00..3076570a 100644 --- a/lib/src/dom/event_timing.dart +++ b/lib/src/dom/event_timing.dart @@ -10,11 +10,8 @@ import 'dom.dart'; import 'hr_time.dart'; import 'performance_timeline.dart'; -@JS('PerformanceEventTiming') -@staticInterop -class PerformanceEventTiming implements PerformanceEntry {} - -extension PerformanceEventTimingExtension on PerformanceEventTiming { +extension type PerformanceEventTiming._(JSObject _) + implements PerformanceEntry, JSObject { external JSObject toJSON(); external DOMHighResTimeStamp get processingStart; external DOMHighResTimeStamp get processingEnd; @@ -22,9 +19,4 @@ extension PerformanceEventTimingExtension on PerformanceEventTiming { external Node? get target; external int get interactionId; } - -@JS('EventCounts') -@staticInterop -class EventCounts {} - -extension EventCountsExtension on EventCounts {} +extension type EventCounts._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/ext_blend_minmax.dart b/lib/src/dom/ext_blend_minmax.dart index 4f569f0f..a4398deb 100644 --- a/lib/src/dom/ext_blend_minmax.dart +++ b/lib/src/dom/ext_blend_minmax.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_blend_minmax') -@staticInterop -class EXT_blend_minmax { +extension type EXT_blend_minmax._(JSObject _) implements JSObject { external static GLenum get MIN_EXT; external static GLenum get MAX_EXT; } diff --git a/lib/src/dom/ext_color_buffer_float.dart b/lib/src/dom/ext_color_buffer_float.dart index 4c781878..f70aa1f4 100644 --- a/lib/src/dom/ext_color_buffer_float.dart +++ b/lib/src/dom/ext_color_buffer_float.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('EXT_color_buffer_float') -@staticInterop -class EXT_color_buffer_float {} +extension type EXT_color_buffer_float._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/ext_color_buffer_half_float.dart b/lib/src/dom/ext_color_buffer_half_float.dart index 4634ac17..7f6ef7dd 100644 --- a/lib/src/dom/ext_color_buffer_half_float.dart +++ b/lib/src/dom/ext_color_buffer_half_float.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_color_buffer_half_float') -@staticInterop -class EXT_color_buffer_half_float { +extension type EXT_color_buffer_half_float._(JSObject _) implements JSObject { external static GLenum get RGBA16F_EXT; external static GLenum get RGB16F_EXT; external static GLenum get FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT; diff --git a/lib/src/dom/ext_disjoint_timer_query.dart b/lib/src/dom/ext_disjoint_timer_query.dart index 95203daa..78161885 100644 --- a/lib/src/dom/ext_disjoint_timer_query.dart +++ b/lib/src/dom/ext_disjoint_timer_query.dart @@ -9,14 +9,9 @@ import 'dart:js_interop'; import 'webgl1.dart'; typedef GLuint64EXT = int; - -@JS('WebGLTimerQueryEXT') -@staticInterop -class WebGLTimerQueryEXT implements WebGLObject {} - -@JS('EXT_disjoint_timer_query') -@staticInterop -class EXT_disjoint_timer_query { +extension type WebGLTimerQueryEXT._(JSObject _) + implements WebGLObject, JSObject {} +extension type EXT_disjoint_timer_query._(JSObject _) implements JSObject { external static GLenum get QUERY_COUNTER_BITS_EXT; external static GLenum get CURRENT_QUERY_EXT; external static GLenum get QUERY_RESULT_EXT; @@ -24,9 +19,6 @@ class EXT_disjoint_timer_query { external static GLenum get TIME_ELAPSED_EXT; external static GLenum get TIMESTAMP_EXT; external static GLenum get GPU_DISJOINT_EXT; -} - -extension EXTDisjointTimerQueryExtension on EXT_disjoint_timer_query { external WebGLTimerQueryEXT? createQueryEXT(); external void deleteQueryEXT(WebGLTimerQueryEXT? query); external bool isQueryEXT(WebGLTimerQueryEXT? query); diff --git a/lib/src/dom/ext_disjoint_timer_query_webgl2.dart b/lib/src/dom/ext_disjoint_timer_query_webgl2.dart index aa7f5714..d28f2707 100644 --- a/lib/src/dom/ext_disjoint_timer_query_webgl2.dart +++ b/lib/src/dom/ext_disjoint_timer_query_webgl2.dart @@ -9,17 +9,12 @@ import 'dart:js_interop'; import 'webgl1.dart'; import 'webgl2.dart'; -@JS('EXT_disjoint_timer_query_webgl2') -@staticInterop -class EXT_disjoint_timer_query_webgl2 { +extension type EXT_disjoint_timer_query_webgl2._(JSObject _) + implements JSObject { external static GLenum get QUERY_COUNTER_BITS_EXT; external static GLenum get TIME_ELAPSED_EXT; external static GLenum get TIMESTAMP_EXT; external static GLenum get GPU_DISJOINT_EXT; -} - -extension EXTDisjointTimerQueryWebgl2Extension - on EXT_disjoint_timer_query_webgl2 { external void queryCounterEXT( WebGLQuery query, GLenum target, diff --git a/lib/src/dom/ext_float_blend.dart b/lib/src/dom/ext_float_blend.dart index 3ebd8dd0..c08ad068 100644 --- a/lib/src/dom/ext_float_blend.dart +++ b/lib/src/dom/ext_float_blend.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('EXT_float_blend') -@staticInterop -class EXT_float_blend {} +extension type EXT_float_blend._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/ext_frag_depth.dart b/lib/src/dom/ext_frag_depth.dart index 92ac94ef..47e4bab6 100644 --- a/lib/src/dom/ext_frag_depth.dart +++ b/lib/src/dom/ext_frag_depth.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('EXT_frag_depth') -@staticInterop -class EXT_frag_depth {} +extension type EXT_frag_depth._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/ext_shader_texture_lod.dart b/lib/src/dom/ext_shader_texture_lod.dart index b64ff3c6..d1eaa46b 100644 --- a/lib/src/dom/ext_shader_texture_lod.dart +++ b/lib/src/dom/ext_shader_texture_lod.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('EXT_shader_texture_lod') -@staticInterop -class EXT_shader_texture_lod {} +extension type EXT_shader_texture_lod._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/ext_srgb.dart b/lib/src/dom/ext_srgb.dart index cb60e221..7502c280 100644 --- a/lib/src/dom/ext_srgb.dart +++ b/lib/src/dom/ext_srgb.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_sRGB') -@staticInterop -class EXT_sRGB { +extension type EXT_sRGB._(JSObject _) implements JSObject { external static GLenum get SRGB_EXT; external static GLenum get SRGB_ALPHA_EXT; external static GLenum get SRGB8_ALPHA8_EXT; diff --git a/lib/src/dom/ext_texture_compression_bptc.dart b/lib/src/dom/ext_texture_compression_bptc.dart index ff08d734..ac71188e 100644 --- a/lib/src/dom/ext_texture_compression_bptc.dart +++ b/lib/src/dom/ext_texture_compression_bptc.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_texture_compression_bptc') -@staticInterop -class EXT_texture_compression_bptc { +extension type EXT_texture_compression_bptc._(JSObject _) implements JSObject { external static GLenum get COMPRESSED_RGBA_BPTC_UNORM_EXT; external static GLenum get COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT; external static GLenum get COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; diff --git a/lib/src/dom/ext_texture_compression_rgtc.dart b/lib/src/dom/ext_texture_compression_rgtc.dart index 0f9deead..ebe4ae3c 100644 --- a/lib/src/dom/ext_texture_compression_rgtc.dart +++ b/lib/src/dom/ext_texture_compression_rgtc.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_texture_compression_rgtc') -@staticInterop -class EXT_texture_compression_rgtc { +extension type EXT_texture_compression_rgtc._(JSObject _) implements JSObject { external static GLenum get COMPRESSED_RED_RGTC1_EXT; external static GLenum get COMPRESSED_SIGNED_RED_RGTC1_EXT; external static GLenum get COMPRESSED_RED_GREEN_RGTC2_EXT; diff --git a/lib/src/dom/ext_texture_filter_anisotropic.dart b/lib/src/dom/ext_texture_filter_anisotropic.dart index 1a683bd0..086c26b6 100644 --- a/lib/src/dom/ext_texture_filter_anisotropic.dart +++ b/lib/src/dom/ext_texture_filter_anisotropic.dart @@ -8,9 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_texture_filter_anisotropic') -@staticInterop -class EXT_texture_filter_anisotropic { +extension type EXT_texture_filter_anisotropic._(JSObject _) + implements JSObject { external static GLenum get TEXTURE_MAX_ANISOTROPY_EXT; external static GLenum get MAX_TEXTURE_MAX_ANISOTROPY_EXT; } diff --git a/lib/src/dom/ext_texture_norm16.dart b/lib/src/dom/ext_texture_norm16.dart index 0e616993..950e2bf2 100644 --- a/lib/src/dom/ext_texture_norm16.dart +++ b/lib/src/dom/ext_texture_norm16.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('EXT_texture_norm16') -@staticInterop -class EXT_texture_norm16 { +extension type EXT_texture_norm16._(JSObject _) implements JSObject { external static GLenum get R16_EXT; external static GLenum get RG16_EXT; external static GLenum get RGB16_EXT; diff --git a/lib/src/dom/eyedropper_api.dart b/lib/src/dom/eyedropper_api.dart index 2d80c59d..b640abe0 100644 --- a/lib/src/dom/eyedropper_api.dart +++ b/lib/src/dom/eyedropper_api.dart @@ -8,36 +8,20 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS() -@staticInterop -@anonymous -class ColorSelectionResult { +extension type ColorSelectionResult._(JSObject _) implements JSObject { external factory ColorSelectionResult({String sRGBHex}); -} -extension ColorSelectionResultExtension on ColorSelectionResult { external set sRGBHex(String value); external String get sRGBHex; } - -@JS() -@staticInterop -@anonymous -class ColorSelectionOptions { +extension type ColorSelectionOptions._(JSObject _) implements JSObject { external factory ColorSelectionOptions({AbortSignal signal}); -} -extension ColorSelectionOptionsExtension on ColorSelectionOptions { external set signal(AbortSignal value); external AbortSignal get signal; } - -@JS('EyeDropper') -@staticInterop -class EyeDropper { +extension type EyeDropper._(JSObject _) implements JSObject { external factory EyeDropper(); -} -extension EyeDropperExtension on EyeDropper { external JSPromise open([ColorSelectionOptions options]); } diff --git a/lib/src/dom/fedcm.dart b/lib/src/dom/fedcm.dart index 73b346a5..7e67f4e7 100644 --- a/lib/src/dom/fedcm.dart +++ b/lib/src/dom/fedcm.dart @@ -9,46 +9,30 @@ import 'dart:js_interop'; import 'credential_management.dart'; typedef IdentityCredentialRequestOptionsContext = String; - -@JS('IdentityCredential') -@staticInterop -class IdentityCredential implements Credential {} - -extension IdentityCredentialExtension on IdentityCredential { +extension type IdentityCredential._(JSObject _) + implements Credential, JSObject { external String? get token; } - -@JS() -@staticInterop -@anonymous -class IdentityCredentialRequestOptions { +extension type IdentityCredentialRequestOptions._(JSObject _) + implements JSObject { external factory IdentityCredentialRequestOptions({ required JSArray providers, IdentityCredentialRequestOptionsContext context, }); -} -extension IdentityCredentialRequestOptionsExtension - on IdentityCredentialRequestOptions { external set providers(JSArray value); external JSArray get providers; external set context(IdentityCredentialRequestOptionsContext value); external IdentityCredentialRequestOptionsContext get context; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderConfig { +extension type IdentityProviderConfig._(JSObject _) implements JSObject { external factory IdentityProviderConfig({ required String configURL, required String clientId, String nonce, String loginHint, }); -} -extension IdentityProviderConfigExtension on IdentityProviderConfig { external set configURL(String value); external String get configURL; external set clientId(String value); @@ -58,49 +42,31 @@ extension IdentityProviderConfigExtension on IdentityProviderConfig { external set loginHint(String value); external String get loginHint; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderWellKnown { +extension type IdentityProviderWellKnown._(JSObject _) implements JSObject { external factory IdentityProviderWellKnown({required JSArray provider_urls}); -} -extension IdentityProviderWellKnownExtension on IdentityProviderWellKnown { external set provider_urls(JSArray value); external JSArray get provider_urls; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderIcon { +extension type IdentityProviderIcon._(JSObject _) implements JSObject { external factory IdentityProviderIcon({ required String url, int size, }); -} -extension IdentityProviderIconExtension on IdentityProviderIcon { external set url(String value); external String get url; external set size(int value); external int get size; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderBranding { +extension type IdentityProviderBranding._(JSObject _) implements JSObject { external factory IdentityProviderBranding({ String background_color, String color, JSArray icons, String name, }); -} -extension IdentityProviderBrandingExtension on IdentityProviderBranding { external set background_color(String value); external String get background_color; external set color(String value); @@ -110,20 +76,14 @@ extension IdentityProviderBrandingExtension on IdentityProviderBranding { external set name(String value); external String get name; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderAPIConfig { +extension type IdentityProviderAPIConfig._(JSObject _) implements JSObject { external factory IdentityProviderAPIConfig({ required String accounts_endpoint, required String client_metadata_endpoint, required String id_assertion_endpoint, IdentityProviderBranding branding, }); -} -extension IdentityProviderAPIConfigExtension on IdentityProviderAPIConfig { external set accounts_endpoint(String value); external String get accounts_endpoint; external set client_metadata_endpoint(String value); @@ -133,11 +93,7 @@ extension IdentityProviderAPIConfigExtension on IdentityProviderAPIConfig { external set branding(IdentityProviderBranding value); external IdentityProviderBranding get branding; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderAccount { +extension type IdentityProviderAccount._(JSObject _) implements JSObject { external factory IdentityProviderAccount({ required String id, required String name, @@ -147,9 +103,7 @@ class IdentityProviderAccount { JSArray approved_clients, JSArray login_hints, }); -} -extension IdentityProviderAccountExtension on IdentityProviderAccount { external set id(String value); external String get id; external set name(String value); @@ -165,62 +119,38 @@ extension IdentityProviderAccountExtension on IdentityProviderAccount { external set login_hints(JSArray value); external JSArray get login_hints; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderAccountList { +extension type IdentityProviderAccountList._(JSObject _) implements JSObject { external factory IdentityProviderAccountList({JSArray accounts}); -} -extension IdentityProviderAccountListExtension on IdentityProviderAccountList { external set accounts(JSArray value); external JSArray get accounts; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderToken { +extension type IdentityProviderToken._(JSObject _) implements JSObject { external factory IdentityProviderToken({required String token}); -} -extension IdentityProviderTokenExtension on IdentityProviderToken { external set token(String value); external String get token; } - -@JS() -@staticInterop -@anonymous -class IdentityProviderClientMetadata { +extension type IdentityProviderClientMetadata._(JSObject _) + implements JSObject { external factory IdentityProviderClientMetadata({ String privacy_policy_url, String terms_of_service_url, }); -} -extension IdentityProviderClientMetadataExtension - on IdentityProviderClientMetadata { external set privacy_policy_url(String value); external String get privacy_policy_url; external set terms_of_service_url(String value); external String get terms_of_service_url; } - -@JS() -@staticInterop -@anonymous -class IdentityUserInfo { +extension type IdentityUserInfo._(JSObject _) implements JSObject { external factory IdentityUserInfo({ String email, String name, String givenName, String picture, }); -} -extension IdentityUserInfoExtension on IdentityUserInfo { external set email(String value); external String get email; external set name(String value); @@ -230,9 +160,6 @@ extension IdentityUserInfoExtension on IdentityUserInfo { external set picture(String value); external String get picture; } - -@JS('IdentityProvider') -@staticInterop -class IdentityProvider { +extension type IdentityProvider._(JSObject _) implements JSObject { external static JSPromise getUserInfo(IdentityProviderConfig config); } diff --git a/lib/src/dom/fenced_frame.dart b/lib/src/dom/fenced_frame.dart index 27efeaeb..dce2afc0 100644 --- a/lib/src/dom/fenced_frame.dart +++ b/lib/src/dom/fenced_frame.dart @@ -14,14 +14,10 @@ typedef UrnOrConfig = JSAny; typedef ReportEventType = JSAny; typedef OpaqueProperty = String; typedef FenceReportingDestination = String; - -@JS('HTMLFencedFrameElement') -@staticInterop -class HTMLFencedFrameElement implements HTMLElement { +extension type HTMLFencedFrameElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLFencedFrameElement(); -} -extension HTMLFencedFrameElementExtension on HTMLFencedFrameElement { external set config(FencedFrameConfig? value); external FencedFrameConfig? get config; external set width(String value); @@ -31,23 +27,14 @@ extension HTMLFencedFrameElementExtension on HTMLFencedFrameElement { external set allow(String value); external String get allow; } - -@JS('FencedFrameConfig') -@staticInterop -class FencedFrameConfig {} - -extension FencedFrameConfigExtension on FencedFrameConfig { +extension type FencedFrameConfig._(JSObject _) implements JSObject { external void setSharedStorageContext(String contextString); external FencedFrameConfigSize? get containerWidth; external FencedFrameConfigSize? get containerHeight; external FencedFrameConfigSize? get contentWidth; external FencedFrameConfigSize? get contentHeight; } - -@JS() -@staticInterop -@anonymous -class FenceEvent { +extension type FenceEvent._(JSObject _) implements JSObject { external factory FenceEvent({ String eventType, String eventData, @@ -55,9 +42,7 @@ class FenceEvent { bool once, String destinationURL, }); -} -extension FenceEventExtension on FenceEvent { external set eventType(String value); external String get eventType; external set eventData(String value); @@ -69,12 +54,7 @@ extension FenceEventExtension on FenceEvent { external set destinationURL(String value); external String get destinationURL; } - -@JS('Fence') -@staticInterop -class Fence {} - -extension FenceExtension on Fence { +extension type Fence._(JSObject _) implements JSObject { external void reportEvent([ReportEventType event]); external void setReportEventDataForAutomaticBeacons([FenceEvent event]); external JSArray getNestedConfigs(); diff --git a/lib/src/dom/fetch.dart b/lib/src/dom/fetch.dart index 9ee23716..67bc84d4 100644 --- a/lib/src/dom/fetch.dart +++ b/lib/src/dom/fetch.dart @@ -25,14 +25,9 @@ typedef RequestRedirect = String; typedef RequestDuplex = String; typedef RequestPriority = String; typedef ResponseType = String; - -@JS('Headers') -@staticInterop -class Headers { +extension type Headers._(JSObject _) implements JSObject { external factory Headers([HeadersInit init]); -} -extension HeadersExtension on Headers { external void append( String name, String value, @@ -46,17 +41,12 @@ extension HeadersExtension on Headers { String value, ); } - -@JS('Request') -@staticInterop -class Request { +extension type Request._(JSObject _) implements JSObject { external factory Request( RequestInfo input, [ RequestInit init, ]); -} -extension RequestExtension on Request { external Request clone(); external JSPromise arrayBuffer(); external JSPromise blob(); @@ -82,11 +72,7 @@ extension RequestExtension on Request { external ReadableStream? get body; external bool get bodyUsed; } - -@JS() -@staticInterop -@anonymous -class RequestInit { +extension type RequestInit._(JSObject _) implements JSObject { external factory RequestInit({ AttributionReportingRequestOptions attributionReporting, String method, @@ -108,9 +94,7 @@ class RequestInit { bool sharedStorageWritable, PrivateToken privateToken, }); -} -extension RequestInitExtension on RequestInit { external set attributionReporting(AttributionReportingRequestOptions value); external AttributionReportingRequestOptions get attributionReporting; external set method(String value); @@ -150,10 +134,7 @@ extension RequestInitExtension on RequestInit { external set privateToken(PrivateToken value); external PrivateToken get privateToken; } - -@JS('Response') -@staticInterop -class Response { +extension type Response._(JSObject _) implements JSObject { external factory Response([ BodyInit? body, ResponseInit init, @@ -169,9 +150,6 @@ class Response { JSAny? data, [ ResponseInit init, ]); -} - -extension ResponseExtension on Response { external Response clone(); external JSPromise arrayBuffer(); external JSPromise blob(); @@ -188,19 +166,13 @@ extension ResponseExtension on Response { external ReadableStream? get body; external bool get bodyUsed; } - -@JS() -@staticInterop -@anonymous -class ResponseInit { +extension type ResponseInit._(JSObject _) implements JSObject { external factory ResponseInit({ int status, String statusText, HeadersInit headers, }); -} -extension ResponseInitExtension on ResponseInit { external set status(int value); external int get status; external set statusText(String value); diff --git a/lib/src/dom/fido.dart b/lib/src/dom/fido.dart index 5a0f7b9b..081ba407 100644 --- a/lib/src/dom/fido.dart +++ b/lib/src/dom/fido.dart @@ -6,34 +6,23 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class HMACGetSecretInput { +extension type HMACGetSecretInput._(JSObject _) implements JSObject { external factory HMACGetSecretInput({ required JSArrayBuffer salt1, JSArrayBuffer salt2, }); -} -extension HMACGetSecretInputExtension on HMACGetSecretInput { external set salt1(JSArrayBuffer value); external JSArrayBuffer get salt1; external set salt2(JSArrayBuffer value); external JSArrayBuffer get salt2; } - -@JS() -@staticInterop -@anonymous -class HMACGetSecretOutput { +extension type HMACGetSecretOutput._(JSObject _) implements JSObject { external factory HMACGetSecretOutput({ required JSArrayBuffer output1, JSArrayBuffer output2, }); -} -extension HMACGetSecretOutputExtension on HMACGetSecretOutput { external set output1(JSArrayBuffer value); external JSArrayBuffer get output1; external set output2(JSArrayBuffer value); diff --git a/lib/src/dom/file_system_access.dart b/lib/src/dom/file_system_access.dart index 5a7ea517..d55049a1 100644 --- a/lib/src/dom/file_system_access.dart +++ b/lib/src/dom/file_system_access.dart @@ -12,69 +12,45 @@ import 'permissions.dart'; typedef StartInDirectory = JSAny; typedef FileSystemPermissionMode = String; typedef WellKnownDirectory = String; - -@JS() -@staticInterop -@anonymous -class FileSystemPermissionDescriptor implements PermissionDescriptor { +extension type FileSystemPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory FileSystemPermissionDescriptor({ required FileSystemHandle handle, FileSystemPermissionMode mode, }); -} -extension FileSystemPermissionDescriptorExtension - on FileSystemPermissionDescriptor { external set handle(FileSystemHandle value); external FileSystemHandle get handle; external set mode(FileSystemPermissionMode value); external FileSystemPermissionMode get mode; } - -@JS() -@staticInterop -@anonymous -class FileSystemHandlePermissionDescriptor { +extension type FileSystemHandlePermissionDescriptor._(JSObject _) + implements JSObject { external factory FileSystemHandlePermissionDescriptor( {FileSystemPermissionMode mode}); -} -extension FileSystemHandlePermissionDescriptorExtension - on FileSystemHandlePermissionDescriptor { external set mode(FileSystemPermissionMode value); external FileSystemPermissionMode get mode; } - -@JS() -@staticInterop -@anonymous -class FilePickerAcceptType { +extension type FilePickerAcceptType._(JSObject _) implements JSObject { external factory FilePickerAcceptType({ String description, JSAny accept, }); -} -extension FilePickerAcceptTypeExtension on FilePickerAcceptType { external set description(String value); external String get description; external set accept(JSAny value); external JSAny get accept; } - -@JS() -@staticInterop -@anonymous -class FilePickerOptions { +extension type FilePickerOptions._(JSObject _) implements JSObject { external factory FilePickerOptions({ JSArray types, bool excludeAcceptAllOption, String id, StartInDirectory startIn, }); -} -extension FilePickerOptionsExtension on FilePickerOptions { external set types(JSArray value); external JSArray get types; external set excludeAcceptAllOption(bool value); @@ -84,43 +60,27 @@ extension FilePickerOptionsExtension on FilePickerOptions { external set startIn(StartInDirectory value); external StartInDirectory get startIn; } - -@JS() -@staticInterop -@anonymous -class OpenFilePickerOptions implements FilePickerOptions { +extension type OpenFilePickerOptions._(JSObject _) + implements FilePickerOptions, JSObject { external factory OpenFilePickerOptions({bool multiple}); -} -extension OpenFilePickerOptionsExtension on OpenFilePickerOptions { external set multiple(bool value); external bool get multiple; } - -@JS() -@staticInterop -@anonymous -class SaveFilePickerOptions implements FilePickerOptions { +extension type SaveFilePickerOptions._(JSObject _) + implements FilePickerOptions, JSObject { external factory SaveFilePickerOptions({String? suggestedName}); -} -extension SaveFilePickerOptionsExtension on SaveFilePickerOptions { external set suggestedName(String? value); external String? get suggestedName; } - -@JS() -@staticInterop -@anonymous -class DirectoryPickerOptions { +extension type DirectoryPickerOptions._(JSObject _) implements JSObject { external factory DirectoryPickerOptions({ String id, StartInDirectory startIn, FileSystemPermissionMode mode, }); -} -extension DirectoryPickerOptionsExtension on DirectoryPickerOptions { external set id(String value); external String get id; external set startIn(StartInDirectory value); diff --git a/lib/src/dom/fileapi.dart b/lib/src/dom/fileapi.dart index 758d1af6..5a11c870 100644 --- a/lib/src/dom/fileapi.dart +++ b/lib/src/dom/fileapi.dart @@ -13,17 +13,12 @@ import 'webidl.dart'; typedef BlobPart = JSAny; typedef EndingType = String; - -@JS('Blob') -@staticInterop -class Blob { +extension type Blob._(JSObject _) implements JSObject { external factory Blob([ JSArray blobParts, BlobPropertyBag options, ]); -} -extension BlobExtension on Blob { external Blob slice([ int start, int end, @@ -35,72 +30,45 @@ extension BlobExtension on Blob { external int get size; external String get type; } - -@JS() -@staticInterop -@anonymous -class BlobPropertyBag { +extension type BlobPropertyBag._(JSObject _) implements JSObject { external factory BlobPropertyBag({ String type, EndingType endings, }); -} -extension BlobPropertyBagExtension on BlobPropertyBag { external set type(String value); external String get type; external set endings(EndingType value); external EndingType get endings; } - -@JS('File') -@staticInterop -class File implements Blob { +extension type File._(JSObject _) implements Blob, JSObject { external factory File( JSArray fileBits, String fileName, [ FilePropertyBag options, ]); -} -extension FileExtension on File { external String get name; external int get lastModified; external String get webkitRelativePath; } - -@JS() -@staticInterop -@anonymous -class FilePropertyBag implements BlobPropertyBag { +extension type FilePropertyBag._(JSObject _) + implements BlobPropertyBag, JSObject { external factory FilePropertyBag({int lastModified}); -} -extension FilePropertyBagExtension on FilePropertyBag { external set lastModified(int value); external int get lastModified; } - -@JS('FileList') -@staticInterop -class FileList {} - -extension FileListExtension on FileList { +extension type FileList._(JSObject _) implements JSObject { external File? item(int index); external int get length; } - -@JS('FileReader') -@staticInterop -class FileReader implements EventTarget { +extension type FileReader._(JSObject _) implements EventTarget, JSObject { external factory FileReader(); external static int get EMPTY; external static int get LOADING; external static int get DONE; -} - -extension FileReaderExtension on FileReader { external void readAsArrayBuffer(Blob blob); external void readAsBinaryString(Blob blob); external void readAsText( @@ -125,14 +93,9 @@ extension FileReaderExtension on FileReader { external set onloadend(EventHandler value); external EventHandler get onloadend; } - -@JS('FileReaderSync') -@staticInterop -class FileReaderSync { +extension type FileReaderSync._(JSObject _) implements JSObject { external factory FileReaderSync(); -} -extension FileReaderSyncExtension on FileReaderSync { external JSArrayBuffer readAsArrayBuffer(Blob blob); external String readAsBinaryString(Blob blob); external String readAsText( diff --git a/lib/src/dom/filter_effects.dart b/lib/src/dom/filter_effects.dart index 8522924e..347d0162 100644 --- a/lib/src/dom/filter_effects.dart +++ b/lib/src/dom/filter_effects.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'svg.dart'; -@JS('SVGFilterElement') -@staticInterop -class SVGFilterElement implements SVGElement {} - -extension SVGFilterElementExtension on SVGFilterElement { +extension type SVGFilterElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedEnumeration get filterUnits; external SVGAnimatedEnumeration get primitiveUnits; external SVGAnimatedLength get x; @@ -21,10 +17,7 @@ extension SVGFilterElementExtension on SVGFilterElement { external SVGAnimatedLength get height; external SVGAnimatedString get href; } - -@JS('SVGFEBlendElement') -@staticInterop -class SVGFEBlendElement implements SVGElement { +extension type SVGFEBlendElement._(JSObject _) implements SVGElement, JSObject { external static int get SVG_FEBLEND_MODE_UNKNOWN; external static int get SVG_FEBLEND_MODE_NORMAL; external static int get SVG_FEBLEND_MODE_MULTIPLY; @@ -42,9 +35,6 @@ class SVGFEBlendElement implements SVGElement { external static int get SVG_FEBLEND_MODE_SATURATION; external static int get SVG_FEBLEND_MODE_COLOR; external static int get SVG_FEBLEND_MODE_LUMINOSITY; -} - -extension SVGFEBlendElementExtension on SVGFEBlendElement { external SVGAnimatedString get in1; external SVGAnimatedString get in2; external SVGAnimatedEnumeration get mode; @@ -54,18 +44,13 @@ extension SVGFEBlendElementExtension on SVGFEBlendElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEColorMatrixElement') -@staticInterop -class SVGFEColorMatrixElement implements SVGElement { +extension type SVGFEColorMatrixElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_FECOLORMATRIX_TYPE_UNKNOWN; external static int get SVG_FECOLORMATRIX_TYPE_MATRIX; external static int get SVG_FECOLORMATRIX_TYPE_SATURATE; external static int get SVG_FECOLORMATRIX_TYPE_HUEROTATE; external static int get SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA; -} - -extension SVGFEColorMatrixElementExtension on SVGFEColorMatrixElement { external SVGAnimatedString get in1; external SVGAnimatedEnumeration get type; external SVGAnimatedNumberList get values; @@ -75,13 +60,8 @@ extension SVGFEColorMatrixElementExtension on SVGFEColorMatrixElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEComponentTransferElement') -@staticInterop -class SVGFEComponentTransferElement implements SVGElement {} - -extension SVGFEComponentTransferElementExtension - on SVGFEComponentTransferElement { +extension type SVGFEComponentTransferElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedString get in1; external SVGAnimatedLength get x; external SVGAnimatedLength get y; @@ -89,20 +69,14 @@ extension SVGFEComponentTransferElementExtension external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGComponentTransferFunctionElement') -@staticInterop -class SVGComponentTransferFunctionElement implements SVGElement { +extension type SVGComponentTransferFunctionElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN; external static int get SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; external static int get SVG_FECOMPONENTTRANSFER_TYPE_TABLE; external static int get SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE; external static int get SVG_FECOMPONENTTRANSFER_TYPE_LINEAR; external static int get SVG_FECOMPONENTTRANSFER_TYPE_GAMMA; -} - -extension SVGComponentTransferFunctionElementExtension - on SVGComponentTransferFunctionElement { external SVGAnimatedEnumeration get type; external SVGAnimatedNumberList get tableValues; external SVGAnimatedNumber get slope; @@ -111,26 +85,16 @@ extension SVGComponentTransferFunctionElementExtension external SVGAnimatedNumber get exponent; external SVGAnimatedNumber get offset; } - -@JS('SVGFEFuncRElement') -@staticInterop -class SVGFEFuncRElement implements SVGComponentTransferFunctionElement {} - -@JS('SVGFEFuncGElement') -@staticInterop -class SVGFEFuncGElement implements SVGComponentTransferFunctionElement {} - -@JS('SVGFEFuncBElement') -@staticInterop -class SVGFEFuncBElement implements SVGComponentTransferFunctionElement {} - -@JS('SVGFEFuncAElement') -@staticInterop -class SVGFEFuncAElement implements SVGComponentTransferFunctionElement {} - -@JS('SVGFECompositeElement') -@staticInterop -class SVGFECompositeElement implements SVGElement { +extension type SVGFEFuncRElement._(JSObject _) + implements SVGComponentTransferFunctionElement, JSObject {} +extension type SVGFEFuncGElement._(JSObject _) + implements SVGComponentTransferFunctionElement, JSObject {} +extension type SVGFEFuncBElement._(JSObject _) + implements SVGComponentTransferFunctionElement, JSObject {} +extension type SVGFEFuncAElement._(JSObject _) + implements SVGComponentTransferFunctionElement, JSObject {} +extension type SVGFECompositeElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_FECOMPOSITE_OPERATOR_UNKNOWN; external static int get SVG_FECOMPOSITE_OPERATOR_OVER; external static int get SVG_FECOMPOSITE_OPERATOR_IN; @@ -138,9 +102,6 @@ class SVGFECompositeElement implements SVGElement { external static int get SVG_FECOMPOSITE_OPERATOR_ATOP; external static int get SVG_FECOMPOSITE_OPERATOR_XOR; external static int get SVG_FECOMPOSITE_OPERATOR_ARITHMETIC; -} - -extension SVGFECompositeElementExtension on SVGFECompositeElement { external SVGAnimatedString get in1; external SVGAnimatedString get in2; external SVGAnimatedEnumeration get operator; @@ -154,17 +115,12 @@ extension SVGFECompositeElementExtension on SVGFECompositeElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEConvolveMatrixElement') -@staticInterop -class SVGFEConvolveMatrixElement implements SVGElement { +extension type SVGFEConvolveMatrixElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_EDGEMODE_UNKNOWN; external static int get SVG_EDGEMODE_DUPLICATE; external static int get SVG_EDGEMODE_WRAP; external static int get SVG_EDGEMODE_NONE; -} - -extension SVGFEConvolveMatrixElementExtension on SVGFEConvolveMatrixElement { external SVGAnimatedString get in1; external SVGAnimatedInteger get orderX; external SVGAnimatedInteger get orderY; @@ -183,12 +139,8 @@ extension SVGFEConvolveMatrixElementExtension on SVGFEConvolveMatrixElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEDiffuseLightingElement') -@staticInterop -class SVGFEDiffuseLightingElement implements SVGElement {} - -extension SVGFEDiffuseLightingElementExtension on SVGFEDiffuseLightingElement { +extension type SVGFEDiffuseLightingElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedString get in1; external SVGAnimatedNumber get surfaceScale; external SVGAnimatedNumber get diffuseConstant; @@ -200,31 +152,19 @@ extension SVGFEDiffuseLightingElementExtension on SVGFEDiffuseLightingElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEDistantLightElement') -@staticInterop -class SVGFEDistantLightElement implements SVGElement {} - -extension SVGFEDistantLightElementExtension on SVGFEDistantLightElement { +extension type SVGFEDistantLightElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedNumber get azimuth; external SVGAnimatedNumber get elevation; } - -@JS('SVGFEPointLightElement') -@staticInterop -class SVGFEPointLightElement implements SVGElement {} - -extension SVGFEPointLightElementExtension on SVGFEPointLightElement { +extension type SVGFEPointLightElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedNumber get x; external SVGAnimatedNumber get y; external SVGAnimatedNumber get z; } - -@JS('SVGFESpotLightElement') -@staticInterop -class SVGFESpotLightElement implements SVGElement {} - -extension SVGFESpotLightElementExtension on SVGFESpotLightElement { +extension type SVGFESpotLightElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedNumber get x; external SVGAnimatedNumber get y; external SVGAnimatedNumber get z; @@ -234,18 +174,13 @@ extension SVGFESpotLightElementExtension on SVGFESpotLightElement { external SVGAnimatedNumber get specularExponent; external SVGAnimatedNumber get limitingConeAngle; } - -@JS('SVGFEDisplacementMapElement') -@staticInterop -class SVGFEDisplacementMapElement implements SVGElement { +extension type SVGFEDisplacementMapElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_CHANNEL_UNKNOWN; external static int get SVG_CHANNEL_R; external static int get SVG_CHANNEL_G; external static int get SVG_CHANNEL_B; external static int get SVG_CHANNEL_A; -} - -extension SVGFEDisplacementMapElementExtension on SVGFEDisplacementMapElement { external SVGAnimatedString get in1; external SVGAnimatedString get in2; external SVGAnimatedNumber get scale; @@ -257,12 +192,8 @@ extension SVGFEDisplacementMapElementExtension on SVGFEDisplacementMapElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEDropShadowElement') -@staticInterop -class SVGFEDropShadowElement implements SVGElement {} - -extension SVGFEDropShadowElementExtension on SVGFEDropShadowElement { +extension type SVGFEDropShadowElement._(JSObject _) + implements SVGElement, JSObject { external void setStdDeviation( num stdDeviationX, num stdDeviationY, @@ -278,29 +209,19 @@ extension SVGFEDropShadowElementExtension on SVGFEDropShadowElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEFloodElement') -@staticInterop -class SVGFEFloodElement implements SVGElement {} - -extension SVGFEFloodElementExtension on SVGFEFloodElement { +extension type SVGFEFloodElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedLength get x; external SVGAnimatedLength get y; external SVGAnimatedLength get width; external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEGaussianBlurElement') -@staticInterop -class SVGFEGaussianBlurElement implements SVGElement { +extension type SVGFEGaussianBlurElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_EDGEMODE_UNKNOWN; external static int get SVG_EDGEMODE_DUPLICATE; external static int get SVG_EDGEMODE_WRAP; external static int get SVG_EDGEMODE_NONE; -} - -extension SVGFEGaussianBlurElementExtension on SVGFEGaussianBlurElement { external void setStdDeviation( num stdDeviationX, num stdDeviationY, @@ -315,12 +236,7 @@ extension SVGFEGaussianBlurElementExtension on SVGFEGaussianBlurElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEImageElement') -@staticInterop -class SVGFEImageElement implements SVGElement {} - -extension SVGFEImageElementExtension on SVGFEImageElement { +extension type SVGFEImageElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; external SVGAnimatedString get crossOrigin; external SVGAnimatedLength get x; @@ -330,36 +246,22 @@ extension SVGFEImageElementExtension on SVGFEImageElement { external SVGAnimatedString get result; external SVGAnimatedString get href; } - -@JS('SVGFEMergeElement') -@staticInterop -class SVGFEMergeElement implements SVGElement {} - -extension SVGFEMergeElementExtension on SVGFEMergeElement { +extension type SVGFEMergeElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedLength get x; external SVGAnimatedLength get y; external SVGAnimatedLength get width; external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEMergeNodeElement') -@staticInterop -class SVGFEMergeNodeElement implements SVGElement {} - -extension SVGFEMergeNodeElementExtension on SVGFEMergeNodeElement { +extension type SVGFEMergeNodeElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedString get in1; } - -@JS('SVGFEMorphologyElement') -@staticInterop -class SVGFEMorphologyElement implements SVGElement { +extension type SVGFEMorphologyElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_MORPHOLOGY_OPERATOR_UNKNOWN; external static int get SVG_MORPHOLOGY_OPERATOR_ERODE; external static int get SVG_MORPHOLOGY_OPERATOR_DILATE; -} - -extension SVGFEMorphologyElementExtension on SVGFEMorphologyElement { external SVGAnimatedString get in1; external SVGAnimatedEnumeration get operator; external SVGAnimatedNumber get radiusX; @@ -370,12 +272,8 @@ extension SVGFEMorphologyElementExtension on SVGFEMorphologyElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFEOffsetElement') -@staticInterop -class SVGFEOffsetElement implements SVGElement {} - -extension SVGFEOffsetElementExtension on SVGFEOffsetElement { +extension type SVGFEOffsetElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedString get in1; external SVGAnimatedNumber get dx; external SVGAnimatedNumber get dy; @@ -385,13 +283,8 @@ extension SVGFEOffsetElementExtension on SVGFEOffsetElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFESpecularLightingElement') -@staticInterop -class SVGFESpecularLightingElement implements SVGElement {} - -extension SVGFESpecularLightingElementExtension - on SVGFESpecularLightingElement { +extension type SVGFESpecularLightingElement._(JSObject _) + implements SVGElement, JSObject { external SVGAnimatedString get in1; external SVGAnimatedNumber get surfaceScale; external SVGAnimatedNumber get specularConstant; @@ -404,12 +297,7 @@ extension SVGFESpecularLightingElementExtension external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFETileElement') -@staticInterop -class SVGFETileElement implements SVGElement {} - -extension SVGFETileElementExtension on SVGFETileElement { +extension type SVGFETileElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedString get in1; external SVGAnimatedLength get x; external SVGAnimatedLength get y; @@ -417,19 +305,14 @@ extension SVGFETileElementExtension on SVGFETileElement { external SVGAnimatedLength get height; external SVGAnimatedString get result; } - -@JS('SVGFETurbulenceElement') -@staticInterop -class SVGFETurbulenceElement implements SVGElement { +extension type SVGFETurbulenceElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_TURBULENCE_TYPE_UNKNOWN; external static int get SVG_TURBULENCE_TYPE_FRACTALNOISE; external static int get SVG_TURBULENCE_TYPE_TURBULENCE; external static int get SVG_STITCHTYPE_UNKNOWN; external static int get SVG_STITCHTYPE_STITCH; external static int get SVG_STITCHTYPE_NOSTITCH; -} - -extension SVGFETurbulenceElementExtension on SVGFETurbulenceElement { external SVGAnimatedNumber get baseFrequencyX; external SVGAnimatedNumber get baseFrequencyY; external SVGAnimatedInteger get numOctaves; diff --git a/lib/src/dom/font_metrics_api.dart b/lib/src/dom/font_metrics_api.dart index d21f5a5e..e5add12c 100644 --- a/lib/src/dom/font_metrics_api.dart +++ b/lib/src/dom/font_metrics_api.dart @@ -6,11 +6,7 @@ import 'dart:js_interop'; -@JS('FontMetrics') -@staticInterop -class FontMetrics {} - -extension FontMetricsExtension on FontMetrics { +extension type FontMetrics._(JSObject _) implements JSObject { external num get width; external JSArray get advances; external num get boundingBoxLeft; @@ -26,21 +22,11 @@ extension FontMetricsExtension on FontMetrics { external JSArray get baselines; external JSArray get fonts; } - -@JS('Baseline') -@staticInterop -class Baseline {} - -extension BaselineExtension on Baseline { +extension type Baseline._(JSObject _) implements JSObject { external String get name; external num get value; } - -@JS('Font') -@staticInterop -class Font {} - -extension FontExtension on Font { +extension type Font._(JSObject _) implements JSObject { external String get name; external int get glyphsRendered; } diff --git a/lib/src/dom/fs.dart b/lib/src/dom/fs.dart index 43f12b70..69b7c7a1 100644 --- a/lib/src/dom/fs.dart +++ b/lib/src/dom/fs.dart @@ -13,12 +13,7 @@ import 'webidl.dart'; typedef FileSystemWriteChunkType = JSAny; typedef FileSystemHandleKind = String; typedef WriteCommandType = String; - -@JS('FileSystemHandle') -@staticInterop -class FileSystemHandle {} - -extension FileSystemHandleExtension on FileSystemHandle { +extension type FileSystemHandle._(JSObject _) implements JSObject { external JSPromise queryPermission( [FileSystemHandlePermissionDescriptor descriptor]); external JSPromise requestPermission( @@ -27,72 +22,39 @@ extension FileSystemHandleExtension on FileSystemHandle { external FileSystemHandleKind get kind; external String get name; } - -@JS() -@staticInterop -@anonymous -class FileSystemCreateWritableOptions { +extension type FileSystemCreateWritableOptions._(JSObject _) + implements JSObject { external factory FileSystemCreateWritableOptions({bool keepExistingData}); -} -extension FileSystemCreateWritableOptionsExtension - on FileSystemCreateWritableOptions { external set keepExistingData(bool value); external bool get keepExistingData; } - -@JS('FileSystemFileHandle') -@staticInterop -class FileSystemFileHandle implements FileSystemHandle {} - -extension FileSystemFileHandleExtension on FileSystemFileHandle { +extension type FileSystemFileHandle._(JSObject _) + implements FileSystemHandle, JSObject { external JSPromise getFile(); external JSPromise createWritable([FileSystemCreateWritableOptions options]); external JSPromise createSyncAccessHandle(); } - -@JS() -@staticInterop -@anonymous -class FileSystemGetFileOptions { +extension type FileSystemGetFileOptions._(JSObject _) implements JSObject { external factory FileSystemGetFileOptions({bool create}); -} -extension FileSystemGetFileOptionsExtension on FileSystemGetFileOptions { external set create(bool value); external bool get create; } - -@JS() -@staticInterop -@anonymous -class FileSystemGetDirectoryOptions { +extension type FileSystemGetDirectoryOptions._(JSObject _) implements JSObject { external factory FileSystemGetDirectoryOptions({bool create}); -} -extension FileSystemGetDirectoryOptionsExtension - on FileSystemGetDirectoryOptions { external set create(bool value); external bool get create; } - -@JS() -@staticInterop -@anonymous -class FileSystemRemoveOptions { +extension type FileSystemRemoveOptions._(JSObject _) implements JSObject { external factory FileSystemRemoveOptions({bool recursive}); -} -extension FileSystemRemoveOptionsExtension on FileSystemRemoveOptions { external set recursive(bool value); external bool get recursive; } - -@JS('FileSystemDirectoryHandle') -@staticInterop -class FileSystemDirectoryHandle implements FileSystemHandle {} - -extension FileSystemDirectoryHandleExtension on FileSystemDirectoryHandle { +extension type FileSystemDirectoryHandle._(JSObject _) + implements FileSystemHandle, JSObject { external JSPromise getFileHandle( String name, [ FileSystemGetFileOptions options, @@ -107,20 +69,14 @@ extension FileSystemDirectoryHandleExtension on FileSystemDirectoryHandle { ]); external JSPromise resolve(FileSystemHandle possibleDescendant); } - -@JS() -@staticInterop -@anonymous -class WriteParams { +extension type WriteParams._(JSObject _) implements JSObject { external factory WriteParams({ required WriteCommandType type, int? size, int? position, JSAny? data, }); -} -extension WriteParamsExtension on WriteParams { external set type(WriteCommandType value); external WriteCommandType get type; external set size(int? value); @@ -130,35 +86,19 @@ extension WriteParamsExtension on WriteParams { external set data(JSAny? value); external JSAny? get data; } - -@JS('FileSystemWritableFileStream') -@staticInterop -class FileSystemWritableFileStream implements WritableStream {} - -extension FileSystemWritableFileStreamExtension - on FileSystemWritableFileStream { +extension type FileSystemWritableFileStream._(JSObject _) + implements WritableStream, JSObject { external JSPromise write(FileSystemWriteChunkType data); external JSPromise seek(int position); external JSPromise truncate(int size); } - -@JS() -@staticInterop -@anonymous -class FileSystemReadWriteOptions { +extension type FileSystemReadWriteOptions._(JSObject _) implements JSObject { external factory FileSystemReadWriteOptions({int at}); -} -extension FileSystemReadWriteOptionsExtension on FileSystemReadWriteOptions { external set at(int value); external int get at; } - -@JS('FileSystemSyncAccessHandle') -@staticInterop -class FileSystemSyncAccessHandle {} - -extension FileSystemSyncAccessHandleExtension on FileSystemSyncAccessHandle { +extension type FileSystemSyncAccessHandle._(JSObject _) implements JSObject { external int read( AllowSharedBufferSource buffer, [ FileSystemReadWriteOptions options, diff --git a/lib/src/dom/fullscreen.dart b/lib/src/dom/fullscreen.dart index b5f45d93..814869ac 100644 --- a/lib/src/dom/fullscreen.dart +++ b/lib/src/dom/fullscreen.dart @@ -9,18 +9,12 @@ import 'dart:js_interop'; import 'window_management.dart'; typedef FullscreenNavigationUI = String; - -@JS() -@staticInterop -@anonymous -class FullscreenOptions { +extension type FullscreenOptions._(JSObject _) implements JSObject { external factory FullscreenOptions({ FullscreenNavigationUI navigationUI, ScreenDetailed screen, }); -} -extension FullscreenOptionsExtension on FullscreenOptions { external set navigationUI(FullscreenNavigationUI value); external FullscreenNavigationUI get navigationUI; external set screen(ScreenDetailed value); diff --git a/lib/src/dom/gamepad.dart b/lib/src/dom/gamepad.dart index 3667ae4a..f0254092 100644 --- a/lib/src/dom/gamepad.dart +++ b/lib/src/dom/gamepad.dart @@ -11,12 +11,7 @@ import 'gamepad_extensions.dart'; import 'hr_time.dart'; typedef GamepadMappingType = String; - -@JS('Gamepad') -@staticInterop -class Gamepad {} - -extension GamepadExtension on Gamepad { +extension type Gamepad._(JSObject _) implements JSObject { external GamepadHand get hand; external JSArray get hapticActuators; external GamepadPose? get pose; @@ -30,38 +25,22 @@ extension GamepadExtension on Gamepad { external JSArray get axes; external JSArray get buttons; } - -@JS('GamepadButton') -@staticInterop -class GamepadButton {} - -extension GamepadButtonExtension on GamepadButton { +extension type GamepadButton._(JSObject _) implements JSObject { external bool get pressed; external bool get touched; external num get value; } - -@JS('GamepadEvent') -@staticInterop -class GamepadEvent implements Event { +extension type GamepadEvent._(JSObject _) implements Event, JSObject { external factory GamepadEvent( String type, GamepadEventInit eventInitDict, ); -} -extension GamepadEventExtension on GamepadEvent { external Gamepad get gamepad; } - -@JS() -@staticInterop -@anonymous -class GamepadEventInit implements EventInit { +extension type GamepadEventInit._(JSObject _) implements EventInit, JSObject { external factory GamepadEventInit({required Gamepad gamepad}); -} -extension GamepadEventInitExtension on GamepadEventInit { external set gamepad(Gamepad value); external Gamepad get gamepad; } diff --git a/lib/src/dom/gamepad_extensions.dart b/lib/src/dom/gamepad_extensions.dart index 2a895aba..0ccffb5b 100644 --- a/lib/src/dom/gamepad_extensions.dart +++ b/lib/src/dom/gamepad_extensions.dart @@ -10,12 +10,7 @@ typedef GamepadHand = String; typedef GamepadHapticsResult = String; typedef GamepadHapticActuatorType = String; typedef GamepadHapticEffectType = String; - -@JS('GamepadHapticActuator') -@staticInterop -class GamepadHapticActuator {} - -extension GamepadHapticActuatorExtension on GamepadHapticActuator { +extension type GamepadHapticActuator._(JSObject _) implements JSObject { external bool canPlayEffectType(GamepadHapticEffectType type); external JSPromise playEffect( GamepadHapticEffectType type, [ @@ -28,20 +23,14 @@ extension GamepadHapticActuatorExtension on GamepadHapticActuator { external JSPromise reset(); external GamepadHapticActuatorType get type; } - -@JS() -@staticInterop -@anonymous -class GamepadEffectParameters { +extension type GamepadEffectParameters._(JSObject _) implements JSObject { external factory GamepadEffectParameters({ num duration, num startDelay, num strongMagnitude, num weakMagnitude, }); -} -extension GamepadEffectParametersExtension on GamepadEffectParameters { external set duration(num value); external num get duration; external set startDelay(num value); @@ -51,12 +40,7 @@ extension GamepadEffectParametersExtension on GamepadEffectParameters { external set weakMagnitude(num value); external num get weakMagnitude; } - -@JS('GamepadPose') -@staticInterop -class GamepadPose {} - -extension GamepadPoseExtension on GamepadPose { +extension type GamepadPose._(JSObject _) implements JSObject { external bool get hasOrientation; external bool get hasPosition; external JSFloat32Array? get position; @@ -66,12 +50,7 @@ extension GamepadPoseExtension on GamepadPose { external JSFloat32Array? get angularVelocity; external JSFloat32Array? get angularAcceleration; } - -@JS('GamepadTouch') -@staticInterop -class GamepadTouch {} - -extension GamepadTouchExtension on GamepadTouch { +extension type GamepadTouch._(JSObject _) implements JSObject { external int get touchId; external int get surfaceId; external JSFloat32Array get position; diff --git a/lib/src/dom/generic_sensor.dart b/lib/src/dom/generic_sensor.dart index b5ee373e..59b7a41e 100644 --- a/lib/src/dom/generic_sensor.dart +++ b/lib/src/dom/generic_sensor.dart @@ -12,12 +12,7 @@ import 'html.dart'; import 'webidl.dart'; typedef MockSensorType = String; - -@JS('Sensor') -@staticInterop -class Sensor implements EventTarget {} - -extension SensorExtension on Sensor { +extension type Sensor._(JSObject _) implements EventTarget, JSObject { external void start(); external void stop(); external bool get activated; @@ -30,57 +25,35 @@ extension SensorExtension on Sensor { external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS() -@staticInterop -@anonymous -class SensorOptions { +extension type SensorOptions._(JSObject _) implements JSObject { external factory SensorOptions({num frequency}); -} -extension SensorOptionsExtension on SensorOptions { external set frequency(num value); external num get frequency; } - -@JS('SensorErrorEvent') -@staticInterop -class SensorErrorEvent implements Event { +extension type SensorErrorEvent._(JSObject _) implements Event, JSObject { external factory SensorErrorEvent( String type, SensorErrorEventInit errorEventInitDict, ); -} -extension SensorErrorEventExtension on SensorErrorEvent { external DOMException get error; } - -@JS() -@staticInterop -@anonymous -class SensorErrorEventInit implements EventInit { +extension type SensorErrorEventInit._(JSObject _) + implements EventInit, JSObject { external factory SensorErrorEventInit({required DOMException error}); -} -extension SensorErrorEventInitExtension on SensorErrorEventInit { external set error(DOMException value); external DOMException get error; } - -@JS() -@staticInterop -@anonymous -class MockSensorConfiguration { +extension type MockSensorConfiguration._(JSObject _) implements JSObject { external factory MockSensorConfiguration({ required MockSensorType mockSensorType, bool connected, num? maxSamplingFrequency, num? minSamplingFrequency, }); -} -extension MockSensorConfigurationExtension on MockSensorConfiguration { external set mockSensorType(MockSensorType value); external MockSensorType get mockSensorType; external set connected(bool value); @@ -90,19 +63,13 @@ extension MockSensorConfigurationExtension on MockSensorConfiguration { external set minSamplingFrequency(num? value); external num? get minSamplingFrequency; } - -@JS() -@staticInterop -@anonymous -class MockSensor { +extension type MockSensor._(JSObject _) implements JSObject { external factory MockSensor({ num maxSamplingFrequency, num minSamplingFrequency, num requestedSamplingFrequency, }); -} -extension MockSensorExtension on MockSensor { external set maxSamplingFrequency(num value); external num get maxSamplingFrequency; external set minSamplingFrequency(num value); @@ -110,10 +77,6 @@ extension MockSensorExtension on MockSensor { external set requestedSamplingFrequency(num value); external num get requestedSamplingFrequency; } - -@JS() -@staticInterop -@anonymous -class MockSensorReadingValues { +extension type MockSensorReadingValues._(JSObject _) implements JSObject { external factory MockSensorReadingValues(); } diff --git a/lib/src/dom/geolocation.dart b/lib/src/dom/geolocation.dart index d2ddb320..aac63069 100644 --- a/lib/src/dom/geolocation.dart +++ b/lib/src/dom/geolocation.dart @@ -10,12 +10,7 @@ import 'hr_time.dart'; typedef PositionCallback = JSFunction; typedef PositionErrorCallback = JSFunction; - -@JS('Geolocation') -@staticInterop -class Geolocation {} - -extension GeolocationExtension on Geolocation { +extension type Geolocation._(JSObject _) implements JSObject { external void getCurrentPosition( PositionCallback successCallback, [ PositionErrorCallback? errorCallback, @@ -28,19 +23,13 @@ extension GeolocationExtension on Geolocation { ]); external void clearWatch(int watchId); } - -@JS() -@staticInterop -@anonymous -class PositionOptions { +extension type PositionOptions._(JSObject _) implements JSObject { external factory PositionOptions({ bool enableHighAccuracy, int timeout, int maximumAge, }); -} -extension PositionOptionsExtension on PositionOptions { external set enableHighAccuracy(bool value); external bool get enableHighAccuracy; external set timeout(int value); @@ -48,21 +37,11 @@ extension PositionOptionsExtension on PositionOptions { external set maximumAge(int value); external int get maximumAge; } - -@JS('GeolocationPosition') -@staticInterop -class GeolocationPosition {} - -extension GeolocationPositionExtension on GeolocationPosition { +extension type GeolocationPosition._(JSObject _) implements JSObject { external GeolocationCoordinates get coords; external EpochTimeStamp get timestamp; } - -@JS('GeolocationCoordinates') -@staticInterop -class GeolocationCoordinates {} - -extension GeolocationCoordinatesExtension on GeolocationCoordinates { +extension type GeolocationCoordinates._(JSObject _) implements JSObject { external num get accuracy; external num get latitude; external num get longitude; @@ -71,16 +50,10 @@ extension GeolocationCoordinatesExtension on GeolocationCoordinates { external num? get heading; external num? get speed; } - -@JS('GeolocationPositionError') -@staticInterop -class GeolocationPositionError { +extension type GeolocationPositionError._(JSObject _) implements JSObject { external static int get PERMISSION_DENIED; external static int get POSITION_UNAVAILABLE; external static int get TIMEOUT; -} - -extension GeolocationPositionErrorExtension on GeolocationPositionError { external int get code; external String get message; } diff --git a/lib/src/dom/geolocation_sensor.dart b/lib/src/dom/geolocation_sensor.dart index d030ded2..ac47a4fb 100644 --- a/lib/src/dom/geolocation_sensor.dart +++ b/lib/src/dom/geolocation_sensor.dart @@ -10,15 +10,10 @@ import 'dom.dart'; import 'generic_sensor.dart'; import 'hr_time.dart'; -@JS('GeolocationSensor') -@staticInterop -class GeolocationSensor implements Sensor { +extension type GeolocationSensor._(JSObject _) implements Sensor, JSObject { external factory GeolocationSensor([GeolocationSensorOptions options]); external static JSPromise read([ReadOptions readOptions]); -} - -extension GeolocationSensorExtension on GeolocationSensor { external num? get latitude; external num? get longitude; external num? get altitude; @@ -27,30 +22,18 @@ extension GeolocationSensorExtension on GeolocationSensor { external num? get heading; external num? get speed; } - -@JS() -@staticInterop -@anonymous -class GeolocationSensorOptions implements SensorOptions { +extension type GeolocationSensorOptions._(JSObject _) + implements SensorOptions, JSObject { external factory GeolocationSensorOptions(); } - -@JS() -@staticInterop -@anonymous -class ReadOptions implements GeolocationSensorOptions { +extension type ReadOptions._(JSObject _) + implements GeolocationSensorOptions, JSObject { external factory ReadOptions({AbortSignal? signal}); -} -extension ReadOptionsExtension on ReadOptions { external set signal(AbortSignal? value); external AbortSignal? get signal; } - -@JS() -@staticInterop -@anonymous -class GeolocationSensorReading { +extension type GeolocationSensorReading._(JSObject _) implements JSObject { external factory GeolocationSensorReading({ DOMHighResTimeStamp? timestamp, num? latitude, @@ -61,9 +44,7 @@ class GeolocationSensorReading { num? heading, num? speed, }); -} -extension GeolocationSensorReadingExtension on GeolocationSensorReading { external set timestamp(DOMHighResTimeStamp? value); external DOMHighResTimeStamp? get timestamp; external set latitude(num? value); @@ -81,11 +62,7 @@ extension GeolocationSensorReadingExtension on GeolocationSensorReading { external set speed(num? value); external num? get speed; } - -@JS() -@staticInterop -@anonymous -class GeolocationReadingValues { +extension type GeolocationReadingValues._(JSObject _) implements JSObject { external factory GeolocationReadingValues({ required num? latitude, required num? longitude, @@ -95,9 +72,7 @@ class GeolocationReadingValues { required num? heading, required num? speed, }); -} -extension GeolocationReadingValuesExtension on GeolocationReadingValues { external set latitude(num? value); external num? get latitude; external set longitude(num? value); diff --git a/lib/src/dom/geometry.dart b/lib/src/dom/geometry.dart index f2cb51a7..93c2e336 100644 --- a/lib/src/dom/geometry.dart +++ b/lib/src/dom/geometry.dart @@ -6,9 +6,7 @@ import 'dart:js_interop'; -@JS('DOMPointReadOnly') -@staticInterop -class DOMPointReadOnly { +extension type DOMPointReadOnly._(JSObject _) implements JSObject { external factory DOMPointReadOnly([ num x, num y, @@ -17,9 +15,6 @@ class DOMPointReadOnly { ]); external static DOMPointReadOnly fromPoint([DOMPointInit other]); -} - -extension DOMPointReadOnlyExtension on DOMPointReadOnly { external DOMPoint matrixTransform([DOMMatrixInit matrix]); external JSObject toJSON(); external num get x; @@ -27,10 +22,7 @@ extension DOMPointReadOnlyExtension on DOMPointReadOnly { external num get z; external num get w; } - -@JS('DOMPoint') -@staticInterop -class DOMPoint implements DOMPointReadOnly { +extension type DOMPoint._(JSObject _) implements DOMPointReadOnly, JSObject { external factory DOMPoint([ num x, num y, @@ -39,9 +31,6 @@ class DOMPoint implements DOMPointReadOnly { ]); external static DOMPoint fromPoint([DOMPointInit other]); -} - -extension DOMPointExtension on DOMPoint { external set x(num value); external num get x; external set y(num value); @@ -51,20 +40,14 @@ extension DOMPointExtension on DOMPoint { external set w(num value); external num get w; } - -@JS() -@staticInterop -@anonymous -class DOMPointInit { +extension type DOMPointInit._(JSObject _) implements JSObject { external factory DOMPointInit({ num x, num y, num z, num w, }); -} -extension DOMPointInitExtension on DOMPointInit { external set x(num value); external num get x; external set y(num value); @@ -74,10 +57,7 @@ extension DOMPointInitExtension on DOMPointInit { external set w(num value); external num get w; } - -@JS('DOMRectReadOnly') -@staticInterop -class DOMRectReadOnly { +extension type DOMRectReadOnly._(JSObject _) implements JSObject { external factory DOMRectReadOnly([ num x, num y, @@ -86,9 +66,6 @@ class DOMRectReadOnly { ]); external static DOMRectReadOnly fromRect([DOMRectInit other]); -} - -extension DOMRectReadOnlyExtension on DOMRectReadOnly { external JSObject toJSON(); external num get x; external num get y; @@ -99,10 +76,7 @@ extension DOMRectReadOnlyExtension on DOMRectReadOnly { external num get bottom; external num get left; } - -@JS('DOMRect') -@staticInterop -class DOMRect implements DOMRectReadOnly { +extension type DOMRect._(JSObject _) implements DOMRectReadOnly, JSObject { external factory DOMRect([ num x, num y, @@ -111,9 +85,6 @@ class DOMRect implements DOMRectReadOnly { ]); external static DOMRect fromRect([DOMRectInit other]); -} - -extension DOMRectExtension on DOMRect { external set x(num value); external num get x; external set y(num value); @@ -123,20 +94,14 @@ extension DOMRectExtension on DOMRect { external set height(num value); external num get height; } - -@JS() -@staticInterop -@anonymous -class DOMRectInit { +extension type DOMRectInit._(JSObject _) implements JSObject { external factory DOMRectInit({ num x, num y, num width, num height, }); -} -extension DOMRectInitExtension on DOMRectInit { external set x(num value); external num get x; external set y(num value); @@ -146,19 +111,11 @@ extension DOMRectInitExtension on DOMRectInit { external set height(num value); external num get height; } - -@JS('DOMRectList') -@staticInterop -class DOMRectList {} - -extension DOMRectListExtension on DOMRectList { +extension type DOMRectList._(JSObject _) implements JSObject { external DOMRect? item(int index); external int get length; } - -@JS('DOMQuad') -@staticInterop -class DOMQuad { +extension type DOMQuad._(JSObject _) implements JSObject { external factory DOMQuad([ DOMPointInit p1, DOMPointInit p2, @@ -168,9 +125,6 @@ class DOMQuad { external static DOMQuad fromRect([DOMRectInit other]); external static DOMQuad fromQuad([DOMQuadInit other]); -} - -extension DOMQuadExtension on DOMQuad { external DOMRect getBounds(); external JSObject toJSON(); external DOMPoint get p1; @@ -178,20 +132,14 @@ extension DOMQuadExtension on DOMQuad { external DOMPoint get p3; external DOMPoint get p4; } - -@JS() -@staticInterop -@anonymous -class DOMQuadInit { +extension type DOMQuadInit._(JSObject _) implements JSObject { external factory DOMQuadInit({ DOMPointInit p1, DOMPointInit p2, DOMPointInit p3, DOMPointInit p4, }); -} -extension DOMQuadInitExtension on DOMQuadInit { external set p1(DOMPointInit value); external DOMPointInit get p1; external set p2(DOMPointInit value); @@ -201,18 +149,12 @@ extension DOMQuadInitExtension on DOMQuadInit { external set p4(DOMPointInit value); external DOMPointInit get p4; } - -@JS('DOMMatrixReadOnly') -@staticInterop -class DOMMatrixReadOnly { +extension type DOMMatrixReadOnly._(JSObject _) implements JSObject { external factory DOMMatrixReadOnly([JSAny init]); external static DOMMatrixReadOnly fromMatrix([DOMMatrixInit other]); external static DOMMatrixReadOnly fromFloat32Array(JSFloat32Array array32); external static DOMMatrixReadOnly fromFloat64Array(JSFloat64Array array64); -} - -extension DOMMatrixReadOnlyExtension on DOMMatrixReadOnly { external DOMMatrix translate([ num tx, num ty, @@ -286,18 +228,12 @@ extension DOMMatrixReadOnlyExtension on DOMMatrixReadOnly { external bool get is2D; external bool get isIdentity; } - -@JS('DOMMatrix') -@staticInterop -class DOMMatrix implements DOMMatrixReadOnly { +extension type DOMMatrix._(JSObject _) implements DOMMatrixReadOnly, JSObject { external factory DOMMatrix([JSAny init]); external static DOMMatrix fromMatrix([DOMMatrixInit other]); external static DOMMatrix fromFloat32Array(JSFloat32Array array32); external static DOMMatrix fromFloat64Array(JSFloat64Array array64); -} - -extension DOMMatrixExtension on DOMMatrix { external DOMMatrix multiplySelf([DOMMatrixInit other]); external DOMMatrix preMultiplySelf([DOMMatrixInit other]); external DOMMatrix translateSelf([ @@ -383,11 +319,7 @@ extension DOMMatrixExtension on DOMMatrix { external set m44(num value); external num get m44; } - -@JS() -@staticInterop -@anonymous -class DOMMatrix2DInit { +extension type DOMMatrix2DInit._(JSObject _) implements JSObject { external factory DOMMatrix2DInit({ num a, num b, @@ -402,9 +334,7 @@ class DOMMatrix2DInit { num m41, num m42, }); -} -extension DOMMatrix2DInitExtension on DOMMatrix2DInit { external set a(num value); external num get a; external set b(num value); @@ -430,11 +360,8 @@ extension DOMMatrix2DInitExtension on DOMMatrix2DInit { external set m42(num value); external num get m42; } - -@JS() -@staticInterop -@anonymous -class DOMMatrixInit implements DOMMatrix2DInit { +extension type DOMMatrixInit._(JSObject _) + implements DOMMatrix2DInit, JSObject { external factory DOMMatrixInit({ num m13, num m14, @@ -448,9 +375,7 @@ class DOMMatrixInit implements DOMMatrix2DInit { num m44, bool is2D, }); -} -extension DOMMatrixInitExtension on DOMMatrixInit { external set m13(num value); external num get m13; external set m14(num value); diff --git a/lib/src/dom/get_installed_related_apps.dart b/lib/src/dom/get_installed_related_apps.dart index a592a57c..6a8a050d 100644 --- a/lib/src/dom/get_installed_related_apps.dart +++ b/lib/src/dom/get_installed_related_apps.dart @@ -6,19 +6,14 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class RelatedApplication { +extension type RelatedApplication._(JSObject _) implements JSObject { external factory RelatedApplication({ required String platform, String url, String id, String version, }); -} -extension RelatedApplicationExtension on RelatedApplication { external set platform(String value); external String get platform; external set url(String value); diff --git a/lib/src/dom/gyroscope.dart b/lib/src/dom/gyroscope.dart index 41439cc6..62295fa1 100644 --- a/lib/src/dom/gyroscope.dart +++ b/lib/src/dom/gyroscope.dart @@ -9,44 +9,28 @@ import 'dart:js_interop'; import 'generic_sensor.dart'; typedef GyroscopeLocalCoordinateSystem = String; - -@JS('Gyroscope') -@staticInterop -class Gyroscope implements Sensor { +extension type Gyroscope._(JSObject _) implements Sensor, JSObject { external factory Gyroscope([GyroscopeSensorOptions sensorOptions]); -} -extension GyroscopeExtension on Gyroscope { external num? get x; external num? get y; external num? get z; } - -@JS() -@staticInterop -@anonymous -class GyroscopeSensorOptions implements SensorOptions { +extension type GyroscopeSensorOptions._(JSObject _) + implements SensorOptions, JSObject { external factory GyroscopeSensorOptions( {GyroscopeLocalCoordinateSystem referenceFrame}); -} -extension GyroscopeSensorOptionsExtension on GyroscopeSensorOptions { external set referenceFrame(GyroscopeLocalCoordinateSystem value); external GyroscopeLocalCoordinateSystem get referenceFrame; } - -@JS() -@staticInterop -@anonymous -class GyroscopeReadingValues { +extension type GyroscopeReadingValues._(JSObject _) implements JSObject { external factory GyroscopeReadingValues({ required num? x, required num? y, required num? z, }); -} -extension GyroscopeReadingValuesExtension on GyroscopeReadingValues { external set x(num? value); external num? get x; external set y(num? value); diff --git a/lib/src/dom/hr_time.dart b/lib/src/dom/hr_time.dart index 2c13e361..ed17c9b3 100644 --- a/lib/src/dom/hr_time.dart +++ b/lib/src/dom/hr_time.dart @@ -15,12 +15,7 @@ import 'user_timing.dart'; typedef DOMHighResTimeStamp = num; typedef EpochTimeStamp = int; - -@JS('Performance') -@staticInterop -class Performance implements EventTarget {} - -extension PerformanceExtension on Performance { +extension type Performance._(JSObject _) implements EventTarget, JSObject { external DOMHighResTimeStamp now(); external JSObject toJSON(); external JSPromise measureUserAgentSpecificMemory(); diff --git a/lib/src/dom/html.dart b/lib/src/dom/html.dart index 74148c1b..30f14e28 100644 --- a/lib/src/dom/html.dart +++ b/lib/src/dom/html.dart @@ -130,39 +130,21 @@ typedef PremultiplyAlpha = String; typedef ColorSpaceConversion = String; typedef ResizeQuality = String; typedef WorkerType = String; - -@JS('HTMLAllCollection') -@staticInterop -class HTMLAllCollection {} - -extension HTMLAllCollectionExtension on HTMLAllCollection { +extension type HTMLAllCollection._(JSObject _) implements JSObject { external JSObject? namedItem(String name); external JSObject? item([String nameOrIndex]); external int get length; } - -@JS('HTMLFormControlsCollection') -@staticInterop -class HTMLFormControlsCollection implements HTMLCollection {} - -extension HTMLFormControlsCollectionExtension on HTMLFormControlsCollection { +extension type HTMLFormControlsCollection._(JSObject _) + implements HTMLCollection, JSObject { external JSObject? namedItem(String name); } - -@JS('RadioNodeList') -@staticInterop -class RadioNodeList implements NodeList {} - -extension RadioNodeListExtension on RadioNodeList { +extension type RadioNodeList._(JSObject _) implements NodeList, JSObject { external set value(String value); external String get value; } - -@JS('HTMLOptionsCollection') -@staticInterop -class HTMLOptionsCollection implements HTMLCollection {} - -extension HTMLOptionsCollectionExtension on HTMLOptionsCollection { +extension type HTMLOptionsCollection._(JSObject _) + implements HTMLCollection, JSObject { external void add( JSObject element, [ JSAny? before, @@ -173,24 +155,14 @@ extension HTMLOptionsCollectionExtension on HTMLOptionsCollection { external set selectedIndex(int value); external int get selectedIndex; } - -@JS('DOMStringList') -@staticInterop -class DOMStringList {} - -extension DOMStringListExtension on DOMStringList { +extension type DOMStringList._(JSObject _) implements JSObject { external String? item(int index); external bool contains(String string); external int get length; } - -@JS('HTMLElement') -@staticInterop -class HTMLElement implements Element { +extension type HTMLElement._(JSObject _) implements Element, JSObject { external factory HTMLElement(); -} -extension HTMLElementExtension on HTMLElement { external void click(); external ElementInternals attachInternals(); external void showPopover(); @@ -453,63 +425,35 @@ extension HTMLElementExtension on HTMLElement { external set tabIndex(int value); external int get tabIndex; } - -@JS('HTMLUnknownElement') -@staticInterop -class HTMLUnknownElement implements HTMLElement {} - -@JS('DOMStringMap') -@staticInterop -class DOMStringMap {} - -@JS('HTMLHtmlElement') -@staticInterop -class HTMLHtmlElement implements HTMLElement { +extension type HTMLUnknownElement._(JSObject _) + implements HTMLElement, JSObject {} +extension type DOMStringMap._(JSObject _) implements JSObject {} +extension type HTMLHtmlElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLHtmlElement(); -} -extension HTMLHtmlElementExtension on HTMLHtmlElement { external set version(String value); external String get version; } - -@JS('HTMLHeadElement') -@staticInterop -class HTMLHeadElement implements HTMLElement { +extension type HTMLHeadElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLHeadElement(); } - -@JS('HTMLTitleElement') -@staticInterop -class HTMLTitleElement implements HTMLElement { +extension type HTMLTitleElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLTitleElement(); -} -extension HTMLTitleElementExtension on HTMLTitleElement { external set text(String value); external String get text; } - -@JS('HTMLBaseElement') -@staticInterop -class HTMLBaseElement implements HTMLElement { +extension type HTMLBaseElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLBaseElement(); -} -extension HTMLBaseElementExtension on HTMLBaseElement { external set href(String value); external String get href; external set target(String value); external String get target; } - -@JS('HTMLLinkElement') -@staticInterop -class HTMLLinkElement implements HTMLElement { +extension type HTMLLinkElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLLinkElement(); -} -extension HTMLLinkElementExtension on HTMLLinkElement { external set href(String value); external String get href; external set crossOrigin(String? value); @@ -547,14 +491,9 @@ extension HTMLLinkElementExtension on HTMLLinkElement { external String get target; external CSSStyleSheet? get sheet; } - -@JS('HTMLMetaElement') -@staticInterop -class HTMLMetaElement implements HTMLElement { +extension type HTMLMetaElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLMetaElement(); -} -extension HTMLMetaElementExtension on HTMLMetaElement { external set name(String value); external String get name; external set httpEquiv(String value); @@ -566,14 +505,9 @@ extension HTMLMetaElementExtension on HTMLMetaElement { external set scheme(String value); external String get scheme; } - -@JS('HTMLStyleElement') -@staticInterop -class HTMLStyleElement implements HTMLElement { +extension type HTMLStyleElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLStyleElement(); -} -extension HTMLStyleElementExtension on HTMLStyleElement { external set disabled(bool value); external bool get disabled; external set media(String value); @@ -583,14 +517,9 @@ extension HTMLStyleElementExtension on HTMLStyleElement { external String get type; external CSSStyleSheet? get sheet; } - -@JS('HTMLBodyElement') -@staticInterop -class HTMLBodyElement implements HTMLElement { +extension type HTMLBodyElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLBodyElement(); -} -extension HTMLBodyElementExtension on HTMLBodyElement { external set onorientationchange(EventHandler value); external EventHandler get onorientationchange; external set text(String value); @@ -644,36 +573,23 @@ extension HTMLBodyElementExtension on HTMLBodyElement { external set onportalactivate(EventHandler value); external EventHandler get onportalactivate; } - -@JS('HTMLHeadingElement') -@staticInterop -class HTMLHeadingElement implements HTMLElement { +extension type HTMLHeadingElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLHeadingElement(); -} -extension HTMLHeadingElementExtension on HTMLHeadingElement { external set align(String value); external String get align; } - -@JS('HTMLParagraphElement') -@staticInterop -class HTMLParagraphElement implements HTMLElement { +extension type HTMLParagraphElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLParagraphElement(); -} -extension HTMLParagraphElementExtension on HTMLParagraphElement { external set align(String value); external String get align; } - -@JS('HTMLHRElement') -@staticInterop -class HTMLHRElement implements HTMLElement { +extension type HTMLHRElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLHRElement(); -} -extension HTMLHRElementExtension on HTMLHRElement { external set align(String value); external String get align; external set color(String value); @@ -685,36 +601,21 @@ extension HTMLHRElementExtension on HTMLHRElement { external set width(String value); external String get width; } - -@JS('HTMLPreElement') -@staticInterop -class HTMLPreElement implements HTMLElement { +extension type HTMLPreElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLPreElement(); -} -extension HTMLPreElementExtension on HTMLPreElement { external set width(int value); external int get width; } - -@JS('HTMLQuoteElement') -@staticInterop -class HTMLQuoteElement implements HTMLElement { +extension type HTMLQuoteElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLQuoteElement(); -} -extension HTMLQuoteElementExtension on HTMLQuoteElement { external set cite(String value); external String get cite; } - -@JS('HTMLOListElement') -@staticInterop -class HTMLOListElement implements HTMLElement { +extension type HTMLOListElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLOListElement(); -} -extension HTMLOListElementExtension on HTMLOListElement { external set reversed(bool value); external bool get reversed; external set start(int value); @@ -724,73 +625,44 @@ extension HTMLOListElementExtension on HTMLOListElement { external set compact(bool value); external bool get compact; } - -@JS('HTMLUListElement') -@staticInterop -class HTMLUListElement implements HTMLElement { +extension type HTMLUListElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLUListElement(); -} -extension HTMLUListElementExtension on HTMLUListElement { external set compact(bool value); external bool get compact; external set type(String value); external String get type; } - -@JS('HTMLMenuElement') -@staticInterop -class HTMLMenuElement implements HTMLElement { +extension type HTMLMenuElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLMenuElement(); -} -extension HTMLMenuElementExtension on HTMLMenuElement { external set compact(bool value); external bool get compact; } - -@JS('HTMLLIElement') -@staticInterop -class HTMLLIElement implements HTMLElement { +extension type HTMLLIElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLLIElement(); -} -extension HTMLLIElementExtension on HTMLLIElement { external set value(int value); external int get value; external set type(String value); external String get type; } - -@JS('HTMLDListElement') -@staticInterop -class HTMLDListElement implements HTMLElement { +extension type HTMLDListElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLDListElement(); -} -extension HTMLDListElementExtension on HTMLDListElement { external set compact(bool value); external bool get compact; } - -@JS('HTMLDivElement') -@staticInterop -class HTMLDivElement implements HTMLElement { +extension type HTMLDivElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLDivElement(); -} -extension HTMLDivElementExtension on HTMLDivElement { external set align(String value); external String get align; } - -@JS('HTMLAnchorElement') -@staticInterop -class HTMLAnchorElement implements HTMLElement { +extension type HTMLAnchorElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLAnchorElement(); -} -extension HTMLAnchorElementExtension on HTMLAnchorElement { external set target(String value); external String get target; external set download(String value); @@ -844,72 +716,43 @@ extension HTMLAnchorElementExtension on HTMLAnchorElement { external set hash(String value); external String get hash; } - -@JS('HTMLDataElement') -@staticInterop -class HTMLDataElement implements HTMLElement { +extension type HTMLDataElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLDataElement(); -} -extension HTMLDataElementExtension on HTMLDataElement { external set value(String value); external String get value; } - -@JS('HTMLTimeElement') -@staticInterop -class HTMLTimeElement implements HTMLElement { +extension type HTMLTimeElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLTimeElement(); -} -extension HTMLTimeElementExtension on HTMLTimeElement { external set dateTime(String value); external String get dateTime; } - -@JS('HTMLSpanElement') -@staticInterop -class HTMLSpanElement implements HTMLElement { +extension type HTMLSpanElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLSpanElement(); } - -@JS('HTMLBRElement') -@staticInterop -class HTMLBRElement implements HTMLElement { +extension type HTMLBRElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLBRElement(); -} -extension HTMLBRElementExtension on HTMLBRElement { external set clear(String value); external String get clear; } - -@JS('HTMLModElement') -@staticInterop -class HTMLModElement implements HTMLElement { +extension type HTMLModElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLModElement(); -} -extension HTMLModElementExtension on HTMLModElement { external set cite(String value); external String get cite; external set dateTime(String value); external String get dateTime; } - -@JS('HTMLPictureElement') -@staticInterop -class HTMLPictureElement implements HTMLElement { +extension type HTMLPictureElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLPictureElement(); } - -@JS('HTMLSourceElement') -@staticInterop -class HTMLSourceElement implements HTMLElement { +extension type HTMLSourceElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLSourceElement(); -} -extension HTMLSourceElementExtension on HTMLSourceElement { external set src(String value); external String get src; external set type(String value); @@ -925,14 +768,9 @@ extension HTMLSourceElementExtension on HTMLSourceElement { external set height(int value); external int get height; } - -@JS('HTMLImageElement') -@staticInterop -class HTMLImageElement implements HTMLElement { +extension type HTMLImageElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLImageElement(); -} -extension HTMLImageElementExtension on HTMLImageElement { external JSPromise decode(); external int get x; external int get y; @@ -985,14 +823,10 @@ extension HTMLImageElementExtension on HTMLImageElement { external set sharedStorageWritable(bool value); external bool get sharedStorageWritable; } - -@JS('HTMLIFrameElement') -@staticInterop -class HTMLIFrameElement implements HTMLElement { +extension type HTMLIFrameElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLIFrameElement(); -} -extension HTMLIFrameElementExtension on HTMLIFrameElement { external Document? getSVGDocument(); external set csp(String value); external String get csp; @@ -1035,14 +869,9 @@ extension HTMLIFrameElementExtension on HTMLIFrameElement { external set sharedStorageWritable(bool value); external bool get sharedStorageWritable; } - -@JS('HTMLEmbedElement') -@staticInterop -class HTMLEmbedElement implements HTMLElement { +extension type HTMLEmbedElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLEmbedElement(); -} -extension HTMLEmbedElementExtension on HTMLEmbedElement { external Document? getSVGDocument(); external set src(String value); external String get src; @@ -1057,14 +886,10 @@ extension HTMLEmbedElementExtension on HTMLEmbedElement { external set name(String value); external String get name; } - -@JS('HTMLObjectElement') -@staticInterop -class HTMLObjectElement implements HTMLElement { +extension type HTMLObjectElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLObjectElement(); -} -extension HTMLObjectElementExtension on HTMLObjectElement { external Document? getSVGDocument(); external bool checkValidity(); external bool reportValidity(); @@ -1108,14 +933,10 @@ extension HTMLObjectElementExtension on HTMLObjectElement { external set border(String value); external String get border; } - -@JS('HTMLVideoElement') -@staticInterop -class HTMLVideoElement implements HTMLMediaElement { +extension type HTMLVideoElement._(JSObject _) + implements HTMLMediaElement, JSObject { external factory HTMLVideoElement(); -} -extension HTMLVideoElementExtension on HTMLVideoElement { external VideoPlaybackQuality getVideoPlaybackQuality(); external JSPromise requestPictureInPicture(); external int requestVideoFrameCallback(VideoFrameRequestCallback callback); @@ -1137,25 +958,17 @@ extension HTMLVideoElementExtension on HTMLVideoElement { external set disablePictureInPicture(bool value); external bool get disablePictureInPicture; } - -@JS('HTMLAudioElement') -@staticInterop -class HTMLAudioElement implements HTMLMediaElement { +extension type HTMLAudioElement._(JSObject _) + implements HTMLMediaElement, JSObject { external factory HTMLAudioElement(); } - -@JS('HTMLTrackElement') -@staticInterop -class HTMLTrackElement implements HTMLElement { +extension type HTMLTrackElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLTrackElement(); external static int get NONE; external static int get LOADING; external static int get LOADED; external static int get ERROR; -} - -extension HTMLTrackElementExtension on HTMLTrackElement { external set kind(String value); external String get kind; external set src(String value); @@ -1171,10 +984,7 @@ extension HTMLTrackElementExtension on HTMLTrackElement { external int get readyState; external TextTrack get track; } - -@JS('HTMLMediaElement') -@staticInterop -class HTMLMediaElement implements HTMLElement { +extension type HTMLMediaElement._(JSObject _) implements HTMLElement, JSObject { external static int get NETWORK_EMPTY; external static int get NETWORK_IDLE; external static int get NETWORK_LOADING; @@ -1184,9 +994,6 @@ class HTMLMediaElement implements HTMLElement { external static int get HAVE_CURRENT_DATA; external static int get HAVE_FUTURE_DATA; external static int get HAVE_ENOUGH_DATA; -} - -extension HTMLMediaElementExtension on HTMLMediaElement { external JSPromise setSinkId(String sinkId); external JSPromise setMediaKeys(MediaKeys? mediaKeys); external void load(); @@ -1253,26 +1060,15 @@ extension HTMLMediaElementExtension on HTMLMediaElement { external set disableRemotePlayback(bool value); external bool get disableRemotePlayback; } - -@JS('MediaError') -@staticInterop -class MediaError { +extension type MediaError._(JSObject _) implements JSObject { external static int get MEDIA_ERR_ABORTED; external static int get MEDIA_ERR_NETWORK; external static int get MEDIA_ERR_DECODE; external static int get MEDIA_ERR_SRC_NOT_SUPPORTED; -} - -extension MediaErrorExtension on MediaError { external int get code; external String get message; } - -@JS('AudioTrackList') -@staticInterop -class AudioTrackList implements EventTarget {} - -extension AudioTrackListExtension on AudioTrackList { +extension type AudioTrackList._(JSObject _) implements EventTarget, JSObject { external AudioTrack? getTrackById(String id); external int get length; external set onchange(EventHandler value); @@ -1282,12 +1078,7 @@ extension AudioTrackListExtension on AudioTrackList { external set onremovetrack(EventHandler value); external EventHandler get onremovetrack; } - -@JS('AudioTrack') -@staticInterop -class AudioTrack {} - -extension AudioTrackExtension on AudioTrack { +extension type AudioTrack._(JSObject _) implements JSObject { external String get id; external String get kind; external String get label; @@ -1296,12 +1087,7 @@ extension AudioTrackExtension on AudioTrack { external bool get enabled; external SourceBuffer? get sourceBuffer; } - -@JS('VideoTrackList') -@staticInterop -class VideoTrackList implements EventTarget {} - -extension VideoTrackListExtension on VideoTrackList { +extension type VideoTrackList._(JSObject _) implements EventTarget, JSObject { external VideoTrack? getTrackById(String id); external int get length; external int get selectedIndex; @@ -1312,12 +1098,7 @@ extension VideoTrackListExtension on VideoTrackList { external set onremovetrack(EventHandler value); external EventHandler get onremovetrack; } - -@JS('VideoTrack') -@staticInterop -class VideoTrack {} - -extension VideoTrackExtension on VideoTrack { +extension type VideoTrack._(JSObject _) implements JSObject { external String get id; external String get kind; external String get label; @@ -1326,12 +1107,7 @@ extension VideoTrackExtension on VideoTrack { external bool get selected; external SourceBuffer? get sourceBuffer; } - -@JS('TextTrackList') -@staticInterop -class TextTrackList implements EventTarget {} - -extension TextTrackListExtension on TextTrackList { +extension type TextTrackList._(JSObject _) implements EventTarget, JSObject { external TextTrack? getTrackById(String id); external int get length; external set onchange(EventHandler value); @@ -1341,12 +1117,7 @@ extension TextTrackListExtension on TextTrackList { external set onremovetrack(EventHandler value); external EventHandler get onremovetrack; } - -@JS('TextTrack') -@staticInterop -class TextTrack implements EventTarget {} - -extension TextTrackExtension on TextTrack { +extension type TextTrack._(JSObject _) implements EventTarget, JSObject { external void addCue(TextTrackCue cue); external void removeCue(TextTrackCue cue); external TextTrackKind get kind; @@ -1362,21 +1133,11 @@ extension TextTrackExtension on TextTrack { external EventHandler get oncuechange; external SourceBuffer? get sourceBuffer; } - -@JS('TextTrackCueList') -@staticInterop -class TextTrackCueList {} - -extension TextTrackCueListExtension on TextTrackCueList { +extension type TextTrackCueList._(JSObject _) implements JSObject { external TextTrackCue? getCueById(String id); external int get length; } - -@JS('TextTrackCue') -@staticInterop -class TextTrackCue implements EventTarget {} - -extension TextTrackCueExtension on TextTrackCue { +extension type TextTrackCue._(JSObject _) implements EventTarget, JSObject { external TextTrack? get track; external set id(String value); external String get id; @@ -1391,61 +1152,35 @@ extension TextTrackCueExtension on TextTrackCue { external set onexit(EventHandler value); external EventHandler get onexit; } - -@JS('TimeRanges') -@staticInterop -class TimeRanges {} - -extension TimeRangesExtension on TimeRanges { +extension type TimeRanges._(JSObject _) implements JSObject { external num start(int index); external num end(int index); external int get length; } - -@JS('TrackEvent') -@staticInterop -class TrackEvent implements Event { +extension type TrackEvent._(JSObject _) implements Event, JSObject { external factory TrackEvent( String type, [ TrackEventInit eventInitDict, ]); -} -extension TrackEventExtension on TrackEvent { external JSObject? get track; } - -@JS() -@staticInterop -@anonymous -class TrackEventInit implements EventInit { +extension type TrackEventInit._(JSObject _) implements EventInit, JSObject { external factory TrackEventInit({JSObject? track}); -} -extension TrackEventInitExtension on TrackEventInit { external set track(JSObject? value); external JSObject? get track; } - -@JS('HTMLMapElement') -@staticInterop -class HTMLMapElement implements HTMLElement { +extension type HTMLMapElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLMapElement(); -} -extension HTMLMapElementExtension on HTMLMapElement { external set name(String value); external String get name; external HTMLCollection get areas; } - -@JS('HTMLAreaElement') -@staticInterop -class HTMLAreaElement implements HTMLElement { +extension type HTMLAreaElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLAreaElement(); -} -extension HTMLAreaElementExtension on HTMLAreaElement { external set alt(String value); external String get alt; external set coords(String value); @@ -1487,14 +1222,9 @@ extension HTMLAreaElementExtension on HTMLAreaElement { external set hash(String value); external String get hash; } - -@JS('HTMLTableElement') -@staticInterop -class HTMLTableElement implements HTMLElement { +extension type HTMLTableElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLTableElement(); -} -extension HTMLTableElementExtension on HTMLTableElement { external HTMLTableCaptionElement createCaption(); external void deleteCaption(); external HTMLTableSectionElement createTHead(); @@ -1531,25 +1261,17 @@ extension HTMLTableElementExtension on HTMLTableElement { external set cellSpacing(String value); external String get cellSpacing; } - -@JS('HTMLTableCaptionElement') -@staticInterop -class HTMLTableCaptionElement implements HTMLElement { +extension type HTMLTableCaptionElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTableCaptionElement(); -} -extension HTMLTableCaptionElementExtension on HTMLTableCaptionElement { external set align(String value); external String get align; } - -@JS('HTMLTableColElement') -@staticInterop -class HTMLTableColElement implements HTMLElement { +extension type HTMLTableColElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTableColElement(); -} -extension HTMLTableColElementExtension on HTMLTableColElement { external set span(int value); external int get span; external set align(String value); @@ -1563,14 +1285,10 @@ extension HTMLTableColElementExtension on HTMLTableColElement { external set width(String value); external String get width; } - -@JS('HTMLTableSectionElement') -@staticInterop -class HTMLTableSectionElement implements HTMLElement { +extension type HTMLTableSectionElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTableSectionElement(); -} -extension HTMLTableSectionElementExtension on HTMLTableSectionElement { external HTMLTableRowElement insertRow([int index]); external void deleteRow(int index); external HTMLCollection get rows; @@ -1583,14 +1301,10 @@ extension HTMLTableSectionElementExtension on HTMLTableSectionElement { external set vAlign(String value); external String get vAlign; } - -@JS('HTMLTableRowElement') -@staticInterop -class HTMLTableRowElement implements HTMLElement { +extension type HTMLTableRowElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTableRowElement(); -} -extension HTMLTableRowElementExtension on HTMLTableRowElement { external HTMLTableCellElement insertCell([int index]); external void deleteCell(int index); external int get rowIndex; @@ -1607,14 +1321,10 @@ extension HTMLTableRowElementExtension on HTMLTableRowElement { external set bgColor(String value); external String get bgColor; } - -@JS('HTMLTableCellElement') -@staticInterop -class HTMLTableCellElement implements HTMLElement { +extension type HTMLTableCellElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTableCellElement(); -} -extension HTMLTableCellElementExtension on HTMLTableCellElement { external set colSpan(int value); external int get colSpan; external set rowSpan(int value); @@ -1645,14 +1355,9 @@ extension HTMLTableCellElementExtension on HTMLTableCellElement { external set bgColor(String value); external String get bgColor; } - -@JS('HTMLFormElement') -@staticInterop -class HTMLFormElement implements HTMLElement { +extension type HTMLFormElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLFormElement(); -} -extension HTMLFormElementExtension on HTMLFormElement { external void submit(); external void requestSubmit([HTMLElement? submitter]); external void reset(); @@ -1682,27 +1387,17 @@ extension HTMLFormElementExtension on HTMLFormElement { external HTMLFormControlsCollection get elements; external int get length; } - -@JS('HTMLLabelElement') -@staticInterop -class HTMLLabelElement implements HTMLElement { +extension type HTMLLabelElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLLabelElement(); -} -extension HTMLLabelElementExtension on HTMLLabelElement { external HTMLFormElement? get form; external set htmlFor(String value); external String get htmlFor; external HTMLElement? get control; } - -@JS('HTMLInputElement') -@staticInterop -class HTMLInputElement implements HTMLElement { +extension type HTMLInputElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLInputElement(); -} -extension HTMLInputElementExtension on HTMLInputElement { external void stepUp([int n]); external void stepDown([int n]); external bool checkValidity(); @@ -1815,14 +1510,10 @@ extension HTMLInputElementExtension on HTMLInputElement { external set popoverTargetAction(String value); external String get popoverTargetAction; } - -@JS('HTMLButtonElement') -@staticInterop -class HTMLButtonElement implements HTMLElement { +extension type HTMLButtonElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLButtonElement(); -} -extension HTMLButtonElementExtension on HTMLButtonElement { external bool checkValidity(); external bool reportValidity(); external void setCustomValidity(String error); @@ -1854,14 +1545,10 @@ extension HTMLButtonElementExtension on HTMLButtonElement { external set popoverTargetAction(String value); external String get popoverTargetAction; } - -@JS('HTMLSelectElement') -@staticInterop -class HTMLSelectElement implements HTMLElement { +extension type HTMLSelectElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLSelectElement(); -} -extension HTMLSelectElementExtension on HTMLSelectElement { external HTMLOptionElement? item(int index); external HTMLOptionElement? namedItem(String name); external void add( @@ -1899,37 +1586,25 @@ extension HTMLSelectElementExtension on HTMLSelectElement { external String get validationMessage; external NodeList get labels; } - -@JS('HTMLDataListElement') -@staticInterop -class HTMLDataListElement implements HTMLElement { +extension type HTMLDataListElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLDataListElement(); -} -extension HTMLDataListElementExtension on HTMLDataListElement { external HTMLCollection get options; } - -@JS('HTMLOptGroupElement') -@staticInterop -class HTMLOptGroupElement implements HTMLElement { +extension type HTMLOptGroupElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLOptGroupElement(); -} -extension HTMLOptGroupElementExtension on HTMLOptGroupElement { external set disabled(bool value); external bool get disabled; external set label(String value); external String get label; } - -@JS('HTMLOptionElement') -@staticInterop -class HTMLOptionElement implements HTMLElement { +extension type HTMLOptionElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLOptionElement(); -} -extension HTMLOptionElementExtension on HTMLOptionElement { external set disabled(bool value); external bool get disabled; external HTMLFormElement? get form; @@ -1945,14 +1620,10 @@ extension HTMLOptionElementExtension on HTMLOptionElement { external String get text; external int get index; } - -@JS('HTMLTextAreaElement') -@staticInterop -class HTMLTextAreaElement implements HTMLElement { +extension type HTMLTextAreaElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTextAreaElement(); -} -extension HTMLTextAreaElementExtension on HTMLTextAreaElement { external bool checkValidity(); external bool reportValidity(); external void setCustomValidity(String error); @@ -2010,14 +1681,10 @@ extension HTMLTextAreaElementExtension on HTMLTextAreaElement { external set selectionDirection(String value); external String get selectionDirection; } - -@JS('HTMLOutputElement') -@staticInterop -class HTMLOutputElement implements HTMLElement { +extension type HTMLOutputElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLOutputElement(); -} -extension HTMLOutputElementExtension on HTMLOutputElement { external bool checkValidity(); external bool reportValidity(); external void setCustomValidity(String error); @@ -2035,14 +1702,10 @@ extension HTMLOutputElementExtension on HTMLOutputElement { external String get validationMessage; external NodeList get labels; } - -@JS('HTMLProgressElement') -@staticInterop -class HTMLProgressElement implements HTMLElement { +extension type HTMLProgressElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLProgressElement(); -} -extension HTMLProgressElementExtension on HTMLProgressElement { external set value(num value); external num get value; external set max(num value); @@ -2050,14 +1713,9 @@ extension HTMLProgressElementExtension on HTMLProgressElement { external num get position; external NodeList get labels; } - -@JS('HTMLMeterElement') -@staticInterop -class HTMLMeterElement implements HTMLElement { +extension type HTMLMeterElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLMeterElement(); -} -extension HTMLMeterElementExtension on HTMLMeterElement { external set value(num value); external num get value; external set min(num value); @@ -2072,14 +1730,10 @@ extension HTMLMeterElementExtension on HTMLMeterElement { external num get optimum; external NodeList get labels; } - -@JS('HTMLFieldSetElement') -@staticInterop -class HTMLFieldSetElement implements HTMLElement { +extension type HTMLFieldSetElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLFieldSetElement(); -} -extension HTMLFieldSetElementExtension on HTMLFieldSetElement { external bool checkValidity(); external bool reportValidity(); external void setCustomValidity(String error); @@ -2094,24 +1748,15 @@ extension HTMLFieldSetElementExtension on HTMLFieldSetElement { external ValidityState get validity; external String get validationMessage; } - -@JS('HTMLLegendElement') -@staticInterop -class HTMLLegendElement implements HTMLElement { +extension type HTMLLegendElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLLegendElement(); -} -extension HTMLLegendElementExtension on HTMLLegendElement { external HTMLFormElement? get form; external set align(String value); external String get align; } - -@JS('ValidityState') -@staticInterop -class ValidityState {} - -extension ValidityStateExtension on ValidityState { +extension type ValidityState._(JSObject _) implements JSObject { external bool get valueMissing; external bool get typeMismatch; external bool get patternMismatch; @@ -2124,77 +1769,47 @@ extension ValidityStateExtension on ValidityState { external bool get customError; external bool get valid; } - -@JS('SubmitEvent') -@staticInterop -class SubmitEvent implements Event { +extension type SubmitEvent._(JSObject _) implements Event, JSObject { external factory SubmitEvent( String type, [ SubmitEventInit eventInitDict, ]); -} -extension SubmitEventExtension on SubmitEvent { external HTMLElement? get submitter; } - -@JS() -@staticInterop -@anonymous -class SubmitEventInit implements EventInit { +extension type SubmitEventInit._(JSObject _) implements EventInit, JSObject { external factory SubmitEventInit({HTMLElement? submitter}); -} -extension SubmitEventInitExtension on SubmitEventInit { external set submitter(HTMLElement? value); external HTMLElement? get submitter; } - -@JS('FormDataEvent') -@staticInterop -class FormDataEvent implements Event { +extension type FormDataEvent._(JSObject _) implements Event, JSObject { external factory FormDataEvent( String type, FormDataEventInit eventInitDict, ); -} -extension FormDataEventExtension on FormDataEvent { external FormData get formData; } - -@JS() -@staticInterop -@anonymous -class FormDataEventInit implements EventInit { +extension type FormDataEventInit._(JSObject _) implements EventInit, JSObject { external factory FormDataEventInit({required FormData formData}); -} -extension FormDataEventInitExtension on FormDataEventInit { external set formData(FormData value); external FormData get formData; } - -@JS('HTMLDetailsElement') -@staticInterop -class HTMLDetailsElement implements HTMLElement { +extension type HTMLDetailsElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLDetailsElement(); -} -extension HTMLDetailsElementExtension on HTMLDetailsElement { external set name(String value); external String get name; external set open(bool value); external bool get open; } - -@JS('HTMLDialogElement') -@staticInterop -class HTMLDialogElement implements HTMLElement { +extension type HTMLDialogElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLDialogElement(); -} -extension HTMLDialogElementExtension on HTMLDialogElement { external void show(); external void showModal(); external void close([String returnValue]); @@ -2203,16 +1818,11 @@ extension HTMLDialogElementExtension on HTMLDialogElement { external set returnValue(String value); external String get returnValue; } - -@JS('HTMLScriptElement') -@staticInterop -class HTMLScriptElement implements HTMLElement { +extension type HTMLScriptElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLScriptElement(); external static bool supports(String type); -} - -extension HTMLScriptElementExtension on HTMLScriptElement { external set src(String value); external String get src; external set type(String value); @@ -2243,50 +1853,31 @@ extension HTMLScriptElementExtension on HTMLScriptElement { external set attributionSrc(String value); external String get attributionSrc; } - -@JS('HTMLTemplateElement') -@staticInterop -class HTMLTemplateElement implements HTMLElement { +extension type HTMLTemplateElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLTemplateElement(); -} -extension HTMLTemplateElementExtension on HTMLTemplateElement { external DocumentFragment get content; } - -@JS('HTMLSlotElement') -@staticInterop -class HTMLSlotElement implements HTMLElement { +extension type HTMLSlotElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLSlotElement(); -} -extension HTMLSlotElementExtension on HTMLSlotElement { external JSArray assignedNodes([AssignedNodesOptions options]); external JSArray assignedElements([AssignedNodesOptions options]); external void assign(JSObject nodes); external set name(String value); external String get name; } - -@JS() -@staticInterop -@anonymous -class AssignedNodesOptions { +extension type AssignedNodesOptions._(JSObject _) implements JSObject { external factory AssignedNodesOptions({bool flatten}); -} -extension AssignedNodesOptionsExtension on AssignedNodesOptions { external set flatten(bool value); external bool get flatten; } - -@JS('HTMLCanvasElement') -@staticInterop -class HTMLCanvasElement implements HTMLElement { +extension type HTMLCanvasElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLCanvasElement(); -} -extension HTMLCanvasElementExtension on HTMLCanvasElement { external RenderingContext? getContext( String contextId, [ JSAny? options, @@ -2307,21 +1898,15 @@ extension HTMLCanvasElementExtension on HTMLCanvasElement { external set height(int value); external int get height; } - -@JS() -@staticInterop -@anonymous -class CanvasRenderingContext2DSettings { +extension type CanvasRenderingContext2DSettings._(JSObject _) + implements JSObject { external factory CanvasRenderingContext2DSettings({ bool alpha, bool desynchronized, PredefinedColorSpace colorSpace, bool willReadFrequently, }); -} -extension CanvasRenderingContext2DSettingsExtension - on CanvasRenderingContext2DSettings { external set alpha(bool value); external bool get alpha; external set desynchronized(bool value); @@ -2331,12 +1916,7 @@ extension CanvasRenderingContext2DSettingsExtension external set willReadFrequently(bool value); external bool get willReadFrequently; } - -@JS('CanvasRenderingContext2D') -@staticInterop -class CanvasRenderingContext2D {} - -extension CanvasRenderingContext2DExtension on CanvasRenderingContext2D { +extension type CanvasRenderingContext2D._(JSObject _) implements JSObject { external CanvasRenderingContext2DSettings getContextAttributes(); external void save(); external void restore(); @@ -2598,31 +2178,16 @@ extension CanvasRenderingContext2DExtension on CanvasRenderingContext2D { external set wordSpacing(String value); external String get wordSpacing; } - -@JS('CanvasGradient') -@staticInterop -class CanvasGradient {} - -extension CanvasGradientExtension on CanvasGradient { +extension type CanvasGradient._(JSObject _) implements JSObject { external void addColorStop( num offset, String color, ); } - -@JS('CanvasPattern') -@staticInterop -class CanvasPattern {} - -extension CanvasPatternExtension on CanvasPattern { +extension type CanvasPattern._(JSObject _) implements JSObject { external void setTransform([DOMMatrix2DInit transform]); } - -@JS('TextMetrics') -@staticInterop -class TextMetrics {} - -extension TextMetricsExtension on TextMetrics { +extension type TextMetrics._(JSObject _) implements JSObject { external num get width; external num get actualBoundingBoxLeft; external num get actualBoundingBoxRight; @@ -2636,44 +2201,28 @@ extension TextMetricsExtension on TextMetrics { external num get alphabeticBaseline; external num get ideographicBaseline; } - -@JS() -@staticInterop -@anonymous -class ImageDataSettings { +extension type ImageDataSettings._(JSObject _) implements JSObject { external factory ImageDataSettings({PredefinedColorSpace colorSpace}); -} -extension ImageDataSettingsExtension on ImageDataSettings { external set colorSpace(PredefinedColorSpace value); external PredefinedColorSpace get colorSpace; } - -@JS('ImageData') -@staticInterop -class ImageData { +extension type ImageData._(JSObject _) implements JSObject { external factory ImageData( JSAny dataOrSw, int shOrSw, [ JSAny settingsOrSh, ImageDataSettings settings, ]); -} -extension ImageDataExtension on ImageData { external int get width; external int get height; external JSUint8ClampedArray get data; external PredefinedColorSpace get colorSpace; } - -@JS('Path2D') -@staticInterop -class Path2D { +extension type Path2D._(JSObject _) implements JSObject { external factory Path2D([JSAny path]); -} -extension Path2DExtension on Path2D { external void addPath( Path2D path, [ DOMMatrix2DInit transform, @@ -2740,56 +2289,34 @@ extension Path2DExtension on Path2D { bool counterclockwise, ]); } - -@JS('ImageBitmapRenderingContext') -@staticInterop -class ImageBitmapRenderingContext {} - -extension ImageBitmapRenderingContextExtension on ImageBitmapRenderingContext { +extension type ImageBitmapRenderingContext._(JSObject _) implements JSObject { external void transferFromImageBitmap(ImageBitmap? bitmap); external JSObject get canvas; } - -@JS() -@staticInterop -@anonymous -class ImageBitmapRenderingContextSettings { +extension type ImageBitmapRenderingContextSettings._(JSObject _) + implements JSObject { external factory ImageBitmapRenderingContextSettings({bool alpha}); -} -extension ImageBitmapRenderingContextSettingsExtension - on ImageBitmapRenderingContextSettings { external set alpha(bool value); external bool get alpha; } - -@JS() -@staticInterop -@anonymous -class ImageEncodeOptions { +extension type ImageEncodeOptions._(JSObject _) implements JSObject { external factory ImageEncodeOptions({ String type, num quality, }); -} -extension ImageEncodeOptionsExtension on ImageEncodeOptions { external set type(String value); external String get type; external set quality(num value); external num get quality; } - -@JS('OffscreenCanvas') -@staticInterop -class OffscreenCanvas implements EventTarget { +extension type OffscreenCanvas._(JSObject _) implements EventTarget, JSObject { external factory OffscreenCanvas( int width, int height, ); -} -extension OffscreenCanvasExtension on OffscreenCanvas { external OffscreenRenderingContext? getContext( OffscreenRenderingContextId contextId, [ JSAny? options, @@ -2805,13 +2332,8 @@ extension OffscreenCanvasExtension on OffscreenCanvas { external set oncontextrestored(EventHandler value); external EventHandler get oncontextrestored; } - -@JS('OffscreenCanvasRenderingContext2D') -@staticInterop -class OffscreenCanvasRenderingContext2D {} - -extension OffscreenCanvasRenderingContext2DExtension - on OffscreenCanvasRenderingContext2D { +extension type OffscreenCanvasRenderingContext2D._(JSObject _) + implements JSObject { external void commit(); external void save(); external void restore(); @@ -3068,12 +2590,7 @@ extension OffscreenCanvasRenderingContext2DExtension external set wordSpacing(String value); external String get wordSpacing; } - -@JS('CustomElementRegistry') -@staticInterop -class CustomElementRegistry {} - -extension CustomElementRegistryExtension on CustomElementRegistry { +extension type CustomElementRegistry._(JSObject _) implements JSObject { external void define( String name, CustomElementConstructor constructor, [ @@ -3084,26 +2601,15 @@ extension CustomElementRegistryExtension on CustomElementRegistry { external JSPromise whenDefined(String name); external void upgrade(Node root); } - -@JS() -@staticInterop -@anonymous -class ElementDefinitionOptions { +extension type ElementDefinitionOptions._(JSObject _) implements JSObject { external factory ElementDefinitionOptions({String extends_}); -} -extension ElementDefinitionOptionsExtension on ElementDefinitionOptions { @JS('extends') external set extends_(String value); @JS('extends') external String get extends_; } - -@JS('ElementInternals') -@staticInterop -class ElementInternals {} - -extension ElementInternalsExtension on ElementInternals { +extension type ElementInternals._(JSObject _) implements JSObject { external void setFormValue( JSAny? value, [ JSAny? state, @@ -3221,11 +2727,7 @@ extension ElementInternalsExtension on ElementInternals { external set ariaValueText(String? value); external String? get ariaValueText; } - -@JS() -@staticInterop -@anonymous -class ValidityStateFlags { +extension type ValidityStateFlags._(JSObject _) implements JSObject { external factory ValidityStateFlags({ bool valueMissing, bool typeMismatch, @@ -3238,9 +2740,7 @@ class ValidityStateFlags { bool badInput, bool customError, }); -} -extension ValidityStateFlagsExtension on ValidityStateFlags { external set valueMissing(bool value); external bool get valueMissing; external set typeMismatch(bool value); @@ -3262,82 +2762,51 @@ extension ValidityStateFlagsExtension on ValidityStateFlags { external set customError(bool value); external bool get customError; } - -@JS('VisibilityStateEntry') -@staticInterop -class VisibilityStateEntry implements PerformanceEntry {} - -extension VisibilityStateEntryExtension on VisibilityStateEntry { +extension type VisibilityStateEntry._(JSObject _) + implements PerformanceEntry, JSObject { external String get name; external String get entryType; external DOMHighResTimeStamp get startTime; external int get duration; } - -@JS('UserActivation') -@staticInterop -class UserActivation {} - -extension UserActivationExtension on UserActivation { +extension type UserActivation._(JSObject _) implements JSObject { external bool get hasBeenActive; external bool get isActive; } - -@JS('ToggleEvent') -@staticInterop -class ToggleEvent implements Event { +extension type ToggleEvent._(JSObject _) implements Event, JSObject { external factory ToggleEvent( String type, [ ToggleEventInit eventInitDict, ]); -} -extension ToggleEventExtension on ToggleEvent { external String get oldState; external String get newState; } - -@JS() -@staticInterop -@anonymous -class ToggleEventInit implements EventInit { +extension type ToggleEventInit._(JSObject _) implements EventInit, JSObject { external factory ToggleEventInit({ String oldState, String newState, }); -} -extension ToggleEventInitExtension on ToggleEventInit { external set oldState(String value); external String get oldState; external set newState(String value); external String get newState; } - -@JS() -@staticInterop -@anonymous -class FocusOptions { +extension type FocusOptions._(JSObject _) implements JSObject { external factory FocusOptions({ bool preventScroll, bool focusVisible, }); -} -extension FocusOptionsExtension on FocusOptions { external set preventScroll(bool value); external bool get preventScroll; external set focusVisible(bool value); external bool get focusVisible; } - -@JS('DataTransfer') -@staticInterop -class DataTransfer { +extension type DataTransfer._(JSObject _) implements JSObject { external factory DataTransfer(); -} -extension DataTransferExtension on DataTransfer { external void setDragImage( Element image, int x, @@ -3357,12 +2826,7 @@ extension DataTransferExtension on DataTransfer { external JSArray get types; external FileList get files; } - -@JS('DataTransferItemList') -@staticInterop -class DataTransferItemList {} - -extension DataTransferItemListExtension on DataTransferItemList { +extension type DataTransferItemList._(JSObject _) implements JSObject { external DataTransferItem? add( JSAny data, [ String type, @@ -3371,12 +2835,7 @@ extension DataTransferItemListExtension on DataTransferItemList { external void clear(); external int get length; } - -@JS('DataTransferItem') -@staticInterop -class DataTransferItem {} - -extension DataTransferItemExtension on DataTransferItem { +extension type DataTransferItem._(JSObject _) implements JSObject { external FileSystemEntry? webkitGetAsEntry(); external JSPromise getAsFileSystemHandle(); external void getAsString(FunctionStringCallback? callback); @@ -3384,40 +2843,23 @@ extension DataTransferItemExtension on DataTransferItem { external String get kind; external String get type; } - -@JS('DragEvent') -@staticInterop -class DragEvent implements MouseEvent { +extension type DragEvent._(JSObject _) implements MouseEvent, JSObject { external factory DragEvent( String type, [ DragEventInit eventInitDict, ]); -} -extension DragEventExtension on DragEvent { external DataTransfer? get dataTransfer; } - -@JS() -@staticInterop -@anonymous -class DragEventInit implements MouseEventInit { +extension type DragEventInit._(JSObject _) implements MouseEventInit, JSObject { external factory DragEventInit({DataTransfer? dataTransfer}); -} -extension DragEventInitExtension on DragEventInit { external set dataTransfer(DataTransfer? value); external DataTransfer? get dataTransfer; } - @JS() external Window get window; - -@JS('Window') -@staticInterop -class Window implements EventTarget {} - -extension WindowExtension on Window { +extension type Window._(JSObject _) implements EventTarget, JSObject { external void navigate(SpatialNavigationDirection dir); external MediaQueryList matchMedia(String query); external void moveTo( @@ -3838,32 +3280,17 @@ extension WindowExtension on Window { external Storage get sessionStorage; external Storage get localStorage; } - -@JS() -@staticInterop -@anonymous -class WindowPostMessageOptions implements StructuredSerializeOptions { +extension type WindowPostMessageOptions._(JSObject _) + implements StructuredSerializeOptions, JSObject { external factory WindowPostMessageOptions({String targetOrigin}); -} -extension WindowPostMessageOptionsExtension on WindowPostMessageOptions { external set targetOrigin(String value); external String get targetOrigin; } - -@JS('BarProp') -@staticInterop -class BarProp {} - -extension BarPropExtension on BarProp { +extension type BarProp._(JSObject _) implements JSObject { external bool get visible; } - -@JS('Location') -@staticInterop -class Location {} - -extension LocationExtension on Location { +extension type Location._(JSObject _) implements JSObject { external void assign(String url); external void replace(String url); external void reload(); @@ -3886,12 +3313,7 @@ extension LocationExtension on Location { external String get hash; external DOMStringList get ancestorOrigins; } - -@JS('History') -@staticInterop -class History {} - -extension HistoryExtension on History { +extension type History._(JSObject _) implements JSObject { external void go([int delta]); external void back(); external void forward(); @@ -3910,12 +3332,7 @@ extension HistoryExtension on History { external ScrollRestoration get scrollRestoration; external JSAny? get state; } - -@JS('Navigation') -@staticInterop -class Navigation implements EventTarget {} - -extension NavigationExtension on Navigation { +extension type Navigation._(JSObject _) implements EventTarget, JSObject { external JSArray entries(); external void updateCurrentEntry(NavigationUpdateCurrentEntryOptions options); external NavigationResult navigate( @@ -3942,83 +3359,51 @@ extension NavigationExtension on Navigation { external set oncurrententrychange(EventHandler value); external EventHandler get oncurrententrychange; } - -@JS() -@staticInterop -@anonymous -class NavigationUpdateCurrentEntryOptions { +extension type NavigationUpdateCurrentEntryOptions._(JSObject _) + implements JSObject { external factory NavigationUpdateCurrentEntryOptions({required JSAny? state}); -} -extension NavigationUpdateCurrentEntryOptionsExtension - on NavigationUpdateCurrentEntryOptions { external set state(JSAny? value); external JSAny? get state; } - -@JS() -@staticInterop -@anonymous -class NavigationOptions { +extension type NavigationOptions._(JSObject _) implements JSObject { external factory NavigationOptions({JSAny? info}); -} -extension NavigationOptionsExtension on NavigationOptions { external set info(JSAny? value); external JSAny? get info; } - -@JS() -@staticInterop -@anonymous -class NavigationNavigateOptions implements NavigationOptions { +extension type NavigationNavigateOptions._(JSObject _) + implements NavigationOptions, JSObject { external factory NavigationNavigateOptions({ JSAny? state, NavigationHistoryBehavior history, }); -} -extension NavigationNavigateOptionsExtension on NavigationNavigateOptions { external set state(JSAny? value); external JSAny? get state; external set history(NavigationHistoryBehavior value); external NavigationHistoryBehavior get history; } - -@JS() -@staticInterop -@anonymous -class NavigationReloadOptions implements NavigationOptions { +extension type NavigationReloadOptions._(JSObject _) + implements NavigationOptions, JSObject { external factory NavigationReloadOptions({JSAny? state}); -} -extension NavigationReloadOptionsExtension on NavigationReloadOptions { external set state(JSAny? value); external JSAny? get state; } - -@JS() -@staticInterop -@anonymous -class NavigationResult { +extension type NavigationResult._(JSObject _) implements JSObject { external factory NavigationResult({ JSPromise committed, JSPromise finished, }); -} -extension NavigationResultExtension on NavigationResult { external set committed(JSPromise value); external JSPromise get committed; external set finished(JSPromise value); external JSPromise get finished; } - -@JS('NavigationHistoryEntry') -@staticInterop -class NavigationHistoryEntry implements EventTarget {} - -extension NavigationHistoryEntryExtension on NavigationHistoryEntry { +extension type NavigationHistoryEntry._(JSObject _) + implements EventTarget, JSObject { external JSAny? getState(); external String? get url; external String get key; @@ -4028,27 +3413,17 @@ extension NavigationHistoryEntryExtension on NavigationHistoryEntry { external set ondispose(EventHandler value); external EventHandler get ondispose; } - -@JS('NavigationTransition') -@staticInterop -class NavigationTransition {} - -extension NavigationTransitionExtension on NavigationTransition { +extension type NavigationTransition._(JSObject _) implements JSObject { external NavigationType get navigationType; external NavigationHistoryEntry get from; external JSPromise get finished; } - -@JS('NavigateEvent') -@staticInterop -class NavigateEvent implements Event { +extension type NavigateEvent._(JSObject _) implements Event, JSObject { external factory NavigateEvent( String type, NavigateEventInit eventInitDict, ); -} -extension NavigateEventExtension on NavigateEvent { external void intercept([NavigationInterceptOptions options]); external void scroll(); external NavigationType get navigationType; @@ -4062,11 +3437,7 @@ extension NavigateEventExtension on NavigateEvent { external JSAny? get info; external bool get hasUAVisualTransition; } - -@JS() -@staticInterop -@anonymous -class NavigateEventInit implements EventInit { +extension type NavigateEventInit._(JSObject _) implements EventInit, JSObject { external factory NavigateEventInit({ NavigationType navigationType, required NavigationDestination destination, @@ -4079,9 +3450,7 @@ class NavigateEventInit implements EventInit { JSAny? info, bool hasUAVisualTransition, }); -} -extension NavigateEventInitExtension on NavigateEventInit { external set navigationType(NavigationType value); external NavigationType get navigationType; external set destination(NavigationDestination value); @@ -4103,19 +3472,13 @@ extension NavigateEventInitExtension on NavigateEventInit { external set hasUAVisualTransition(bool value); external bool get hasUAVisualTransition; } - -@JS() -@staticInterop -@anonymous -class NavigationInterceptOptions { +extension type NavigationInterceptOptions._(JSObject _) implements JSObject { external factory NavigationInterceptOptions({ NavigationInterceptHandler handler, NavigationFocusReset focusReset, NavigationScrollBehavior scroll, }); -} -extension NavigationInterceptOptionsExtension on NavigationInterceptOptions { external set handler(NavigationInterceptHandler value); external NavigationInterceptHandler get handler; external set focusReset(NavigationFocusReset value); @@ -4123,12 +3486,7 @@ extension NavigationInterceptOptionsExtension on NavigationInterceptOptions { external set scroll(NavigationScrollBehavior value); external NavigationScrollBehavior get scroll; } - -@JS('NavigationDestination') -@staticInterop -class NavigationDestination {} - -extension NavigationDestinationExtension on NavigationDestination { +extension type NavigationDestination._(JSObject _) implements JSObject { external JSAny? getState(); external String get url; external String get key; @@ -4136,157 +3494,101 @@ extension NavigationDestinationExtension on NavigationDestination { external int get index; external bool get sameDocument; } - -@JS('NavigationCurrentEntryChangeEvent') -@staticInterop -class NavigationCurrentEntryChangeEvent implements Event { +extension type NavigationCurrentEntryChangeEvent._(JSObject _) + implements Event, JSObject { external factory NavigationCurrentEntryChangeEvent( String type, NavigationCurrentEntryChangeEventInit eventInitDict, ); -} -extension NavigationCurrentEntryChangeEventExtension - on NavigationCurrentEntryChangeEvent { external NavigationType? get navigationType; external NavigationHistoryEntry get from; } - -@JS() -@staticInterop -@anonymous -class NavigationCurrentEntryChangeEventInit implements EventInit { +extension type NavigationCurrentEntryChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory NavigationCurrentEntryChangeEventInit({ NavigationType? navigationType, required NavigationHistoryEntry from, }); -} -extension NavigationCurrentEntryChangeEventInitExtension - on NavigationCurrentEntryChangeEventInit { external set navigationType(NavigationType? value); external NavigationType? get navigationType; external set from(NavigationHistoryEntry value); external NavigationHistoryEntry get from; } - -@JS('PopStateEvent') -@staticInterop -class PopStateEvent implements Event { +extension type PopStateEvent._(JSObject _) implements Event, JSObject { external factory PopStateEvent( String type, [ PopStateEventInit eventInitDict, ]); -} -extension PopStateEventExtension on PopStateEvent { external JSAny? get state; external bool get hasUAVisualTransition; } - -@JS() -@staticInterop -@anonymous -class PopStateEventInit implements EventInit { +extension type PopStateEventInit._(JSObject _) implements EventInit, JSObject { external factory PopStateEventInit({ JSAny? state, bool hasUAVisualTransition, }); -} -extension PopStateEventInitExtension on PopStateEventInit { external set state(JSAny? value); external JSAny? get state; external set hasUAVisualTransition(bool value); external bool get hasUAVisualTransition; } - -@JS('HashChangeEvent') -@staticInterop -class HashChangeEvent implements Event { +extension type HashChangeEvent._(JSObject _) implements Event, JSObject { external factory HashChangeEvent( String type, [ HashChangeEventInit eventInitDict, ]); -} -extension HashChangeEventExtension on HashChangeEvent { external String get oldURL; external String get newURL; } - -@JS() -@staticInterop -@anonymous -class HashChangeEventInit implements EventInit { +extension type HashChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory HashChangeEventInit({ String oldURL, String newURL, }); -} -extension HashChangeEventInitExtension on HashChangeEventInit { external set oldURL(String value); external String get oldURL; external set newURL(String value); external String get newURL; } - -@JS('PageTransitionEvent') -@staticInterop -class PageTransitionEvent implements Event { +extension type PageTransitionEvent._(JSObject _) implements Event, JSObject { external factory PageTransitionEvent( String type, [ PageTransitionEventInit eventInitDict, ]); -} -extension PageTransitionEventExtension on PageTransitionEvent { external bool get persisted; } - -@JS() -@staticInterop -@anonymous -class PageTransitionEventInit implements EventInit { +extension type PageTransitionEventInit._(JSObject _) + implements EventInit, JSObject { external factory PageTransitionEventInit({bool persisted}); -} -extension PageTransitionEventInitExtension on PageTransitionEventInit { external set persisted(bool value); external bool get persisted; } - -@JS('BeforeUnloadEvent') -@staticInterop -class BeforeUnloadEvent implements Event {} - -extension BeforeUnloadEventExtension on BeforeUnloadEvent { +extension type BeforeUnloadEvent._(JSObject _) implements Event, JSObject { external set returnValue(String value); external String get returnValue; } - -@JS('ErrorEvent') -@staticInterop -class ErrorEvent implements Event { +extension type ErrorEvent._(JSObject _) implements Event, JSObject { external factory ErrorEvent( String type, [ ErrorEventInit eventInitDict, ]); -} -extension ErrorEventExtension on ErrorEvent { external String get message; external String get filename; external int get lineno; external int get colno; external JSAny? get error; } - -@JS() -@staticInterop -@anonymous -class ErrorEventInit implements EventInit { +extension type ErrorEventInit._(JSObject _) implements EventInit, JSObject { external factory ErrorEventInit({ String message, String filename, @@ -4294,9 +3596,7 @@ class ErrorEventInit implements EventInit { int colno, JSAny? error, }); -} -extension ErrorEventInitExtension on ErrorEventInit { external set message(String value); external String get message; external set filename(String value); @@ -4308,56 +3608,36 @@ extension ErrorEventInitExtension on ErrorEventInit { external set error(JSAny? value); external JSAny? get error; } - -@JS('PromiseRejectionEvent') -@staticInterop -class PromiseRejectionEvent implements Event { +extension type PromiseRejectionEvent._(JSObject _) implements Event, JSObject { external factory PromiseRejectionEvent( String type, PromiseRejectionEventInit eventInitDict, ); -} -extension PromiseRejectionEventExtension on PromiseRejectionEvent { external JSPromise get promise; external JSAny? get reason; } - -@JS() -@staticInterop -@anonymous -class PromiseRejectionEventInit implements EventInit { +extension type PromiseRejectionEventInit._(JSObject _) + implements EventInit, JSObject { external factory PromiseRejectionEventInit({ required JSPromise promise, JSAny? reason, }); -} -extension PromiseRejectionEventInitExtension on PromiseRejectionEventInit { external set promise(JSPromise value); external JSPromise get promise; external set reason(JSAny? value); external JSAny? get reason; } - -@JS('DOMParser') -@staticInterop -class DOMParser { +extension type DOMParser._(JSObject _) implements JSObject { external factory DOMParser(); -} -extension DOMParserExtension on DOMParser { external Document parseFromString( String string, DOMParserSupportedType type, ); } - -@JS('Navigator') -@staticInterop -class Navigator {} - -extension NavigatorExtension on Navigator { +extension type Navigator._(JSObject _) implements JSObject { external AutoplayPolicy getAutoplayPolicy(JSAny contextOrElementOrType); external JSPromise getBattery(); external bool sendBeacon( @@ -4452,33 +3732,18 @@ extension NavigatorExtension on Navigator { external GPU get gpu; external ML get ml; } - -@JS('PluginArray') -@staticInterop -class PluginArray {} - -extension PluginArrayExtension on PluginArray { +extension type PluginArray._(JSObject _) implements JSObject { external void refresh(); external Plugin? item(int index); external Plugin? namedItem(String name); external int get length; } - -@JS('MimeTypeArray') -@staticInterop -class MimeTypeArray {} - -extension MimeTypeArrayExtension on MimeTypeArray { +extension type MimeTypeArray._(JSObject _) implements JSObject { external MimeType? item(int index); external MimeType? namedItem(String name); external int get length; } - -@JS('Plugin') -@staticInterop -class Plugin {} - -extension PluginExtension on Plugin { +extension type Plugin._(JSObject _) implements JSObject { external MimeType? item(int index); external MimeType? namedItem(String name); external String get name; @@ -4486,32 +3751,18 @@ extension PluginExtension on Plugin { external String get filename; external int get length; } - -@JS('MimeType') -@staticInterop -class MimeType {} - -extension MimeTypeExtension on MimeType { +extension type MimeType._(JSObject _) implements JSObject { external String get type; external String get description; external String get suffixes; external Plugin get enabledPlugin; } - -@JS('ImageBitmap') -@staticInterop -class ImageBitmap {} - -extension ImageBitmapExtension on ImageBitmap { +extension type ImageBitmap._(JSObject _) implements JSObject { external void close(); external int get width; external int get height; } - -@JS() -@staticInterop -@anonymous -class ImageBitmapOptions { +extension type ImageBitmapOptions._(JSObject _) implements JSObject { external factory ImageBitmapOptions({ ImageOrientation imageOrientation, PremultiplyAlpha premultiplyAlpha, @@ -4520,9 +3771,7 @@ class ImageBitmapOptions { int resizeHeight, ResizeQuality resizeQuality, }); -} -extension ImageBitmapOptionsExtension on ImageBitmapOptions { external set imageOrientation(ImageOrientation value); external ImageOrientation get imageOrientation; external set premultiplyAlpha(PremultiplyAlpha value); @@ -4536,17 +3785,12 @@ extension ImageBitmapOptionsExtension on ImageBitmapOptions { external set resizeQuality(ResizeQuality value); external ResizeQuality get resizeQuality; } - -@JS('MessageEvent') -@staticInterop -class MessageEvent implements Event { +extension type MessageEvent._(JSObject _) implements Event, JSObject { external factory MessageEvent( String type, [ MessageEventInit eventInitDict, ]); -} -extension MessageEventExtension on MessageEvent { external void initMessageEvent( String type, [ bool bubbles, @@ -4563,11 +3807,7 @@ extension MessageEventExtension on MessageEvent { external MessageEventSource? get source; external JSArray get ports; } - -@JS() -@staticInterop -@anonymous -class MessageEventInit implements EventInit { +extension type MessageEventInit._(JSObject _) implements EventInit, JSObject { external factory MessageEventInit({ JSAny? data, String origin, @@ -4575,9 +3815,7 @@ class MessageEventInit implements EventInit { MessageEventSource? source, JSArray ports, }); -} -extension MessageEventInitExtension on MessageEventInit { external set data(JSAny? value); external JSAny? get data; external set origin(String value); @@ -4589,10 +3827,7 @@ extension MessageEventInitExtension on MessageEventInit { external set ports(JSArray value); external JSArray get ports; } - -@JS('EventSource') -@staticInterop -class EventSource implements EventTarget { +extension type EventSource._(JSObject _) implements EventTarget, JSObject { external factory EventSource( String url, [ EventSourceInit eventSourceInitDict, @@ -4601,9 +3836,6 @@ class EventSource implements EventTarget { external static int get CONNECTING; external static int get OPEN; external static int get CLOSED; -} - -extension EventSourceExtension on EventSource { external void close(); external String get url; external bool get withCredentials; @@ -4615,35 +3847,19 @@ extension EventSourceExtension on EventSource { external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS() -@staticInterop -@anonymous -class EventSourceInit { +extension type EventSourceInit._(JSObject _) implements JSObject { external factory EventSourceInit({bool withCredentials}); -} -extension EventSourceInitExtension on EventSourceInit { external set withCredentials(bool value); external bool get withCredentials; } - -@JS('MessageChannel') -@staticInterop -class MessageChannel { +extension type MessageChannel._(JSObject _) implements JSObject { external factory MessageChannel(); -} -extension MessageChannelExtension on MessageChannel { external MessagePort get port1; external MessagePort get port2; } - -@JS('MessagePort') -@staticInterop -class MessagePort implements EventTarget {} - -extension MessagePortExtension on MessagePort { +extension type MessagePort._(JSObject _) implements EventTarget, JSObject { external void postMessage( JSAny? message, [ JSObject optionsOrTransfer, @@ -4655,26 +3871,15 @@ extension MessagePortExtension on MessagePort { external set onmessageerror(EventHandler value); external EventHandler get onmessageerror; } - -@JS() -@staticInterop -@anonymous -class StructuredSerializeOptions { +extension type StructuredSerializeOptions._(JSObject _) implements JSObject { external factory StructuredSerializeOptions({JSArray transfer}); -} -extension StructuredSerializeOptionsExtension on StructuredSerializeOptions { external set transfer(JSArray value); external JSArray get transfer; } - -@JS('BroadcastChannel') -@staticInterop -class BroadcastChannel implements EventTarget { +extension type BroadcastChannel._(JSObject _) implements EventTarget, JSObject { external factory BroadcastChannel(String name); -} -extension BroadcastChannelExtension on BroadcastChannel { external void postMessage(JSAny? message); external void close(); external String get name; @@ -4683,12 +3888,8 @@ extension BroadcastChannelExtension on BroadcastChannel { external set onmessageerror(EventHandler value); external EventHandler get onmessageerror; } - -@JS('WorkerGlobalScope') -@staticInterop -class WorkerGlobalScope implements EventTarget {} - -extension WorkerGlobalScopeExtension on WorkerGlobalScope { +extension type WorkerGlobalScope._(JSObject _) + implements EventTarget, JSObject { external void importScripts(String urls); external JSPromise fetch( RequestInfo input, [ @@ -4748,12 +3949,8 @@ extension WorkerGlobalScopeExtension on WorkerGlobalScope { external CacheStorage get caches; external TrustedTypePolicyFactory get trustedTypes; } - -@JS('DedicatedWorkerGlobalScope') -@staticInterop -class DedicatedWorkerGlobalScope implements WorkerGlobalScope {} - -extension DedicatedWorkerGlobalScopeExtension on DedicatedWorkerGlobalScope { +extension type DedicatedWorkerGlobalScope._(JSObject _) + implements WorkerGlobalScope, JSObject { external void postMessage( JSAny? message, [ JSObject optionsOrTransfer, @@ -4769,28 +3966,19 @@ extension DedicatedWorkerGlobalScopeExtension on DedicatedWorkerGlobalScope { external set onrtctransform(EventHandler value); external EventHandler get onrtctransform; } - -@JS('SharedWorkerGlobalScope') -@staticInterop -class SharedWorkerGlobalScope implements WorkerGlobalScope {} - -extension SharedWorkerGlobalScopeExtension on SharedWorkerGlobalScope { +extension type SharedWorkerGlobalScope._(JSObject _) + implements WorkerGlobalScope, JSObject { external void close(); external String get name; external set onconnect(EventHandler value); external EventHandler get onconnect; } - -@JS('Worker') -@staticInterop -class Worker implements EventTarget { +extension type Worker._(JSObject _) implements EventTarget, JSObject { external factory Worker( String scriptURL, [ WorkerOptions options, ]); -} -extension WorkerExtension on Worker { external void terminate(); external void postMessage( JSAny? message, [ @@ -4803,19 +3991,13 @@ extension WorkerExtension on Worker { external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS() -@staticInterop -@anonymous -class WorkerOptions { +extension type WorkerOptions._(JSObject _) implements JSObject { external factory WorkerOptions({ WorkerType type, RequestCredentials credentials, String name, }); -} -extension WorkerOptionsExtension on WorkerOptions { external set type(WorkerType value); external WorkerType get type; external set credentials(RequestCredentials value); @@ -4823,27 +4005,17 @@ extension WorkerOptionsExtension on WorkerOptions { external set name(String value); external String get name; } - -@JS('SharedWorker') -@staticInterop -class SharedWorker implements EventTarget { +extension type SharedWorker._(JSObject _) implements EventTarget, JSObject { external factory SharedWorker( String scriptURL, [ JSAny options, ]); -} -extension SharedWorkerExtension on SharedWorker { external MessagePort get port; external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS('WorkerNavigator') -@staticInterop -class WorkerNavigator {} - -extension WorkerNavigatorExtension on WorkerNavigator { +extension type WorkerNavigator._(JSObject _) implements JSObject { external JSPromise setAppBadge([int contents]); external JSPromise clearAppBadge(); external bool taintEnabled(); @@ -4876,12 +4048,7 @@ extension WorkerNavigatorExtension on WorkerNavigator { external GPU get gpu; external ML get ml; } - -@JS('WorkerLocation') -@staticInterop -class WorkerLocation {} - -extension WorkerLocationExtension on WorkerLocation { +extension type WorkerLocation._(JSObject _) implements JSObject { external String get href; external String get origin; external String get protocol; @@ -4892,39 +4059,20 @@ extension WorkerLocationExtension on WorkerLocation { external String get search; external String get hash; } - -@JS('WorkletGlobalScope') -@staticInterop -class WorkletGlobalScope {} - -@JS('Worklet') -@staticInterop -class Worklet {} - -extension WorkletExtension on Worklet { +extension type WorkletGlobalScope._(JSObject _) implements JSObject {} +extension type Worklet._(JSObject _) implements JSObject { external JSPromise addModule( String moduleURL, [ WorkletOptions options, ]); } - -@JS() -@staticInterop -@anonymous -class WorkletOptions { +extension type WorkletOptions._(JSObject _) implements JSObject { external factory WorkletOptions({RequestCredentials credentials}); -} -extension WorkletOptionsExtension on WorkletOptions { external set credentials(RequestCredentials value); external RequestCredentials get credentials; } - -@JS('Storage') -@staticInterop -class Storage {} - -extension StorageExtension on Storage { +extension type Storage._(JSObject _) implements JSObject { external String? key(int index); external String? getItem(String key); external void setItem( @@ -4935,17 +4083,12 @@ extension StorageExtension on Storage { external void clear(); external int get length; } - -@JS('StorageEvent') -@staticInterop -class StorageEvent implements Event { +extension type StorageEvent._(JSObject _) implements Event, JSObject { external factory StorageEvent( String type, [ StorageEventInit eventInitDict, ]); -} -extension StorageEventExtension on StorageEvent { external void initStorageEvent( String type, [ bool bubbles, @@ -4962,11 +4105,7 @@ extension StorageEventExtension on StorageEvent { external String get url; external Storage? get storageArea; } - -@JS() -@staticInterop -@anonymous -class StorageEventInit implements EventInit { +extension type StorageEventInit._(JSObject _) implements EventInit, JSObject { external factory StorageEventInit({ String? key, String? oldValue, @@ -4974,9 +4113,7 @@ class StorageEventInit implements EventInit { String url, Storage? storageArea, }); -} -extension StorageEventInitExtension on StorageEventInit { external set key(String? value); external String? get key; external set oldValue(String? value); @@ -4988,14 +4125,10 @@ extension StorageEventInitExtension on StorageEventInit { external set storageArea(Storage? value); external Storage? get storageArea; } - -@JS('HTMLMarqueeElement') -@staticInterop -class HTMLMarqueeElement implements HTMLElement { +extension type HTMLMarqueeElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLMarqueeElement(); -} -extension HTMLMarqueeElementExtension on HTMLMarqueeElement { external void start(); external void stop(); external set behavior(String value); @@ -5021,14 +4154,10 @@ extension HTMLMarqueeElementExtension on HTMLMarqueeElement { external set width(String value); external String get width; } - -@JS('HTMLFrameSetElement') -@staticInterop -class HTMLFrameSetElement implements HTMLElement { +extension type HTMLFrameSetElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLFrameSetElement(); -} -extension HTMLFrameSetElementExtension on HTMLFrameSetElement { external set cols(String value); external String get cols; external set rows(String value); @@ -5072,14 +4201,9 @@ extension HTMLFrameSetElementExtension on HTMLFrameSetElement { external set onportalactivate(EventHandler value); external EventHandler get onportalactivate; } - -@JS('HTMLFrameElement') -@staticInterop -class HTMLFrameElement implements HTMLElement { +extension type HTMLFrameElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLFrameElement(); -} -extension HTMLFrameElementExtension on HTMLFrameElement { external set name(String value); external String get name; external set scrolling(String value); @@ -5099,25 +4223,16 @@ extension HTMLFrameElementExtension on HTMLFrameElement { external set marginWidth(String value); external String get marginWidth; } - -@JS('HTMLDirectoryElement') -@staticInterop -class HTMLDirectoryElement implements HTMLElement { +extension type HTMLDirectoryElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLDirectoryElement(); -} -extension HTMLDirectoryElementExtension on HTMLDirectoryElement { external set compact(bool value); external bool get compact; } - -@JS('HTMLFontElement') -@staticInterop -class HTMLFontElement implements HTMLElement { +extension type HTMLFontElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLFontElement(); -} -extension HTMLFontElementExtension on HTMLFontElement { external set color(String value); external String get color; external set face(String value); @@ -5125,14 +4240,9 @@ extension HTMLFontElementExtension on HTMLFontElement { external set size(String value); external String get size; } - -@JS('HTMLParamElement') -@staticInterop -class HTMLParamElement implements HTMLElement { +extension type HTMLParamElement._(JSObject _) implements HTMLElement, JSObject { external factory HTMLParamElement(); -} -extension HTMLParamElementExtension on HTMLParamElement { external set name(String value); external String get name; external set value(String value); @@ -5142,12 +4252,7 @@ extension HTMLParamElementExtension on HTMLParamElement { external set valueType(String value); external String get valueType; } - -@JS('External') -@staticInterop -class External {} - -extension ExternalExtension on External { +extension type External._(JSObject _) implements JSObject { external void AddSearchProvider(); external void IsSearchProviderInstalled(); } diff --git a/lib/src/dom/idle_detection.dart b/lib/src/dom/idle_detection.dart index 55cbab38..5b0492e1 100644 --- a/lib/src/dom/idle_detection.dart +++ b/lib/src/dom/idle_detection.dart @@ -11,33 +11,21 @@ import 'html.dart'; typedef UserIdleState = String; typedef ScreenIdleState = String; - -@JS() -@staticInterop -@anonymous -class IdleOptions { +extension type IdleOptions._(JSObject _) implements JSObject { external factory IdleOptions({ int threshold, AbortSignal signal, }); -} -extension IdleOptionsExtension on IdleOptions { external set threshold(int value); external int get threshold; external set signal(AbortSignal value); external AbortSignal get signal; } - -@JS('IdleDetector') -@staticInterop -class IdleDetector implements EventTarget { +extension type IdleDetector._(JSObject _) implements EventTarget, JSObject { external factory IdleDetector(); external static JSPromise requestPermission(); -} - -extension IdleDetectorExtension on IdleDetector { external JSPromise start([IdleOptions options]); external UserIdleState? get userState; external ScreenIdleState? get screenState; diff --git a/lib/src/dom/image_capture.dart b/lib/src/dom/image_capture.dart index 4648904f..13f0600f 100644 --- a/lib/src/dom/image_capture.dart +++ b/lib/src/dom/image_capture.dart @@ -12,34 +12,23 @@ typedef ConstrainPoint2D = JSObject; typedef RedEyeReduction = String; typedef FillLightMode = String; typedef MeteringMode = String; - -@JS('ImageCapture') -@staticInterop -class ImageCapture { +extension type ImageCapture._(JSObject _) implements JSObject { external factory ImageCapture(MediaStreamTrack videoTrack); -} -extension ImageCaptureExtension on ImageCapture { external JSPromise takePhoto([PhotoSettings photoSettings]); external JSPromise getPhotoCapabilities(); external JSPromise getPhotoSettings(); external JSPromise grabFrame(); external MediaStreamTrack get track; } - -@JS() -@staticInterop -@anonymous -class PhotoCapabilities { +extension type PhotoCapabilities._(JSObject _) implements JSObject { external factory PhotoCapabilities({ RedEyeReduction redEyeReduction, MediaSettingsRange imageHeight, MediaSettingsRange imageWidth, JSArray fillLightMode, }); -} -extension PhotoCapabilitiesExtension on PhotoCapabilities { external set redEyeReduction(RedEyeReduction value); external RedEyeReduction get redEyeReduction; external set imageHeight(MediaSettingsRange value); @@ -49,20 +38,14 @@ extension PhotoCapabilitiesExtension on PhotoCapabilities { external set fillLightMode(JSArray value); external JSArray get fillLightMode; } - -@JS() -@staticInterop -@anonymous -class PhotoSettings { +extension type PhotoSettings._(JSObject _) implements JSObject { external factory PhotoSettings({ FillLightMode fillLightMode, num imageHeight, num imageWidth, bool redEyeReduction, }); -} -extension PhotoSettingsExtension on PhotoSettings { external set fillLightMode(FillLightMode value); external FillLightMode get fillLightMode; external set imageHeight(num value); @@ -72,19 +55,13 @@ extension PhotoSettingsExtension on PhotoSettings { external set redEyeReduction(bool value); external bool get redEyeReduction; } - -@JS() -@staticInterop -@anonymous -class MediaSettingsRange { +extension type MediaSettingsRange._(JSObject _) implements JSObject { external factory MediaSettingsRange({ num max, num min, num step, }); -} -extension MediaSettingsRangeExtension on MediaSettingsRange { external set max(num value); external num get max; external set min(num value); @@ -92,35 +69,23 @@ extension MediaSettingsRangeExtension on MediaSettingsRange { external set step(num value); external num get step; } - -@JS() -@staticInterop -@anonymous -class ConstrainPoint2DParameters { +extension type ConstrainPoint2DParameters._(JSObject _) implements JSObject { external factory ConstrainPoint2DParameters({ JSArray exact, JSArray ideal, }); -} -extension ConstrainPoint2DParametersExtension on ConstrainPoint2DParameters { external set exact(JSArray value); external JSArray get exact; external set ideal(JSArray value); external JSArray get ideal; } - -@JS() -@staticInterop -@anonymous -class Point2D { +extension type Point2D._(JSObject _) implements JSObject { external factory Point2D({ num x, num y, }); -} -extension Point2DExtension on Point2D { external set x(num value); external num get x; external set y(num value); diff --git a/lib/src/dom/image_resource.dart b/lib/src/dom/image_resource.dart index 9253a5b9..1391dea1 100644 --- a/lib/src/dom/image_resource.dart +++ b/lib/src/dom/image_resource.dart @@ -6,19 +6,14 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class ImageResource { +extension type ImageResource._(JSObject _) implements JSObject { external factory ImageResource({ required String src, String sizes, String type, String label, }); -} -extension ImageResourceExtension on ImageResource { external set src(String value); external String get src; external set sizes(String value); diff --git a/lib/src/dom/indexeddb.dart b/lib/src/dom/indexeddb.dart index 19c04536..5dcd1eda 100644 --- a/lib/src/dom/indexeddb.dart +++ b/lib/src/dom/indexeddb.dart @@ -14,12 +14,7 @@ typedef IDBRequestReadyState = String; typedef IDBTransactionDurability = String; typedef IDBCursorDirection = String; typedef IDBTransactionMode = String; - -@JS('IDBRequest') -@staticInterop -class IDBRequest implements EventTarget {} - -extension IDBRequestExtension on IDBRequest { +extension type IDBRequest._(JSObject _) implements EventTarget, JSObject { external JSAny? get result; external DOMException? get error; external JSObject? get source; @@ -30,54 +25,34 @@ extension IDBRequestExtension on IDBRequest { external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS('IDBOpenDBRequest') -@staticInterop -class IDBOpenDBRequest implements IDBRequest {} - -extension IDBOpenDBRequestExtension on IDBOpenDBRequest { +extension type IDBOpenDBRequest._(JSObject _) implements IDBRequest, JSObject { external set onblocked(EventHandler value); external EventHandler get onblocked; external set onupgradeneeded(EventHandler value); external EventHandler get onupgradeneeded; } - -@JS('IDBVersionChangeEvent') -@staticInterop -class IDBVersionChangeEvent implements Event { +extension type IDBVersionChangeEvent._(JSObject _) implements Event, JSObject { external factory IDBVersionChangeEvent( String type, [ IDBVersionChangeEventInit eventInitDict, ]); -} -extension IDBVersionChangeEventExtension on IDBVersionChangeEvent { external int get oldVersion; external int? get newVersion; } - -@JS() -@staticInterop -@anonymous -class IDBVersionChangeEventInit implements EventInit { +extension type IDBVersionChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory IDBVersionChangeEventInit({ int oldVersion, int? newVersion, }); -} -extension IDBVersionChangeEventInitExtension on IDBVersionChangeEventInit { external set oldVersion(int value); external int get oldVersion; external set newVersion(int? value); external int? get newVersion; } - -@JS('IDBFactory') -@staticInterop -class IDBFactory {} - -extension IDBFactoryExtension on IDBFactory { +extension type IDBFactory._(JSObject _) implements JSObject { external IDBOpenDBRequest open( String name, [ int version, @@ -89,29 +64,18 @@ extension IDBFactoryExtension on IDBFactory { JSAny? second, ); } - -@JS() -@staticInterop -@anonymous -class IDBDatabaseInfo { +extension type IDBDatabaseInfo._(JSObject _) implements JSObject { external factory IDBDatabaseInfo({ String name, int version, }); -} -extension IDBDatabaseInfoExtension on IDBDatabaseInfo { external set name(String value); external String get name; external set version(int value); external int get version; } - -@JS('IDBDatabase') -@staticInterop -class IDBDatabase implements EventTarget {} - -extension IDBDatabaseExtension on IDBDatabase { +extension type IDBDatabase._(JSObject _) implements EventTarget, JSObject { external IDBTransaction transaction( JSAny storeNames, [ IDBTransactionMode mode, @@ -135,41 +99,24 @@ extension IDBDatabaseExtension on IDBDatabase { external set onversionchange(EventHandler value); external EventHandler get onversionchange; } - -@JS() -@staticInterop -@anonymous -class IDBTransactionOptions { +extension type IDBTransactionOptions._(JSObject _) implements JSObject { external factory IDBTransactionOptions({IDBTransactionDurability durability}); -} -extension IDBTransactionOptionsExtension on IDBTransactionOptions { external set durability(IDBTransactionDurability value); external IDBTransactionDurability get durability; } - -@JS() -@staticInterop -@anonymous -class IDBObjectStoreParameters { +extension type IDBObjectStoreParameters._(JSObject _) implements JSObject { external factory IDBObjectStoreParameters({ JSAny? keyPath, bool autoIncrement, }); -} -extension IDBObjectStoreParametersExtension on IDBObjectStoreParameters { external set keyPath(JSAny? value); external JSAny? get keyPath; external set autoIncrement(bool value); external bool get autoIncrement; } - -@JS('IDBObjectStore') -@staticInterop -class IDBObjectStore {} - -extension IDBObjectStoreExtension on IDBObjectStore { +extension type IDBObjectStore._(JSObject _) implements JSObject { external IDBRequest put( JSAny? value, [ JSAny? key, @@ -213,29 +160,18 @@ extension IDBObjectStoreExtension on IDBObjectStore { external IDBTransaction get transaction; external bool get autoIncrement; } - -@JS() -@staticInterop -@anonymous -class IDBIndexParameters { +extension type IDBIndexParameters._(JSObject _) implements JSObject { external factory IDBIndexParameters({ bool unique, bool multiEntry, }); -} -extension IDBIndexParametersExtension on IDBIndexParameters { external set unique(bool value); external bool get unique; external set multiEntry(bool value); external bool get multiEntry; } - -@JS('IDBIndex') -@staticInterop -class IDBIndex {} - -extension IDBIndexExtension on IDBIndex { +extension type IDBIndex._(JSObject _) implements JSObject { external IDBRequest get(JSAny? query); external IDBRequest getKey(JSAny? query); external IDBRequest getAll([ @@ -262,10 +198,7 @@ extension IDBIndexExtension on IDBIndex { external bool get multiEntry; external bool get unique; } - -@JS('IDBKeyRange') -@staticInterop -class IDBKeyRange { +extension type IDBKeyRange._(JSObject _) implements JSObject { external static IDBKeyRange only(JSAny? value); external static IDBKeyRange lowerBound( JSAny? lower, [ @@ -281,21 +214,13 @@ class IDBKeyRange { bool lowerOpen, bool upperOpen, ]); -} - -extension IDBKeyRangeExtension on IDBKeyRange { external bool includes(JSAny? key); external JSAny? get lower; external JSAny? get upper; external bool get lowerOpen; external bool get upperOpen; } - -@JS('IDBCursor') -@staticInterop -class IDBCursor {} - -extension IDBCursorExtension on IDBCursor { +extension type IDBCursor._(JSObject _) implements JSObject { external void advance(int count); @JS('continue') external void continue_([JSAny? key]); @@ -311,20 +236,10 @@ extension IDBCursorExtension on IDBCursor { external JSAny? get primaryKey; external IDBRequest get request; } - -@JS('IDBCursorWithValue') -@staticInterop -class IDBCursorWithValue implements IDBCursor {} - -extension IDBCursorWithValueExtension on IDBCursorWithValue { +extension type IDBCursorWithValue._(JSObject _) implements IDBCursor, JSObject { external JSAny? get value; } - -@JS('IDBTransaction') -@staticInterop -class IDBTransaction implements EventTarget {} - -extension IDBTransactionExtension on IDBTransaction { +extension type IDBTransaction._(JSObject _) implements EventTarget, JSObject { external IDBObjectStore objectStore(String name); external void commit(); external void abort(); diff --git a/lib/src/dom/ink_enhancement.dart b/lib/src/dom/ink_enhancement.dart index 11d00ab5..178a0bd5 100644 --- a/lib/src/dom/ink_enhancement.dart +++ b/lib/src/dom/ink_enhancement.dart @@ -9,31 +9,16 @@ import 'dart:js_interop'; import 'dom.dart'; import 'pointerevents.dart'; -@JS('Ink') -@staticInterop -class Ink {} - -extension InkExtension on Ink { +extension type Ink._(JSObject _) implements JSObject { external JSPromise requestPresenter([InkPresenterParam param]); } - -@JS() -@staticInterop -@anonymous -class InkPresenterParam { +extension type InkPresenterParam._(JSObject _) implements JSObject { external factory InkPresenterParam({Element? presentationArea}); -} -extension InkPresenterParamExtension on InkPresenterParam { external set presentationArea(Element? value); external Element? get presentationArea; } - -@JS('InkPresenter') -@staticInterop -class InkPresenter {} - -extension InkPresenterExtension on InkPresenter { +extension type InkPresenter._(JSObject _) implements JSObject { external void updateInkTrailStartPoint( PointerEvent event, InkTrailStyle style, @@ -41,18 +26,12 @@ extension InkPresenterExtension on InkPresenter { external Element? get presentationArea; external int get expectedImprovement; } - -@JS() -@staticInterop -@anonymous -class InkTrailStyle { +extension type InkTrailStyle._(JSObject _) implements JSObject { external factory InkTrailStyle({ required String color, required num diameter, }); -} -extension InkTrailStyleExtension on InkTrailStyle { external set color(String value); external String get color; external set diameter(num value); diff --git a/lib/src/dom/input_device_capabilities.dart b/lib/src/dom/input_device_capabilities.dart index 976473b5..9a387389 100644 --- a/lib/src/dom/input_device_capabilities.dart +++ b/lib/src/dom/input_device_capabilities.dart @@ -6,29 +6,19 @@ import 'dart:js_interop'; -@JS('InputDeviceCapabilities') -@staticInterop -class InputDeviceCapabilities { +extension type InputDeviceCapabilities._(JSObject _) implements JSObject { external factory InputDeviceCapabilities( [InputDeviceCapabilitiesInit deviceInitDict]); -} -extension InputDeviceCapabilitiesExtension on InputDeviceCapabilities { external bool get firesTouchEvents; external bool get pointerMovementScrolls; } - -@JS() -@staticInterop -@anonymous -class InputDeviceCapabilitiesInit { +extension type InputDeviceCapabilitiesInit._(JSObject _) implements JSObject { external factory InputDeviceCapabilitiesInit({ bool firesTouchEvents, bool pointerMovementScrolls, }); -} -extension InputDeviceCapabilitiesInitExtension on InputDeviceCapabilitiesInit { external set firesTouchEvents(bool value); external bool get firesTouchEvents; external set pointerMovementScrolls(bool value); diff --git a/lib/src/dom/intersection_observer.dart b/lib/src/dom/intersection_observer.dart index ab2fc413..c600bac3 100644 --- a/lib/src/dom/intersection_observer.dart +++ b/lib/src/dom/intersection_observer.dart @@ -11,17 +11,12 @@ import 'geometry.dart'; import 'hr_time.dart'; typedef IntersectionObserverCallback = JSFunction; - -@JS('IntersectionObserver') -@staticInterop -class IntersectionObserver { +extension type IntersectionObserver._(JSObject _) implements JSObject { external factory IntersectionObserver( IntersectionObserverCallback callback, [ IntersectionObserverInit options, ]); -} -extension IntersectionObserverExtension on IntersectionObserver { external void observe(Element target); external void unobserve(Element target); external void disconnect(); @@ -31,15 +26,10 @@ extension IntersectionObserverExtension on IntersectionObserver { external String get scrollMargin; external JSArray get thresholds; } - -@JS('IntersectionObserverEntry') -@staticInterop -class IntersectionObserverEntry { +extension type IntersectionObserverEntry._(JSObject _) implements JSObject { external factory IntersectionObserverEntry( IntersectionObserverEntryInit intersectionObserverEntryInit); -} -extension IntersectionObserverEntryExtension on IntersectionObserverEntry { external DOMHighResTimeStamp get time; external DOMRectReadOnly? get rootBounds; external DOMRectReadOnly get boundingClientRect; @@ -48,11 +38,7 @@ extension IntersectionObserverEntryExtension on IntersectionObserverEntry { external num get intersectionRatio; external Element get target; } - -@JS() -@staticInterop -@anonymous -class IntersectionObserverEntryInit { +extension type IntersectionObserverEntryInit._(JSObject _) implements JSObject { external factory IntersectionObserverEntryInit({ required DOMHighResTimeStamp time, required DOMRectInit? rootBounds, @@ -62,10 +48,7 @@ class IntersectionObserverEntryInit { required num intersectionRatio, required Element target, }); -} -extension IntersectionObserverEntryInitExtension - on IntersectionObserverEntryInit { external set time(DOMHighResTimeStamp value); external DOMHighResTimeStamp get time; external set rootBounds(DOMRectInit? value); @@ -81,20 +64,14 @@ extension IntersectionObserverEntryInitExtension external set target(Element value); external Element get target; } - -@JS() -@staticInterop -@anonymous -class IntersectionObserverInit { +extension type IntersectionObserverInit._(JSObject _) implements JSObject { external factory IntersectionObserverInit({ JSObject? root, String rootMargin, String scrollMargin, JSAny threshold, }); -} -extension IntersectionObserverInitExtension on IntersectionObserverInit { external set root(JSObject? value); external JSObject? get root; external set rootMargin(String value); diff --git a/lib/src/dom/intervention_reporting.dart b/lib/src/dom/intervention_reporting.dart index d737c746..072589dd 100644 --- a/lib/src/dom/intervention_reporting.dart +++ b/lib/src/dom/intervention_reporting.dart @@ -8,11 +8,8 @@ import 'dart:js_interop'; import 'reporting.dart'; -@JS('InterventionReportBody') -@staticInterop -class InterventionReportBody implements ReportBody {} - -extension InterventionReportBodyExtension on InterventionReportBody { +extension type InterventionReportBody._(JSObject _) + implements ReportBody, JSObject { external JSObject toJSON(); external String get id; external String get message; diff --git a/lib/src/dom/is_input_pending.dart b/lib/src/dom/is_input_pending.dart index 0c2fe18e..e9ae7fb1 100644 --- a/lib/src/dom/is_input_pending.dart +++ b/lib/src/dom/is_input_pending.dart @@ -6,22 +6,12 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class IsInputPendingOptions { +extension type IsInputPendingOptions._(JSObject _) implements JSObject { external factory IsInputPendingOptions({bool includeContinuous}); -} -extension IsInputPendingOptionsExtension on IsInputPendingOptions { external set includeContinuous(bool value); external bool get includeContinuous; } - -@JS('Scheduling') -@staticInterop -class Scheduling {} - -extension SchedulingExtension on Scheduling { +extension type Scheduling._(JSObject _) implements JSObject { external bool isInputPending([IsInputPendingOptions isInputPendingOptions]); } diff --git a/lib/src/dom/js_self_profiling.dart b/lib/src/dom/js_self_profiling.dart index 7c3b8161..60a12eeb 100644 --- a/lib/src/dom/js_self_profiling.dart +++ b/lib/src/dom/js_self_profiling.dart @@ -10,32 +10,21 @@ import 'dom.dart'; import 'hr_time.dart'; typedef ProfilerResource = String; - -@JS('Profiler') -@staticInterop -class Profiler implements EventTarget { +extension type Profiler._(JSObject _) implements EventTarget, JSObject { external factory Profiler(ProfilerInitOptions options); -} -extension ProfilerExtension on Profiler { external JSPromise stop(); external DOMHighResTimeStamp get sampleInterval; external bool get stopped; } - -@JS() -@staticInterop -@anonymous -class ProfilerTrace { +extension type ProfilerTrace._(JSObject _) implements JSObject { external factory ProfilerTrace({ required JSArray resources, required JSArray frames, required JSArray stacks, required JSArray samples, }); -} -extension ProfilerTraceExtension on ProfilerTrace { external set resources(JSArray value); external JSArray get resources; external set frames(JSArray value); @@ -45,54 +34,36 @@ extension ProfilerTraceExtension on ProfilerTrace { external set samples(JSArray value); external JSArray get samples; } - -@JS() -@staticInterop -@anonymous -class ProfilerSample { +extension type ProfilerSample._(JSObject _) implements JSObject { external factory ProfilerSample({ required DOMHighResTimeStamp timestamp, int stackId, }); -} -extension ProfilerSampleExtension on ProfilerSample { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set stackId(int value); external int get stackId; } - -@JS() -@staticInterop -@anonymous -class ProfilerStack { +extension type ProfilerStack._(JSObject _) implements JSObject { external factory ProfilerStack({ int parentId, required int frameId, }); -} -extension ProfilerStackExtension on ProfilerStack { external set parentId(int value); external int get parentId; external set frameId(int value); external int get frameId; } - -@JS() -@staticInterop -@anonymous -class ProfilerFrame { +extension type ProfilerFrame._(JSObject _) implements JSObject { external factory ProfilerFrame({ required String name, int resourceId, int line, int column, }); -} -extension ProfilerFrameExtension on ProfilerFrame { external set name(String value); external String get name; external set resourceId(int value); @@ -102,18 +73,12 @@ extension ProfilerFrameExtension on ProfilerFrame { external set column(int value); external int get column; } - -@JS() -@staticInterop -@anonymous -class ProfilerInitOptions { +extension type ProfilerInitOptions._(JSObject _) implements JSObject { external factory ProfilerInitOptions({ required DOMHighResTimeStamp sampleInterval, required int maxBufferSize, }); -} -extension ProfilerInitOptionsExtension on ProfilerInitOptions { external set sampleInterval(DOMHighResTimeStamp value); external DOMHighResTimeStamp get sampleInterval; external set maxBufferSize(int value); diff --git a/lib/src/dom/keyboard_lock.dart b/lib/src/dom/keyboard_lock.dart index 97567428..ca7f308f 100644 --- a/lib/src/dom/keyboard_lock.dart +++ b/lib/src/dom/keyboard_lock.dart @@ -9,11 +9,7 @@ import 'dart:js_interop'; import 'dom.dart'; import 'html.dart'; -@JS('Keyboard') -@staticInterop -class Keyboard implements EventTarget {} - -extension KeyboardExtension on Keyboard { +extension type Keyboard._(JSObject _) implements EventTarget, JSObject { external JSPromise lock([JSArray keyCodes]); external void unlock(); external JSPromise getLayoutMap(); diff --git a/lib/src/dom/keyboard_map.dart b/lib/src/dom/keyboard_map.dart index 8e792752..11c717e6 100644 --- a/lib/src/dom/keyboard_map.dart +++ b/lib/src/dom/keyboard_map.dart @@ -6,8 +6,4 @@ import 'dart:js_interop'; -@JS('KeyboardLayoutMap') -@staticInterop -class KeyboardLayoutMap {} - -extension KeyboardLayoutMapExtension on KeyboardLayoutMap {} +extension type KeyboardLayoutMap._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/khr_parallel_shader_compile.dart b/lib/src/dom/khr_parallel_shader_compile.dart index 109ba448..4fbf74c0 100644 --- a/lib/src/dom/khr_parallel_shader_compile.dart +++ b/lib/src/dom/khr_parallel_shader_compile.dart @@ -8,8 +8,6 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('KHR_parallel_shader_compile') -@staticInterop -class KHR_parallel_shader_compile { +extension type KHR_parallel_shader_compile._(JSObject _) implements JSObject { external static GLenum get COMPLETION_STATUS_KHR; } diff --git a/lib/src/dom/largest_contentful_paint.dart b/lib/src/dom/largest_contentful_paint.dart index 5ba1c40a..b091810a 100644 --- a/lib/src/dom/largest_contentful_paint.dart +++ b/lib/src/dom/largest_contentful_paint.dart @@ -10,11 +10,8 @@ import 'dom.dart'; import 'hr_time.dart'; import 'performance_timeline.dart'; -@JS('LargestContentfulPaint') -@staticInterop -class LargestContentfulPaint implements PerformanceEntry {} - -extension LargestContentfulPaintExtension on LargestContentfulPaint { +extension type LargestContentfulPaint._(JSObject _) + implements PerformanceEntry, JSObject { external JSObject toJSON(); external DOMHighResTimeStamp get renderTime; external DOMHighResTimeStamp get loadTime; diff --git a/lib/src/dom/layout_instability.dart b/lib/src/dom/layout_instability.dart index c31a65e3..0ed85917 100644 --- a/lib/src/dom/layout_instability.dart +++ b/lib/src/dom/layout_instability.dart @@ -11,23 +11,14 @@ import 'geometry.dart'; import 'hr_time.dart'; import 'performance_timeline.dart'; -@JS('LayoutShift') -@staticInterop -class LayoutShift implements PerformanceEntry {} - -extension LayoutShiftExtension on LayoutShift { +extension type LayoutShift._(JSObject _) implements PerformanceEntry, JSObject { external JSObject toJSON(); external num get value; external bool get hadRecentInput; external DOMHighResTimeStamp get lastInputTime; external JSArray get sources; } - -@JS('LayoutShiftAttribution') -@staticInterop -class LayoutShiftAttribution {} - -extension LayoutShiftAttributionExtension on LayoutShiftAttribution { +extension type LayoutShiftAttribution._(JSObject _) implements JSObject { external Node? get node; external DOMRectReadOnly get previousRect; external DOMRectReadOnly get currentRect; diff --git a/lib/src/dom/local_font_access.dart b/lib/src/dom/local_font_access.dart index 3d9a31f7..dee22af2 100644 --- a/lib/src/dom/local_font_access.dart +++ b/lib/src/dom/local_font_access.dart @@ -6,23 +6,13 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class QueryOptions { +extension type QueryOptions._(JSObject _) implements JSObject { external factory QueryOptions({JSArray postscriptNames}); -} -extension QueryOptionsExtension on QueryOptions { external set postscriptNames(JSArray value); external JSArray get postscriptNames; } - -@JS('FontData') -@staticInterop -class FontData {} - -extension FontDataExtension on FontData { +extension type FontData._(JSObject _) implements JSObject { external JSPromise blob(); external String get postscriptName; external String get fullName; diff --git a/lib/src/dom/longtasks.dart b/lib/src/dom/longtasks.dart index f87369e2..c46e3ad9 100644 --- a/lib/src/dom/longtasks.dart +++ b/lib/src/dom/longtasks.dart @@ -8,20 +8,13 @@ import 'dart:js_interop'; import 'performance_timeline.dart'; -@JS('PerformanceLongTaskTiming') -@staticInterop -class PerformanceLongTaskTiming implements PerformanceEntry {} - -extension PerformanceLongTaskTimingExtension on PerformanceLongTaskTiming { +extension type PerformanceLongTaskTiming._(JSObject _) + implements PerformanceEntry, JSObject { external JSObject toJSON(); external JSArray get attribution; } - -@JS('TaskAttributionTiming') -@staticInterop -class TaskAttributionTiming implements PerformanceEntry {} - -extension TaskAttributionTimingExtension on TaskAttributionTiming { +extension type TaskAttributionTiming._(JSObject _) + implements PerformanceEntry, JSObject { external JSObject toJSON(); external String get containerType; external String get containerSrc; diff --git a/lib/src/dom/magnetometer.dart b/lib/src/dom/magnetometer.dart index a4e0eaf5..c4e45884 100644 --- a/lib/src/dom/magnetometer.dart +++ b/lib/src/dom/magnetometer.dart @@ -9,40 +9,26 @@ import 'dart:js_interop'; import 'generic_sensor.dart'; typedef MagnetometerLocalCoordinateSystem = String; - -@JS('Magnetometer') -@staticInterop -class Magnetometer implements Sensor { +extension type Magnetometer._(JSObject _) implements Sensor, JSObject { external factory Magnetometer([MagnetometerSensorOptions sensorOptions]); -} -extension MagnetometerExtension on Magnetometer { external num? get x; external num? get y; external num? get z; } - -@JS() -@staticInterop -@anonymous -class MagnetometerSensorOptions implements SensorOptions { +extension type MagnetometerSensorOptions._(JSObject _) + implements SensorOptions, JSObject { external factory MagnetometerSensorOptions( {MagnetometerLocalCoordinateSystem referenceFrame}); -} -extension MagnetometerSensorOptionsExtension on MagnetometerSensorOptions { external set referenceFrame(MagnetometerLocalCoordinateSystem value); external MagnetometerLocalCoordinateSystem get referenceFrame; } - -@JS('UncalibratedMagnetometer') -@staticInterop -class UncalibratedMagnetometer implements Sensor { +extension type UncalibratedMagnetometer._(JSObject _) + implements Sensor, JSObject { external factory UncalibratedMagnetometer( [MagnetometerSensorOptions sensorOptions]); -} -extension UncalibratedMagnetometerExtension on UncalibratedMagnetometer { external num? get x; external num? get y; external num? get z; @@ -50,19 +36,13 @@ extension UncalibratedMagnetometerExtension on UncalibratedMagnetometer { external num? get yBias; external num? get zBias; } - -@JS() -@staticInterop -@anonymous -class MagnetometerReadingValues { +extension type MagnetometerReadingValues._(JSObject _) implements JSObject { external factory MagnetometerReadingValues({ required num? x, required num? y, required num? z, }); -} -extension MagnetometerReadingValuesExtension on MagnetometerReadingValues { external set x(num? value); external num? get x; external set y(num? value); @@ -70,11 +50,8 @@ extension MagnetometerReadingValuesExtension on MagnetometerReadingValues { external set z(num? value); external num? get z; } - -@JS() -@staticInterop -@anonymous -class UncalibratedMagnetometerReadingValues { +extension type UncalibratedMagnetometerReadingValues._(JSObject _) + implements JSObject { external factory UncalibratedMagnetometerReadingValues({ required num? x, required num? y, @@ -83,10 +60,7 @@ class UncalibratedMagnetometerReadingValues { required num? yBias, required num? zBias, }); -} -extension UncalibratedMagnetometerReadingValuesExtension - on UncalibratedMagnetometerReadingValues { external set x(num? value); external num? get x; external set y(num? value); diff --git a/lib/src/dom/manifest_incubations.dart b/lib/src/dom/manifest_incubations.dart index b7864a9f..a6bbddda 100644 --- a/lib/src/dom/manifest_incubations.dart +++ b/lib/src/dom/manifest_incubations.dart @@ -9,28 +9,18 @@ import 'dart:js_interop'; import 'dom.dart'; typedef AppBannerPromptOutcome = String; - -@JS('BeforeInstallPromptEvent') -@staticInterop -class BeforeInstallPromptEvent implements Event { +extension type BeforeInstallPromptEvent._(JSObject _) + implements Event, JSObject { external factory BeforeInstallPromptEvent( String type, [ EventInit eventInitDict, ]); -} -extension BeforeInstallPromptEventExtension on BeforeInstallPromptEvent { external JSPromise prompt(); } - -@JS() -@staticInterop -@anonymous -class PromptResponseObject { +extension type PromptResponseObject._(JSObject _) implements JSObject { external factory PromptResponseObject({AppBannerPromptOutcome userChoice}); -} -extension PromptResponseObjectExtension on PromptResponseObject { external set userChoice(AppBannerPromptOutcome value); external AppBannerPromptOutcome get userChoice; } diff --git a/lib/src/dom/mathml_core.dart b/lib/src/dom/mathml_core.dart index 7fdc61f7..473a33be 100644 --- a/lib/src/dom/mathml_core.dart +++ b/lib/src/dom/mathml_core.dart @@ -11,11 +11,7 @@ import 'cssom.dart'; import 'dom.dart'; import 'html.dart'; -@JS('MathMLElement') -@staticInterop -class MathMLElement implements Element {} - -extension MathMLElementExtension on MathMLElement { +extension type MathMLElement._(JSObject _) implements Element, JSObject { external void focus([FocusOptions options]); external void blur(); external StylePropertyMap get attributeStyleMap; diff --git a/lib/src/dom/media_capabilities.dart b/lib/src/dom/media_capabilities.dart index 6b1fb1af..bbb9e299 100644 --- a/lib/src/dom/media_capabilities.dart +++ b/lib/src/dom/media_capabilities.dart @@ -13,59 +13,39 @@ typedef MediaEncodingType = String; typedef HdrMetadataType = String; typedef ColorGamut = String; typedef TransferFunction = String; - -@JS() -@staticInterop -@anonymous -class MediaConfiguration { +extension type MediaConfiguration._(JSObject _) implements JSObject { external factory MediaConfiguration({ VideoConfiguration video, AudioConfiguration audio, }); -} -extension MediaConfigurationExtension on MediaConfiguration { external set video(VideoConfiguration value); external VideoConfiguration get video; external set audio(AudioConfiguration value); external AudioConfiguration get audio; } - -@JS() -@staticInterop -@anonymous -class MediaDecodingConfiguration implements MediaConfiguration { +extension type MediaDecodingConfiguration._(JSObject _) + implements MediaConfiguration, JSObject { external factory MediaDecodingConfiguration({ required MediaDecodingType type, MediaCapabilitiesKeySystemConfiguration keySystemConfiguration, }); -} -extension MediaDecodingConfigurationExtension on MediaDecodingConfiguration { external set type(MediaDecodingType value); external MediaDecodingType get type; external set keySystemConfiguration( MediaCapabilitiesKeySystemConfiguration value); external MediaCapabilitiesKeySystemConfiguration get keySystemConfiguration; } - -@JS() -@staticInterop -@anonymous -class MediaEncodingConfiguration implements MediaConfiguration { +extension type MediaEncodingConfiguration._(JSObject _) + implements MediaConfiguration, JSObject { external factory MediaEncodingConfiguration( {required MediaEncodingType type}); -} -extension MediaEncodingConfigurationExtension on MediaEncodingConfiguration { external set type(MediaEncodingType value); external MediaEncodingType get type; } - -@JS() -@staticInterop -@anonymous -class VideoConfiguration { +extension type VideoConfiguration._(JSObject _) implements JSObject { external factory VideoConfiguration({ required String contentType, required int width, @@ -79,9 +59,7 @@ class VideoConfiguration { String scalabilityMode, bool spatialScalability, }); -} -extension VideoConfigurationExtension on VideoConfiguration { external set contentType(String value); external String get contentType; external set width(int value); @@ -105,11 +83,7 @@ extension VideoConfigurationExtension on VideoConfiguration { external set spatialScalability(bool value); external bool get spatialScalability; } - -@JS() -@staticInterop -@anonymous -class AudioConfiguration { +extension type AudioConfiguration._(JSObject _) implements JSObject { external factory AudioConfiguration({ required String contentType, String channels, @@ -117,9 +91,7 @@ class AudioConfiguration { int samplerate, bool spatialRendering, }); -} -extension AudioConfigurationExtension on AudioConfiguration { external set contentType(String value); external String get contentType; external set channels(String value); @@ -131,11 +103,8 @@ extension AudioConfigurationExtension on AudioConfiguration { external set spatialRendering(bool value); external bool get spatialRendering; } - -@JS() -@staticInterop -@anonymous -class MediaCapabilitiesKeySystemConfiguration { +extension type MediaCapabilitiesKeySystemConfiguration._(JSObject _) + implements JSObject { external factory MediaCapabilitiesKeySystemConfiguration({ required String keySystem, String initDataType, @@ -145,10 +114,7 @@ class MediaCapabilitiesKeySystemConfiguration { KeySystemTrackConfiguration audio, KeySystemTrackConfiguration video, }); -} -extension MediaCapabilitiesKeySystemConfigurationExtension - on MediaCapabilitiesKeySystemConfiguration { external set keySystem(String value); external String get keySystem; external set initDataType(String value); @@ -164,36 +130,24 @@ extension MediaCapabilitiesKeySystemConfigurationExtension external set video(KeySystemTrackConfiguration value); external KeySystemTrackConfiguration get video; } - -@JS() -@staticInterop -@anonymous -class KeySystemTrackConfiguration { +extension type KeySystemTrackConfiguration._(JSObject _) implements JSObject { external factory KeySystemTrackConfiguration({ String robustness, String? encryptionScheme, }); -} -extension KeySystemTrackConfigurationExtension on KeySystemTrackConfiguration { external set robustness(String value); external String get robustness; external set encryptionScheme(String? value); external String? get encryptionScheme; } - -@JS() -@staticInterop -@anonymous -class MediaCapabilitiesInfo { +extension type MediaCapabilitiesInfo._(JSObject _) implements JSObject { external factory MediaCapabilitiesInfo({ required bool supported, required bool smooth, required bool powerEfficient, }); -} -extension MediaCapabilitiesInfoExtension on MediaCapabilitiesInfo { external set supported(bool value); external bool get supported; external set smooth(bool value); @@ -201,44 +155,27 @@ extension MediaCapabilitiesInfoExtension on MediaCapabilitiesInfo { external set powerEfficient(bool value); external bool get powerEfficient; } - -@JS() -@staticInterop -@anonymous -class MediaCapabilitiesDecodingInfo implements MediaCapabilitiesInfo { +extension type MediaCapabilitiesDecodingInfo._(JSObject _) + implements MediaCapabilitiesInfo, JSObject { external factory MediaCapabilitiesDecodingInfo({ required MediaKeySystemAccess keySystemAccess, MediaDecodingConfiguration configuration, }); -} -extension MediaCapabilitiesDecodingInfoExtension - on MediaCapabilitiesDecodingInfo { external set keySystemAccess(MediaKeySystemAccess value); external MediaKeySystemAccess get keySystemAccess; external set configuration(MediaDecodingConfiguration value); external MediaDecodingConfiguration get configuration; } - -@JS() -@staticInterop -@anonymous -class MediaCapabilitiesEncodingInfo implements MediaCapabilitiesInfo { +extension type MediaCapabilitiesEncodingInfo._(JSObject _) + implements MediaCapabilitiesInfo, JSObject { external factory MediaCapabilitiesEncodingInfo( {MediaEncodingConfiguration configuration}); -} -extension MediaCapabilitiesEncodingInfoExtension - on MediaCapabilitiesEncodingInfo { external set configuration(MediaEncodingConfiguration value); external MediaEncodingConfiguration get configuration; } - -@JS('MediaCapabilities') -@staticInterop -class MediaCapabilities {} - -extension MediaCapabilitiesExtension on MediaCapabilities { +extension type MediaCapabilities._(JSObject _) implements JSObject { external JSPromise decodingInfo(MediaDecodingConfiguration configuration); external JSPromise encodingInfo(MediaEncodingConfiguration configuration); } diff --git a/lib/src/dom/media_playback_quality.dart b/lib/src/dom/media_playback_quality.dart index 9e2d975d..bb588ad3 100644 --- a/lib/src/dom/media_playback_quality.dart +++ b/lib/src/dom/media_playback_quality.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'hr_time.dart'; -@JS('VideoPlaybackQuality') -@staticInterop -class VideoPlaybackQuality {} - -extension VideoPlaybackQualityExtension on VideoPlaybackQuality { +extension type VideoPlaybackQuality._(JSObject _) implements JSObject { external DOMHighResTimeStamp get creationTime; external int get droppedVideoFrames; external int get totalVideoFrames; diff --git a/lib/src/dom/media_source.dart b/lib/src/dom/media_source.dart index 68c99dc5..462359bb 100644 --- a/lib/src/dom/media_source.dart +++ b/lib/src/dom/media_source.dart @@ -13,17 +13,11 @@ import 'webidl.dart'; typedef ReadyState = String; typedef EndOfStreamError = String; typedef AppendMode = String; - -@JS('MediaSource') -@staticInterop -class MediaSource implements EventTarget { +extension type MediaSource._(JSObject _) implements EventTarget, JSObject { external factory MediaSource(); external static bool isTypeSupported(String type); external static bool get canConstructInDedicatedWorker; -} - -extension MediaSourceExtension on MediaSource { external SourceBuffer addSourceBuffer(String type); external void removeSourceBuffer(SourceBuffer sourceBuffer); external void endOfStream([EndOfStreamError error]); @@ -45,16 +39,8 @@ extension MediaSourceExtension on MediaSource { external set onsourceclose(EventHandler value); external EventHandler get onsourceclose; } - -@JS('MediaSourceHandle') -@staticInterop -class MediaSourceHandle {} - -@JS('SourceBuffer') -@staticInterop -class SourceBuffer implements EventTarget {} - -extension SourceBufferExtension on SourceBuffer { +extension type MediaSourceHandle._(JSObject _) implements JSObject {} +extension type SourceBuffer._(JSObject _) implements EventTarget, JSObject { external void appendBuffer(BufferSource data); external void abort(); external void changeType(String type); @@ -86,12 +72,7 @@ extension SourceBufferExtension on SourceBuffer { external set onabort(EventHandler value); external EventHandler get onabort; } - -@JS('SourceBufferList') -@staticInterop -class SourceBufferList implements EventTarget {} - -extension SourceBufferListExtension on SourceBufferList { +extension type SourceBufferList._(JSObject _) implements EventTarget, JSObject { external int get length; external set onaddsourcebuffer(EventHandler value); external EventHandler get onaddsourcebuffer; diff --git a/lib/src/dom/mediacapture_automation.dart b/lib/src/dom/mediacapture_automation.dart index 3a495d91..7c9d22b6 100644 --- a/lib/src/dom/mediacapture_automation.dart +++ b/lib/src/dom/mediacapture_automation.dart @@ -7,38 +7,26 @@ import 'dart:js_interop'; typedef MockCapturePromptResult = String; - -@JS() -@staticInterop -@anonymous -class MockCapturePromptResultConfiguration { +extension type MockCapturePromptResultConfiguration._(JSObject _) + implements JSObject { external factory MockCapturePromptResultConfiguration({ MockCapturePromptResult getUserMedia, MockCapturePromptResult getDisplayMedia, }); -} -extension MockCapturePromptResultConfigurationExtension - on MockCapturePromptResultConfiguration { external set getUserMedia(MockCapturePromptResult value); external MockCapturePromptResult get getUserMedia; external set getDisplayMedia(MockCapturePromptResult value); external MockCapturePromptResult get getDisplayMedia; } - -@JS() -@staticInterop -@anonymous -class MockCaptureDeviceConfiguration { +extension type MockCaptureDeviceConfiguration._(JSObject _) + implements JSObject { external factory MockCaptureDeviceConfiguration({ String label, String deviceId, String groupId, }); -} -extension MockCaptureDeviceConfigurationExtension - on MockCaptureDeviceConfiguration { external set label(String value); external String get label; external set deviceId(String value); @@ -46,32 +34,22 @@ extension MockCaptureDeviceConfigurationExtension external set groupId(String value); external String get groupId; } - -@JS() -@staticInterop -@anonymous -class MockCameraConfiguration implements MockCaptureDeviceConfiguration { +extension type MockCameraConfiguration._(JSObject _) + implements MockCaptureDeviceConfiguration, JSObject { external factory MockCameraConfiguration({ num defaultFrameRate, String facingMode, }); -} -extension MockCameraConfigurationExtension on MockCameraConfiguration { external set defaultFrameRate(num value); external num get defaultFrameRate; external set facingMode(String value); external String get facingMode; } - -@JS() -@staticInterop -@anonymous -class MockMicrophoneConfiguration implements MockCaptureDeviceConfiguration { +extension type MockMicrophoneConfiguration._(JSObject _) + implements MockCaptureDeviceConfiguration, JSObject { external factory MockMicrophoneConfiguration({int defaultSampleRate}); -} -extension MockMicrophoneConfigurationExtension on MockMicrophoneConfiguration { external set defaultSampleRate(int value); external int get defaultSampleRate; } diff --git a/lib/src/dom/mediacapture_fromelement.dart b/lib/src/dom/mediacapture_fromelement.dart index 3219e70a..d8c43119 100644 --- a/lib/src/dom/mediacapture_fromelement.dart +++ b/lib/src/dom/mediacapture_fromelement.dart @@ -9,12 +9,8 @@ import 'dart:js_interop'; import 'html.dart'; import 'mediacapture_streams.dart'; -@JS('CanvasCaptureMediaStreamTrack') -@staticInterop -class CanvasCaptureMediaStreamTrack implements MediaStreamTrack {} - -extension CanvasCaptureMediaStreamTrackExtension - on CanvasCaptureMediaStreamTrack { +extension type CanvasCaptureMediaStreamTrack._(JSObject _) + implements MediaStreamTrack, JSObject { external void requestFrame(); external HTMLCanvasElement get canvas; } diff --git a/lib/src/dom/mediacapture_handle_actions.dart b/lib/src/dom/mediacapture_handle_actions.dart index 0be35214..883982d9 100644 --- a/lib/src/dom/mediacapture_handle_actions.dart +++ b/lib/src/dom/mediacapture_handle_actions.dart @@ -9,25 +9,15 @@ import 'dart:js_interop'; import 'dom.dart'; typedef CaptureAction = String; - -@JS('CaptureActionEvent') -@staticInterop -class CaptureActionEvent implements Event { +extension type CaptureActionEvent._(JSObject _) implements Event, JSObject { external factory CaptureActionEvent([CaptureActionEventInit init]); -} -extension CaptureActionEventExtension on CaptureActionEvent { external CaptureAction get action; } - -@JS() -@staticInterop -@anonymous -class CaptureActionEventInit implements EventInit { +extension type CaptureActionEventInit._(JSObject _) + implements EventInit, JSObject { external factory CaptureActionEventInit({String action}); -} -extension CaptureActionEventInitExtension on CaptureActionEventInit { external set action(String value); external String get action; } diff --git a/lib/src/dom/mediacapture_region.dart b/lib/src/dom/mediacapture_region.dart index 14a0c71a..0cff90ef 100644 --- a/lib/src/dom/mediacapture_region.dart +++ b/lib/src/dom/mediacapture_region.dart @@ -10,18 +10,11 @@ import 'dom.dart'; import 'element_capture.dart'; import 'mediacapture_streams.dart'; -@JS('CropTarget') -@staticInterop -class CropTarget { +extension type CropTarget._(JSObject _) implements JSObject { external static JSPromise fromElement(Element element); } - -@JS('BrowserCaptureMediaStreamTrack') -@staticInterop -class BrowserCaptureMediaStreamTrack implements MediaStreamTrack {} - -extension BrowserCaptureMediaStreamTrackExtension - on BrowserCaptureMediaStreamTrack { +extension type BrowserCaptureMediaStreamTrack._(JSObject _) + implements MediaStreamTrack, JSObject { external JSPromise restrictTo(RestrictionTarget? RestrictionTarget); external JSPromise cropTo(CropTarget? cropTarget); external BrowserCaptureMediaStreamTrack clone(); diff --git a/lib/src/dom/mediacapture_streams.dart b/lib/src/dom/mediacapture_streams.dart index 9614f7ab..946ec59d 100644 --- a/lib/src/dom/mediacapture_streams.dart +++ b/lib/src/dom/mediacapture_streams.dart @@ -27,14 +27,9 @@ typedef MediaStreamTrackState = String; typedef VideoFacingModeEnum = String; typedef VideoResizeModeEnum = String; typedef MediaDeviceKind = String; - -@JS('MediaStream') -@staticInterop -class MediaStream implements EventTarget { +extension type MediaStream._(JSObject _) implements EventTarget, JSObject { external factory MediaStream([JSObject streamOrTracks]); -} -extension MediaStreamExtension on MediaStream { external JSArray getAudioTracks(); external JSArray getVideoTracks(); external JSArray getTracks(); @@ -49,12 +44,7 @@ extension MediaStreamExtension on MediaStream { external set onremovetrack(EventHandler value); external EventHandler get onremovetrack; } - -@JS('MediaStreamTrack') -@staticInterop -class MediaStreamTrack implements EventTarget {} - -extension MediaStreamTrackExtension on MediaStreamTrack { +extension type MediaStreamTrack._(JSObject _) implements EventTarget, JSObject { external CaptureHandle? getCaptureHandle(); external JSArray getSupportedCaptureActions(); external JSPromise sendCaptureAction(CaptureAction action); @@ -85,11 +75,8 @@ extension MediaStreamTrackExtension on MediaStreamTrack { external set onisolationchange(EventHandler value); external EventHandler get onisolationchange; } - -@JS() -@staticInterop -@anonymous -class MediaTrackSupportedConstraints { +extension type MediaTrackSupportedConstraints._(JSObject _) + implements JSObject { external factory MediaTrackSupportedConstraints({ bool whiteBalanceMode, bool exposureMode, @@ -129,10 +116,7 @@ class MediaTrackSupportedConstraints { bool restrictOwnAudio, bool suppressLocalAudioPlayback, }); -} -extension MediaTrackSupportedConstraintsExtension - on MediaTrackSupportedConstraints { external set whiteBalanceMode(bool value); external bool get whiteBalanceMode; external set exposureMode(bool value); @@ -208,11 +192,7 @@ extension MediaTrackSupportedConstraintsExtension external set suppressLocalAudioPlayback(bool value); external bool get suppressLocalAudioPlayback; } - -@JS() -@staticInterop -@anonymous -class MediaTrackCapabilities { +extension type MediaTrackCapabilities._(JSObject _) implements JSObject { external factory MediaTrackCapabilities({ JSArray whiteBalanceMode, JSArray exposureMode, @@ -249,9 +229,7 @@ class MediaTrackCapabilities { bool logicalSurface, JSArray cursor, }); -} -extension MediaTrackCapabilitiesExtension on MediaTrackCapabilities { external set whiteBalanceMode(JSArray value); external JSArray get whiteBalanceMode; external set exposureMode(JSArray value); @@ -321,23 +299,14 @@ extension MediaTrackCapabilitiesExtension on MediaTrackCapabilities { external set cursor(JSArray value); external JSArray get cursor; } - -@JS() -@staticInterop -@anonymous -class MediaTrackConstraints implements MediaTrackConstraintSet { +extension type MediaTrackConstraints._(JSObject _) + implements MediaTrackConstraintSet, JSObject { external factory MediaTrackConstraints({JSArray advanced}); -} -extension MediaTrackConstraintsExtension on MediaTrackConstraints { external set advanced(JSArray value); external JSArray get advanced; } - -@JS() -@staticInterop -@anonymous -class MediaTrackConstraintSet { +extension type MediaTrackConstraintSet._(JSObject _) implements JSObject { external factory MediaTrackConstraintSet({ ConstrainDOMString whiteBalanceMode, ConstrainDOMString exposureMode, @@ -377,9 +346,7 @@ class MediaTrackConstraintSet { ConstrainBoolean restrictOwnAudio, ConstrainBoolean suppressLocalAudioPlayback, }); -} -extension MediaTrackConstraintSetExtension on MediaTrackConstraintSet { external set whiteBalanceMode(ConstrainDOMString value); external ConstrainDOMString get whiteBalanceMode; external set exposureMode(ConstrainDOMString value); @@ -455,11 +422,7 @@ extension MediaTrackConstraintSetExtension on MediaTrackConstraintSet { external set suppressLocalAudioPlayback(ConstrainBoolean value); external ConstrainBoolean get suppressLocalAudioPlayback; } - -@JS() -@staticInterop -@anonymous -class MediaTrackSettings { +extension type MediaTrackSettings._(JSObject _) implements JSObject { external factory MediaTrackSettings({ String whiteBalanceMode, String exposureMode, @@ -499,9 +462,7 @@ class MediaTrackSettings { bool restrictOwnAudio, bool suppressLocalAudioPlayback, }); -} -extension MediaTrackSettingsExtension on MediaTrackSettings { external set whiteBalanceMode(String value); external String get whiteBalanceMode; external set exposureMode(String value); @@ -577,50 +538,31 @@ extension MediaTrackSettingsExtension on MediaTrackSettings { external set suppressLocalAudioPlayback(bool value); external bool get suppressLocalAudioPlayback; } - -@JS('MediaStreamTrackEvent') -@staticInterop -class MediaStreamTrackEvent implements Event { +extension type MediaStreamTrackEvent._(JSObject _) implements Event, JSObject { external factory MediaStreamTrackEvent( String type, MediaStreamTrackEventInit eventInitDict, ); -} -extension MediaStreamTrackEventExtension on MediaStreamTrackEvent { external MediaStreamTrack get track; } - -@JS() -@staticInterop -@anonymous -class MediaStreamTrackEventInit implements EventInit { +extension type MediaStreamTrackEventInit._(JSObject _) + implements EventInit, JSObject { external factory MediaStreamTrackEventInit({required MediaStreamTrack track}); -} -extension MediaStreamTrackEventInitExtension on MediaStreamTrackEventInit { external set track(MediaStreamTrack value); external MediaStreamTrack get track; } - -@JS('OverconstrainedError') -@staticInterop -class OverconstrainedError implements DOMException { +extension type OverconstrainedError._(JSObject _) + implements DOMException, JSObject { external factory OverconstrainedError( String constraint, [ String message, ]); -} -extension OverconstrainedErrorExtension on OverconstrainedError { external String get constraint; } - -@JS('MediaDevices') -@staticInterop -class MediaDevices implements EventTarget {} - -extension MediaDevicesExtension on MediaDevices { +extension type MediaDevices._(JSObject _) implements EventTarget, JSObject { external JSPromise selectAudioOutput([AudioOutputOptions options]); external void setCaptureHandleConfig([CaptureHandleConfig config]); external void setSupportedCaptureActions(JSArray actions); @@ -635,40 +577,25 @@ extension MediaDevicesExtension on MediaDevices { external set ondevicechange(EventHandler value); external EventHandler get ondevicechange; } - -@JS('MediaDeviceInfo') -@staticInterop -class MediaDeviceInfo {} - -extension MediaDeviceInfoExtension on MediaDeviceInfo { +extension type MediaDeviceInfo._(JSObject _) implements JSObject { external JSObject toJSON(); external String get deviceId; external MediaDeviceKind get kind; external String get label; external String get groupId; } - -@JS('InputDeviceInfo') -@staticInterop -class InputDeviceInfo implements MediaDeviceInfo {} - -extension InputDeviceInfoExtension on InputDeviceInfo { +extension type InputDeviceInfo._(JSObject _) + implements MediaDeviceInfo, JSObject { external MediaTrackCapabilities getCapabilities(); } - -@JS() -@staticInterop -@anonymous -class MediaStreamConstraints { +extension type MediaStreamConstraints._(JSObject _) implements JSObject { external factory MediaStreamConstraints({ JSAny video, JSAny audio, bool preferCurrentTab, String peerIdentity, }); -} -extension MediaStreamConstraintsExtension on MediaStreamConstraints { external set video(JSAny value); external JSAny get video; external set audio(JSAny value); @@ -678,119 +605,78 @@ extension MediaStreamConstraintsExtension on MediaStreamConstraints { external set peerIdentity(String value); external String get peerIdentity; } - -@JS() -@staticInterop -@anonymous -class DoubleRange { +extension type DoubleRange._(JSObject _) implements JSObject { external factory DoubleRange({ num max, num min, }); -} -extension DoubleRangeExtension on DoubleRange { external set max(num value); external num get max; external set min(num value); external num get min; } - -@JS() -@staticInterop -@anonymous -class ConstrainDoubleRange implements DoubleRange { +extension type ConstrainDoubleRange._(JSObject _) + implements DoubleRange, JSObject { external factory ConstrainDoubleRange({ num exact, num ideal, }); -} -extension ConstrainDoubleRangeExtension on ConstrainDoubleRange { external set exact(num value); external num get exact; external set ideal(num value); external num get ideal; } - -@JS() -@staticInterop -@anonymous -class ULongRange { +extension type ULongRange._(JSObject _) implements JSObject { external factory ULongRange({ int max, int min, }); -} -extension ULongRangeExtension on ULongRange { external set max(int value); external int get max; external set min(int value); external int get min; } - -@JS() -@staticInterop -@anonymous -class ConstrainULongRange implements ULongRange { +extension type ConstrainULongRange._(JSObject _) + implements ULongRange, JSObject { external factory ConstrainULongRange({ int exact, int ideal, }); -} -extension ConstrainULongRangeExtension on ConstrainULongRange { external set exact(int value); external int get exact; external set ideal(int value); external int get ideal; } - -@JS() -@staticInterop -@anonymous -class ConstrainBooleanParameters { +extension type ConstrainBooleanParameters._(JSObject _) implements JSObject { external factory ConstrainBooleanParameters({ bool exact, bool ideal, }); -} -extension ConstrainBooleanParametersExtension on ConstrainBooleanParameters { external set exact(bool value); external bool get exact; external set ideal(bool value); external bool get ideal; } - -@JS() -@staticInterop -@anonymous -class ConstrainDOMStringParameters { +extension type ConstrainDOMStringParameters._(JSObject _) implements JSObject { external factory ConstrainDOMStringParameters({ JSAny exact, JSAny ideal, }); -} -extension ConstrainDOMStringParametersExtension - on ConstrainDOMStringParameters { external set exact(JSAny value); external JSAny get exact; external set ideal(JSAny value); external JSAny get ideal; } - -@JS() -@staticInterop -@anonymous -class CameraDevicePermissionDescriptor implements PermissionDescriptor { +extension type CameraDevicePermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory CameraDevicePermissionDescriptor({bool panTiltZoom}); -} -extension CameraDevicePermissionDescriptorExtension - on CameraDevicePermissionDescriptor { external set panTiltZoom(bool value); external bool get panTiltZoom; } diff --git a/lib/src/dom/mediacapture_transform.dart b/lib/src/dom/mediacapture_transform.dart index 14b94e05..5a4eee35 100644 --- a/lib/src/dom/mediacapture_transform.dart +++ b/lib/src/dom/mediacapture_transform.dart @@ -9,43 +9,27 @@ import 'dart:js_interop'; import 'mediacapture_streams.dart'; import 'streams.dart'; -@JS('MediaStreamTrackProcessor') -@staticInterop -class MediaStreamTrackProcessor { +extension type MediaStreamTrackProcessor._(JSObject _) implements JSObject { external factory MediaStreamTrackProcessor( MediaStreamTrackProcessorInit init); -} -extension MediaStreamTrackProcessorExtension on MediaStreamTrackProcessor { external set readable(ReadableStream value); external ReadableStream get readable; } - -@JS() -@staticInterop -@anonymous -class MediaStreamTrackProcessorInit { +extension type MediaStreamTrackProcessorInit._(JSObject _) implements JSObject { external factory MediaStreamTrackProcessorInit({ required MediaStreamTrack track, int maxBufferSize, }); -} -extension MediaStreamTrackProcessorInitExtension - on MediaStreamTrackProcessorInit { external set track(MediaStreamTrack value); external MediaStreamTrack get track; external set maxBufferSize(int value); external int get maxBufferSize; } - -@JS('VideoTrackGenerator') -@staticInterop -class VideoTrackGenerator { +extension type VideoTrackGenerator._(JSObject _) implements JSObject { external factory VideoTrackGenerator(); -} -extension VideoTrackGeneratorExtension on VideoTrackGenerator { external WritableStream get writable; external set muted(bool value); external bool get muted; diff --git a/lib/src/dom/mediacapture_viewport.dart b/lib/src/dom/mediacapture_viewport.dart index 40d3af74..93f8376f 100644 --- a/lib/src/dom/mediacapture_viewport.dart +++ b/lib/src/dom/mediacapture_viewport.dart @@ -6,18 +6,13 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class ViewportMediaStreamConstraints { +extension type ViewportMediaStreamConstraints._(JSObject _) + implements JSObject { external factory ViewportMediaStreamConstraints({ JSAny video, JSAny audio, }); -} -extension ViewportMediaStreamConstraintsExtension - on ViewportMediaStreamConstraints { external set video(JSAny value); external JSAny get video; external set audio(JSAny value); diff --git a/lib/src/dom/mediasession.dart b/lib/src/dom/mediasession.dart index 31f6e51e..9d4c173c 100644 --- a/lib/src/dom/mediasession.dart +++ b/lib/src/dom/mediasession.dart @@ -9,12 +9,7 @@ import 'dart:js_interop'; typedef MediaSessionActionHandler = JSFunction; typedef MediaSessionPlaybackState = String; typedef MediaSessionAction = String; - -@JS('MediaSession') -@staticInterop -class MediaSession {} - -extension MediaSessionExtension on MediaSession { +extension type MediaSession._(JSObject _) implements JSObject { external void setActionHandler( MediaSessionAction action, MediaSessionActionHandler? handler, @@ -27,14 +22,9 @@ extension MediaSessionExtension on MediaSession { external set playbackState(MediaSessionPlaybackState value); external MediaSessionPlaybackState get playbackState; } - -@JS('MediaMetadata') -@staticInterop -class MediaMetadata { +extension type MediaMetadata._(JSObject _) implements JSObject { external factory MediaMetadata([MediaMetadataInit init]); -} -extension MediaMetadataExtension on MediaMetadata { external set title(String value); external String get title; external set artist(String value); @@ -44,20 +34,14 @@ extension MediaMetadataExtension on MediaMetadata { external set artwork(JSArray value); external JSArray get artwork; } - -@JS() -@staticInterop -@anonymous -class MediaMetadataInit { +extension type MediaMetadataInit._(JSObject _) implements JSObject { external factory MediaMetadataInit({ String title, String artist, String album, JSArray artwork, }); -} -extension MediaMetadataInitExtension on MediaMetadataInit { external set title(String value); external String get title; external set artist(String value); @@ -67,19 +51,13 @@ extension MediaMetadataInitExtension on MediaMetadataInit { external set artwork(JSArray value); external JSArray get artwork; } - -@JS() -@staticInterop -@anonymous -class MediaImage { +extension type MediaImage._(JSObject _) implements JSObject { external factory MediaImage({ required String src, String sizes, String type, }); -} -extension MediaImageExtension on MediaImage { external set src(String value); external String get src; external set sizes(String value); @@ -87,19 +65,13 @@ extension MediaImageExtension on MediaImage { external set type(String value); external String get type; } - -@JS() -@staticInterop -@anonymous -class MediaPositionState { +extension type MediaPositionState._(JSObject _) implements JSObject { external factory MediaPositionState({ num duration, num playbackRate, num position, }); -} -extension MediaPositionStateExtension on MediaPositionState { external set duration(num value); external num get duration; external set playbackRate(num value); @@ -107,20 +79,14 @@ extension MediaPositionStateExtension on MediaPositionState { external set position(num value); external num get position; } - -@JS() -@staticInterop -@anonymous -class MediaSessionActionDetails { +extension type MediaSessionActionDetails._(JSObject _) implements JSObject { external factory MediaSessionActionDetails({ required MediaSessionAction action, num seekOffset, num seekTime, bool fastSeek, }); -} -extension MediaSessionActionDetailsExtension on MediaSessionActionDetails { external set action(MediaSessionAction value); external MediaSessionAction get action; external set seekOffset(num value); diff --git a/lib/src/dom/mediastream_recording.dart b/lib/src/dom/mediastream_recording.dart index 94be8577..7d2e5f2d 100644 --- a/lib/src/dom/mediastream_recording.dart +++ b/lib/src/dom/mediastream_recording.dart @@ -14,19 +14,13 @@ import 'mediacapture_streams.dart'; typedef BitrateMode = String; typedef RecordingState = String; - -@JS('MediaRecorder') -@staticInterop -class MediaRecorder implements EventTarget { +extension type MediaRecorder._(JSObject _) implements EventTarget, JSObject { external factory MediaRecorder( MediaStream stream, [ MediaRecorderOptions options, ]); external static bool isTypeSupported(String type); -} - -extension MediaRecorderExtension on MediaRecorder { external void start([int timeslice]); external void stop(); external void pause(); @@ -51,11 +45,7 @@ extension MediaRecorderExtension on MediaRecorder { external int get audioBitsPerSecond; external BitrateMode get audioBitrateMode; } - -@JS() -@staticInterop -@anonymous -class MediaRecorderOptions { +extension type MediaRecorderOptions._(JSObject _) implements JSObject { external factory MediaRecorderOptions({ String mimeType, int audioBitsPerSecond, @@ -65,9 +55,7 @@ class MediaRecorderOptions { DOMHighResTimeStamp videoKeyFrameIntervalDuration, int videoKeyFrameIntervalCount, }); -} -extension MediaRecorderOptionsExtension on MediaRecorderOptions { external set mimeType(String value); external String get mimeType; external set audioBitsPerSecond(int value); @@ -83,32 +71,21 @@ extension MediaRecorderOptionsExtension on MediaRecorderOptions { external set videoKeyFrameIntervalCount(int value); external int get videoKeyFrameIntervalCount; } - -@JS('BlobEvent') -@staticInterop -class BlobEvent implements Event { +extension type BlobEvent._(JSObject _) implements Event, JSObject { external factory BlobEvent( String type, BlobEventInit eventInitDict, ); -} -extension BlobEventExtension on BlobEvent { external Blob get data; external DOMHighResTimeStamp get timecode; } - -@JS() -@staticInterop -@anonymous -class BlobEventInit { +extension type BlobEventInit._(JSObject _) implements JSObject { external factory BlobEventInit({ required Blob data, DOMHighResTimeStamp timecode, }); -} -extension BlobEventInitExtension on BlobEventInit { external set data(Blob value); external Blob get data; external set timecode(DOMHighResTimeStamp value); diff --git a/lib/src/dom/model_element.dart b/lib/src/dom/model_element.dart index 66bab767..f6c13256 100644 --- a/lib/src/dom/model_element.dart +++ b/lib/src/dom/model_element.dart @@ -8,6 +8,5 @@ import 'dart:js_interop'; import 'html.dart'; -@JS('HTMLModelElement') -@staticInterop -class HTMLModelElement implements HTMLElement {} +extension type HTMLModelElement._(JSObject _) + implements HTMLElement, JSObject {} diff --git a/lib/src/dom/navigation_timing.dart b/lib/src/dom/navigation_timing.dart index 0227c448..7f923db1 100644 --- a/lib/src/dom/navigation_timing.dart +++ b/lib/src/dom/navigation_timing.dart @@ -10,12 +10,8 @@ import 'hr_time.dart'; import 'resource_timing.dart'; typedef NavigationTimingType = String; - -@JS('PerformanceNavigationTiming') -@staticInterop -class PerformanceNavigationTiming implements PerformanceResourceTiming {} - -extension PerformanceNavigationTimingExtension on PerformanceNavigationTiming { +extension type PerformanceNavigationTiming._(JSObject _) + implements PerformanceResourceTiming, JSObject { external JSObject toJSON(); external DOMHighResTimeStamp get unloadEventStart; external DOMHighResTimeStamp get unloadEventEnd; @@ -30,12 +26,7 @@ extension PerformanceNavigationTimingExtension on PerformanceNavigationTiming { external DOMHighResTimeStamp get criticalCHRestart; external DOMHighResTimeStamp get activationStart; } - -@JS('PerformanceTiming') -@staticInterop -class PerformanceTiming {} - -extension PerformanceTimingExtension on PerformanceTiming { +extension type PerformanceTiming._(JSObject _) implements JSObject { external JSObject toJSON(); external int get navigationStart; external int get unloadEventStart; @@ -59,17 +50,11 @@ extension PerformanceTimingExtension on PerformanceTiming { external int get loadEventStart; external int get loadEventEnd; } - -@JS('PerformanceNavigation') -@staticInterop -class PerformanceNavigation { +extension type PerformanceNavigation._(JSObject _) implements JSObject { external static int get TYPE_NAVIGATE; external static int get TYPE_RELOAD; external static int get TYPE_BACK_FORWARD; external static int get TYPE_RESERVED; -} - -extension PerformanceNavigationExtension on PerformanceNavigation { external JSObject toJSON(); external int get type; external int get redirectCount; diff --git a/lib/src/dom/netinfo.dart b/lib/src/dom/netinfo.dart index 69b73bb6..c1f782e6 100644 --- a/lib/src/dom/netinfo.dart +++ b/lib/src/dom/netinfo.dart @@ -13,12 +13,8 @@ typedef Megabit = num; typedef Millisecond = int; typedef ConnectionType = String; typedef EffectiveConnectionType = String; - -@JS('NetworkInformation') -@staticInterop -class NetworkInformation implements EventTarget {} - -extension NetworkInformationExtension on NetworkInformation { +extension type NetworkInformation._(JSObject _) + implements EventTarget, JSObject { external ConnectionType get type; external EffectiveConnectionType get effectiveType; external Megabit get downlinkMax; diff --git a/lib/src/dom/notifications.dart b/lib/src/dom/notifications.dart index cb685014..16fdabe7 100644 --- a/lib/src/dom/notifications.dart +++ b/lib/src/dom/notifications.dart @@ -15,10 +15,7 @@ import 'vibration.dart'; typedef NotificationPermissionCallback = JSFunction; typedef NotificationPermission = String; typedef NotificationDirection = String; - -@JS('Notification') -@staticInterop -class Notification implements EventTarget { +extension type Notification._(JSObject _) implements EventTarget, JSObject { external factory Notification( String title, [ NotificationOptions options, @@ -28,9 +25,6 @@ class Notification implements EventTarget { [NotificationPermissionCallback deprecatedCallback]); external static NotificationPermission get permission; external static int get maxActions; -} - -extension NotificationExtension on Notification { external void close(); external set onclick(EventHandler value); external EventHandler get onclick; @@ -56,11 +50,7 @@ extension NotificationExtension on Notification { external JSAny? get data; external JSArray get actions; } - -@JS() -@staticInterop -@anonymous -class NotificationOptions { +extension type NotificationOptions._(JSObject _) implements JSObject { external factory NotificationOptions({ NotificationDirection dir, String lang, @@ -77,9 +67,7 @@ class NotificationOptions { JSAny? data, JSArray actions, }); -} -extension NotificationOptionsExtension on NotificationOptions { external set dir(NotificationDirection value); external NotificationDirection get dir; external set lang(String value); @@ -109,19 +97,13 @@ extension NotificationOptionsExtension on NotificationOptions { external set actions(JSArray value); external JSArray get actions; } - -@JS() -@staticInterop -@anonymous -class NotificationAction { +extension type NotificationAction._(JSObject _) implements JSObject { external factory NotificationAction({ required String action, required String title, String icon, }); -} -extension NotificationActionExtension on NotificationAction { external set action(String value); external String get action; external set title(String value); @@ -129,44 +111,29 @@ extension NotificationActionExtension on NotificationAction { external set icon(String value); external String get icon; } - -@JS() -@staticInterop -@anonymous -class GetNotificationOptions { +extension type GetNotificationOptions._(JSObject _) implements JSObject { external factory GetNotificationOptions({String tag}); -} -extension GetNotificationOptionsExtension on GetNotificationOptions { external set tag(String value); external String get tag; } - -@JS('NotificationEvent') -@staticInterop -class NotificationEvent implements ExtendableEvent { +extension type NotificationEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory NotificationEvent( String type, NotificationEventInit eventInitDict, ); -} -extension NotificationEventExtension on NotificationEvent { external Notification get notification; external String get action; } - -@JS() -@staticInterop -@anonymous -class NotificationEventInit implements ExtendableEventInit { +extension type NotificationEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory NotificationEventInit({ required Notification notification, String action, }); -} -extension NotificationEventInitExtension on NotificationEventInit { external set notification(Notification value); external Notification get notification; external set action(String value); diff --git a/lib/src/dom/oes_draw_buffers_indexed.dart b/lib/src/dom/oes_draw_buffers_indexed.dart index 93e664fc..b12b4fac 100644 --- a/lib/src/dom/oes_draw_buffers_indexed.dart +++ b/lib/src/dom/oes_draw_buffers_indexed.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('OES_draw_buffers_indexed') -@staticInterop -class OES_draw_buffers_indexed {} - -extension OESDrawBuffersIndexedExtension on OES_draw_buffers_indexed { +extension type OES_draw_buffers_indexed._(JSObject _) implements JSObject { external void enableiOES( GLenum target, GLuint index, diff --git a/lib/src/dom/oes_element_index_uint.dart b/lib/src/dom/oes_element_index_uint.dart index 5a15579c..6f09137a 100644 --- a/lib/src/dom/oes_element_index_uint.dart +++ b/lib/src/dom/oes_element_index_uint.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('OES_element_index_uint') -@staticInterop -class OES_element_index_uint {} +extension type OES_element_index_uint._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/oes_fbo_render_mipmap.dart b/lib/src/dom/oes_fbo_render_mipmap.dart index 90bd9307..82790c9c 100644 --- a/lib/src/dom/oes_fbo_render_mipmap.dart +++ b/lib/src/dom/oes_fbo_render_mipmap.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('OES_fbo_render_mipmap') -@staticInterop -class OES_fbo_render_mipmap {} +extension type OES_fbo_render_mipmap._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/oes_standard_derivatives.dart b/lib/src/dom/oes_standard_derivatives.dart index 3f54b664..1c6f1756 100644 --- a/lib/src/dom/oes_standard_derivatives.dart +++ b/lib/src/dom/oes_standard_derivatives.dart @@ -8,8 +8,6 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('OES_standard_derivatives') -@staticInterop -class OES_standard_derivatives { +extension type OES_standard_derivatives._(JSObject _) implements JSObject { external static GLenum get FRAGMENT_SHADER_DERIVATIVE_HINT_OES; } diff --git a/lib/src/dom/oes_texture_float.dart b/lib/src/dom/oes_texture_float.dart index 96c0ba49..360c2304 100644 --- a/lib/src/dom/oes_texture_float.dart +++ b/lib/src/dom/oes_texture_float.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('OES_texture_float') -@staticInterop -class OES_texture_float {} +extension type OES_texture_float._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/oes_texture_float_linear.dart b/lib/src/dom/oes_texture_float_linear.dart index 3f0354d7..771f27dd 100644 --- a/lib/src/dom/oes_texture_float_linear.dart +++ b/lib/src/dom/oes_texture_float_linear.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('OES_texture_float_linear') -@staticInterop -class OES_texture_float_linear {} +extension type OES_texture_float_linear._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/oes_texture_half_float.dart b/lib/src/dom/oes_texture_half_float.dart index f36d60eb..5cd74fdc 100644 --- a/lib/src/dom/oes_texture_half_float.dart +++ b/lib/src/dom/oes_texture_half_float.dart @@ -8,8 +8,6 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('OES_texture_half_float') -@staticInterop -class OES_texture_half_float { +extension type OES_texture_half_float._(JSObject _) implements JSObject { external static GLenum get HALF_FLOAT_OES; } diff --git a/lib/src/dom/oes_texture_half_float_linear.dart b/lib/src/dom/oes_texture_half_float_linear.dart index 023443a7..74a6573b 100644 --- a/lib/src/dom/oes_texture_half_float_linear.dart +++ b/lib/src/dom/oes_texture_half_float_linear.dart @@ -6,6 +6,5 @@ import 'dart:js_interop'; -@JS('OES_texture_half_float_linear') -@staticInterop -class OES_texture_half_float_linear {} +extension type OES_texture_half_float_linear._(JSObject _) + implements JSObject {} diff --git a/lib/src/dom/oes_vertex_array_object.dart b/lib/src/dom/oes_vertex_array_object.dart index bcf2a9ce..b1121161 100644 --- a/lib/src/dom/oes_vertex_array_object.dart +++ b/lib/src/dom/oes_vertex_array_object.dart @@ -8,17 +8,10 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WebGLVertexArrayObjectOES') -@staticInterop -class WebGLVertexArrayObjectOES implements WebGLObject {} - -@JS('OES_vertex_array_object') -@staticInterop -class OES_vertex_array_object { +extension type WebGLVertexArrayObjectOES._(JSObject _) + implements WebGLObject, JSObject {} +extension type OES_vertex_array_object._(JSObject _) implements JSObject { external static GLenum get VERTEX_ARRAY_BINDING_OES; -} - -extension OESVertexArrayObjectExtension on OES_vertex_array_object { external WebGLVertexArrayObjectOES? createVertexArrayOES(); external void deleteVertexArrayOES(WebGLVertexArrayObjectOES? arrayObject); external GLboolean isVertexArrayOES(WebGLVertexArrayObjectOES? arrayObject); diff --git a/lib/src/dom/orientation_event.dart b/lib/src/dom/orientation_event.dart index 42483a0b..a3b5e407 100644 --- a/lib/src/dom/orientation_event.dart +++ b/lib/src/dom/orientation_event.dart @@ -8,37 +8,27 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('DeviceOrientationEvent') -@staticInterop -class DeviceOrientationEvent implements Event { +extension type DeviceOrientationEvent._(JSObject _) implements Event, JSObject { external factory DeviceOrientationEvent( String type, [ DeviceOrientationEventInit eventInitDict, ]); external static JSPromise requestPermission(); -} - -extension DeviceOrientationEventExtension on DeviceOrientationEvent { external num? get alpha; external num? get beta; external num? get gamma; external bool get absolute; } - -@JS() -@staticInterop -@anonymous -class DeviceOrientationEventInit implements EventInit { +extension type DeviceOrientationEventInit._(JSObject _) + implements EventInit, JSObject { external factory DeviceOrientationEventInit({ num? alpha, num? beta, num? gamma, bool absolute, }); -} -extension DeviceOrientationEventInitExtension on DeviceOrientationEventInit { external set alpha(num? value); external num? get alpha; external set beta(num? value); @@ -48,60 +38,36 @@ extension DeviceOrientationEventInitExtension on DeviceOrientationEventInit { external set absolute(bool value); external bool get absolute; } - -@JS('DeviceMotionEventAcceleration') -@staticInterop -class DeviceMotionEventAcceleration {} - -extension DeviceMotionEventAccelerationExtension - on DeviceMotionEventAcceleration { +extension type DeviceMotionEventAcceleration._(JSObject _) implements JSObject { external num? get x; external num? get y; external num? get z; } - -@JS('DeviceMotionEventRotationRate') -@staticInterop -class DeviceMotionEventRotationRate {} - -extension DeviceMotionEventRotationRateExtension - on DeviceMotionEventRotationRate { +extension type DeviceMotionEventRotationRate._(JSObject _) implements JSObject { external num? get alpha; external num? get beta; external num? get gamma; } - -@JS('DeviceMotionEvent') -@staticInterop -class DeviceMotionEvent implements Event { +extension type DeviceMotionEvent._(JSObject _) implements Event, JSObject { external factory DeviceMotionEvent( String type, [ DeviceMotionEventInit eventInitDict, ]); external static JSPromise requestPermission(); -} - -extension DeviceMotionEventExtension on DeviceMotionEvent { external DeviceMotionEventAcceleration? get acceleration; external DeviceMotionEventAcceleration? get accelerationIncludingGravity; external DeviceMotionEventRotationRate? get rotationRate; external num get interval; } - -@JS() -@staticInterop -@anonymous -class DeviceMotionEventAccelerationInit { +extension type DeviceMotionEventAccelerationInit._(JSObject _) + implements JSObject { external factory DeviceMotionEventAccelerationInit({ num? x, num? y, num? z, }); -} -extension DeviceMotionEventAccelerationInitExtension - on DeviceMotionEventAccelerationInit { external set x(num? value); external num? get x; external set y(num? value); @@ -109,20 +75,14 @@ extension DeviceMotionEventAccelerationInitExtension external set z(num? value); external num? get z; } - -@JS() -@staticInterop -@anonymous -class DeviceMotionEventRotationRateInit { +extension type DeviceMotionEventRotationRateInit._(JSObject _) + implements JSObject { external factory DeviceMotionEventRotationRateInit({ num? alpha, num? beta, num? gamma, }); -} -extension DeviceMotionEventRotationRateInitExtension - on DeviceMotionEventRotationRateInit { external set alpha(num? value); external num? get alpha; external set beta(num? value); @@ -130,20 +90,15 @@ extension DeviceMotionEventRotationRateInitExtension external set gamma(num? value); external num? get gamma; } - -@JS() -@staticInterop -@anonymous -class DeviceMotionEventInit implements EventInit { +extension type DeviceMotionEventInit._(JSObject _) + implements EventInit, JSObject { external factory DeviceMotionEventInit({ DeviceMotionEventAccelerationInit acceleration, DeviceMotionEventAccelerationInit accelerationIncludingGravity, DeviceMotionEventRotationRateInit rotationRate, num interval, }); -} -extension DeviceMotionEventInitExtension on DeviceMotionEventInit { external set acceleration(DeviceMotionEventAccelerationInit value); external DeviceMotionEventAccelerationInit get acceleration; external set accelerationIncludingGravity( diff --git a/lib/src/dom/orientation_sensor.dart b/lib/src/dom/orientation_sensor.dart index 21008de5..1fd227e1 100644 --- a/lib/src/dom/orientation_sensor.dart +++ b/lib/src/dom/orientation_sensor.dart @@ -10,61 +10,37 @@ import 'generic_sensor.dart'; typedef RotationMatrixType = JSObject; typedef OrientationSensorLocalCoordinateSystem = String; - -@JS('OrientationSensor') -@staticInterop -class OrientationSensor implements Sensor {} - -extension OrientationSensorExtension on OrientationSensor { +extension type OrientationSensor._(JSObject _) implements Sensor, JSObject { external void populateMatrix(RotationMatrixType targetMatrix); external JSArray? get quaternion; } - -@JS() -@staticInterop -@anonymous -class OrientationSensorOptions implements SensorOptions { +extension type OrientationSensorOptions._(JSObject _) + implements SensorOptions, JSObject { external factory OrientationSensorOptions( {OrientationSensorLocalCoordinateSystem referenceFrame}); -} -extension OrientationSensorOptionsExtension on OrientationSensorOptions { external set referenceFrame(OrientationSensorLocalCoordinateSystem value); external OrientationSensorLocalCoordinateSystem get referenceFrame; } - -@JS('AbsoluteOrientationSensor') -@staticInterop -class AbsoluteOrientationSensor implements OrientationSensor { +extension type AbsoluteOrientationSensor._(JSObject _) + implements OrientationSensor, JSObject { external factory AbsoluteOrientationSensor( [OrientationSensorOptions sensorOptions]); } - -@JS('RelativeOrientationSensor') -@staticInterop -class RelativeOrientationSensor implements OrientationSensor { +extension type RelativeOrientationSensor._(JSObject _) + implements OrientationSensor, JSObject { external factory RelativeOrientationSensor( [OrientationSensorOptions sensorOptions]); } - -@JS() -@staticInterop -@anonymous -class AbsoluteOrientationReadingValues { +extension type AbsoluteOrientationReadingValues._(JSObject _) + implements JSObject { external factory AbsoluteOrientationReadingValues( {required JSArray? quaternion}); -} -extension AbsoluteOrientationReadingValuesExtension - on AbsoluteOrientationReadingValues { external set quaternion(JSArray? value); external JSArray? get quaternion; } - -@JS() -@staticInterop -@anonymous -class RelativeOrientationReadingValues - implements AbsoluteOrientationReadingValues { +extension type RelativeOrientationReadingValues._(JSObject _) + implements AbsoluteOrientationReadingValues, JSObject { external factory RelativeOrientationReadingValues(); } diff --git a/lib/src/dom/ovr_multiview2.dart b/lib/src/dom/ovr_multiview2.dart index 446bb00d..1f13c602 100644 --- a/lib/src/dom/ovr_multiview2.dart +++ b/lib/src/dom/ovr_multiview2.dart @@ -8,16 +8,11 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('OVR_multiview2') -@staticInterop -class OVR_multiview2 { +extension type OVR_multiview2._(JSObject _) implements JSObject { external static GLenum get FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR; external static GLenum get FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR; external static GLenum get MAX_VIEWS_OVR; external static GLenum get FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR; -} - -extension OVRMultiview2Extension on OVR_multiview2 { external void framebufferTextureMultiviewOVR( GLenum target, GLenum attachment, diff --git a/lib/src/dom/paint_timing.dart b/lib/src/dom/paint_timing.dart index ec764733..72d2bbcd 100644 --- a/lib/src/dom/paint_timing.dart +++ b/lib/src/dom/paint_timing.dart @@ -8,6 +8,5 @@ import 'dart:js_interop'; import 'performance_timeline.dart'; -@JS('PerformancePaintTiming') -@staticInterop -class PerformancePaintTiming implements PerformanceEntry {} +extension type PerformancePaintTiming._(JSObject _) + implements PerformanceEntry, JSObject {} diff --git a/lib/src/dom/payment_handler.dart b/lib/src/dom/payment_handler.dart index 9e6a943a..f834c039 100644 --- a/lib/src/dom/payment_handler.dart +++ b/lib/src/dom/payment_handler.dart @@ -11,31 +11,18 @@ import 'service_workers.dart'; typedef PaymentDelegation = String; typedef PaymentShippingType = String; - -@JS('PaymentManager') -@staticInterop -class PaymentManager {} - -extension PaymentManagerExtension on PaymentManager { +extension type PaymentManager._(JSObject _) implements JSObject { external JSPromise enableDelegations(JSArray delegations); external set userHint(String value); external String get userHint; } - -@JS('CanMakePaymentEvent') -@staticInterop -class CanMakePaymentEvent implements ExtendableEvent { +extension type CanMakePaymentEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory CanMakePaymentEvent(String type); -} -extension CanMakePaymentEventExtension on CanMakePaymentEvent { external void respondWith(JSPromise canMakePaymentResponse); } - -@JS() -@staticInterop -@anonymous -class PaymentRequestDetailsUpdate { +extension type PaymentRequestDetailsUpdate._(JSObject _) implements JSObject { external factory PaymentRequestDetailsUpdate({ String error, PaymentCurrencyAmount total, @@ -44,9 +31,7 @@ class PaymentRequestDetailsUpdate { JSObject paymentMethodErrors, AddressErrors shippingAddressErrors, }); -} -extension PaymentRequestDetailsUpdateExtension on PaymentRequestDetailsUpdate { external set error(String value); external String get error; external set total(PaymentCurrencyAmount value); @@ -60,17 +45,13 @@ extension PaymentRequestDetailsUpdateExtension on PaymentRequestDetailsUpdate { external set shippingAddressErrors(AddressErrors value); external AddressErrors get shippingAddressErrors; } - -@JS('PaymentRequestEvent') -@staticInterop -class PaymentRequestEvent implements ExtendableEvent { +extension type PaymentRequestEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory PaymentRequestEvent( String type, [ PaymentRequestEventInit eventInitDict, ]); -} -extension PaymentRequestEventExtension on PaymentRequestEvent { external JSPromise openWindow(String url); external JSPromise changePaymentMethod( String methodName, [ @@ -88,11 +69,8 @@ extension PaymentRequestEventExtension on PaymentRequestEvent { external JSObject? get paymentOptions; external JSArray? get shippingOptions; } - -@JS() -@staticInterop -@anonymous -class PaymentRequestEventInit implements ExtendableEventInit { +extension type PaymentRequestEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory PaymentRequestEventInit({ String topOrigin, String paymentRequestOrigin, @@ -103,9 +81,7 @@ class PaymentRequestEventInit implements ExtendableEventInit { PaymentOptions paymentOptions, JSArray shippingOptions, }); -} -extension PaymentRequestEventInitExtension on PaymentRequestEventInit { external set topOrigin(String value); external String get topOrigin; external set paymentRequestOrigin(String value); @@ -123,11 +99,7 @@ extension PaymentRequestEventInitExtension on PaymentRequestEventInit { external set shippingOptions(JSArray value); external JSArray get shippingOptions; } - -@JS() -@staticInterop -@anonymous -class PaymentHandlerResponse { +extension type PaymentHandlerResponse._(JSObject _) implements JSObject { external factory PaymentHandlerResponse({ String methodName, JSObject details, @@ -137,9 +109,7 @@ class PaymentHandlerResponse { AddressInit shippingAddress, String? shippingOption, }); -} -extension PaymentHandlerResponseExtension on PaymentHandlerResponse { external set methodName(String value); external String get methodName; external set details(JSObject value); @@ -155,11 +125,7 @@ extension PaymentHandlerResponseExtension on PaymentHandlerResponse { external set shippingOption(String? value); external String? get shippingOption; } - -@JS() -@staticInterop -@anonymous -class AddressInit { +extension type AddressInit._(JSObject _) implements JSObject { external factory AddressInit({ String country, JSArray addressLine, @@ -172,9 +138,7 @@ class AddressInit { String recipient, String phone, }); -} -extension AddressInitExtension on AddressInit { external set country(String value); external String get country; external set addressLine(JSArray value); @@ -196,11 +160,7 @@ extension AddressInitExtension on AddressInit { external set phone(String value); external String get phone; } - -@JS() -@staticInterop -@anonymous -class PaymentOptions { +extension type PaymentOptions._(JSObject _) implements JSObject { external factory PaymentOptions({ bool requestPayerName, bool requestBillingAddress, @@ -209,9 +169,7 @@ class PaymentOptions { bool requestShipping, PaymentShippingType shippingType, }); -} -extension PaymentOptionsExtension on PaymentOptions { external set requestPayerName(bool value); external bool get requestPayerName; external set requestBillingAddress(bool value); @@ -225,20 +183,14 @@ extension PaymentOptionsExtension on PaymentOptions { external set shippingType(PaymentShippingType value); external PaymentShippingType get shippingType; } - -@JS() -@staticInterop -@anonymous -class PaymentShippingOption { +extension type PaymentShippingOption._(JSObject _) implements JSObject { external factory PaymentShippingOption({ required String id, required String label, required PaymentCurrencyAmount amount, bool selected, }); -} -extension PaymentShippingOptionExtension on PaymentShippingOption { external set id(String value); external String get id; external set label(String value); @@ -248,11 +200,7 @@ extension PaymentShippingOptionExtension on PaymentShippingOption { external set selected(bool value); external bool get selected; } - -@JS() -@staticInterop -@anonymous -class AddressErrors { +extension type AddressErrors._(JSObject _) implements JSObject { external factory AddressErrors({ String addressLine, String city, @@ -265,9 +213,7 @@ class AddressErrors { String region, String sortingCode, }); -} -extension AddressErrorsExtension on AddressErrors { external set addressLine(String value); external String get addressLine; external set city(String value); diff --git a/lib/src/dom/payment_request.dart b/lib/src/dom/payment_request.dart index 60a2b202..e84c9aca 100644 --- a/lib/src/dom/payment_request.dart +++ b/lib/src/dom/payment_request.dart @@ -10,19 +10,13 @@ import 'dom.dart'; import 'html.dart'; typedef PaymentComplete = String; - -@JS('PaymentRequest') -@staticInterop -class PaymentRequest implements EventTarget { +extension type PaymentRequest._(JSObject _) implements EventTarget, JSObject { external factory PaymentRequest( JSArray methodData, PaymentDetailsInit details, ); external static JSPromise isSecurePaymentConfirmationAvailable(); -} - -extension PaymentRequestExtension on PaymentRequest { external JSPromise show([JSPromise detailsPromise]); external JSPromise abort(); external JSPromise canMakePayment(); @@ -30,105 +24,71 @@ extension PaymentRequestExtension on PaymentRequest { external set onpaymentmethodchange(EventHandler value); external EventHandler get onpaymentmethodchange; } - -@JS() -@staticInterop -@anonymous -class PaymentMethodData { +extension type PaymentMethodData._(JSObject _) implements JSObject { external factory PaymentMethodData({ required String supportedMethods, JSObject data, }); -} -extension PaymentMethodDataExtension on PaymentMethodData { external set supportedMethods(String value); external String get supportedMethods; external set data(JSObject value); external JSObject get data; } - -@JS() -@staticInterop -@anonymous -class PaymentCurrencyAmount { +extension type PaymentCurrencyAmount._(JSObject _) implements JSObject { external factory PaymentCurrencyAmount({ required String currency, required String value, }); -} -extension PaymentCurrencyAmountExtension on PaymentCurrencyAmount { external set currency(String value); external String get currency; external set value(String value); external String get value; } - -@JS() -@staticInterop -@anonymous -class PaymentDetailsBase { +extension type PaymentDetailsBase._(JSObject _) implements JSObject { external factory PaymentDetailsBase({ JSArray displayItems, JSArray modifiers, }); -} -extension PaymentDetailsBaseExtension on PaymentDetailsBase { external set displayItems(JSArray value); external JSArray get displayItems; external set modifiers(JSArray value); external JSArray get modifiers; } - -@JS() -@staticInterop -@anonymous -class PaymentDetailsInit implements PaymentDetailsBase { +extension type PaymentDetailsInit._(JSObject _) + implements PaymentDetailsBase, JSObject { external factory PaymentDetailsInit({ String id, required PaymentItem total, }); -} -extension PaymentDetailsInitExtension on PaymentDetailsInit { external set id(String value); external String get id; external set total(PaymentItem value); external PaymentItem get total; } - -@JS() -@staticInterop -@anonymous -class PaymentDetailsUpdate implements PaymentDetailsBase { +extension type PaymentDetailsUpdate._(JSObject _) + implements PaymentDetailsBase, JSObject { external factory PaymentDetailsUpdate({ PaymentItem total, JSObject paymentMethodErrors, }); -} -extension PaymentDetailsUpdateExtension on PaymentDetailsUpdate { external set total(PaymentItem value); external PaymentItem get total; external set paymentMethodErrors(JSObject value); external JSObject get paymentMethodErrors; } - -@JS() -@staticInterop -@anonymous -class PaymentDetailsModifier { +extension type PaymentDetailsModifier._(JSObject _) implements JSObject { external factory PaymentDetailsModifier({ required String supportedMethods, PaymentItem total, JSArray additionalDisplayItems, JSObject data, }); -} -extension PaymentDetailsModifierExtension on PaymentDetailsModifier { external set supportedMethods(String value); external String get supportedMethods; external set total(PaymentItem value); @@ -138,19 +98,13 @@ extension PaymentDetailsModifierExtension on PaymentDetailsModifier { external set data(JSObject value); external JSObject get data; } - -@JS() -@staticInterop -@anonymous -class PaymentItem { +extension type PaymentItem._(JSObject _) implements JSObject { external factory PaymentItem({ required String label, required PaymentCurrencyAmount amount, bool pending, }); -} -extension PaymentItemExtension on PaymentItem { external set label(String value); external String get label; external set amount(PaymentCurrencyAmount value); @@ -158,24 +112,13 @@ extension PaymentItemExtension on PaymentItem { external set pending(bool value); external bool get pending; } - -@JS() -@staticInterop -@anonymous -class PaymentCompleteDetails { +extension type PaymentCompleteDetails._(JSObject _) implements JSObject { external factory PaymentCompleteDetails({JSObject? data}); -} -extension PaymentCompleteDetailsExtension on PaymentCompleteDetails { external set data(JSObject? value); external JSObject? get data; } - -@JS('PaymentResponse') -@staticInterop -class PaymentResponse implements EventTarget {} - -extension PaymentResponseExtension on PaymentResponse { +extension type PaymentResponse._(JSObject _) implements EventTarget, JSObject { external JSObject toJSON(); external JSPromise complete([ PaymentComplete result, @@ -186,72 +129,49 @@ extension PaymentResponseExtension on PaymentResponse { external String get methodName; external JSObject get details; } - -@JS() -@staticInterop -@anonymous -class PaymentValidationErrors { +extension type PaymentValidationErrors._(JSObject _) implements JSObject { external factory PaymentValidationErrors({ String error, JSObject paymentMethod, }); -} -extension PaymentValidationErrorsExtension on PaymentValidationErrors { external set error(String value); external String get error; external set paymentMethod(JSObject value); external JSObject get paymentMethod; } - -@JS('PaymentMethodChangeEvent') -@staticInterop -class PaymentMethodChangeEvent implements PaymentRequestUpdateEvent { +extension type PaymentMethodChangeEvent._(JSObject _) + implements PaymentRequestUpdateEvent, JSObject { external factory PaymentMethodChangeEvent( String type, [ PaymentMethodChangeEventInit eventInitDict, ]); -} -extension PaymentMethodChangeEventExtension on PaymentMethodChangeEvent { external String get methodName; external JSObject? get methodDetails; } - -@JS() -@staticInterop -@anonymous -class PaymentMethodChangeEventInit implements PaymentRequestUpdateEventInit { +extension type PaymentMethodChangeEventInit._(JSObject _) + implements PaymentRequestUpdateEventInit, JSObject { external factory PaymentMethodChangeEventInit({ String methodName, JSObject? methodDetails, }); -} -extension PaymentMethodChangeEventInitExtension - on PaymentMethodChangeEventInit { external set methodName(String value); external String get methodName; external set methodDetails(JSObject? value); external JSObject? get methodDetails; } - -@JS('PaymentRequestUpdateEvent') -@staticInterop -class PaymentRequestUpdateEvent implements Event { +extension type PaymentRequestUpdateEvent._(JSObject _) + implements Event, JSObject { external factory PaymentRequestUpdateEvent( String type, [ PaymentRequestUpdateEventInit eventInitDict, ]); -} -extension PaymentRequestUpdateEventExtension on PaymentRequestUpdateEvent { external void updateWith(JSPromise detailsPromise); } - -@JS() -@staticInterop -@anonymous -class PaymentRequestUpdateEventInit implements EventInit { +extension type PaymentRequestUpdateEventInit._(JSObject _) + implements EventInit, JSObject { external factory PaymentRequestUpdateEventInit(); } diff --git a/lib/src/dom/performance_measure_memory.dart b/lib/src/dom/performance_measure_memory.dart index 13860de2..52268a99 100644 --- a/lib/src/dom/performance_measure_memory.dart +++ b/lib/src/dom/performance_measure_memory.dart @@ -6,35 +6,24 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class MemoryMeasurement { +extension type MemoryMeasurement._(JSObject _) implements JSObject { external factory MemoryMeasurement({ int bytes, JSArray breakdown, }); -} -extension MemoryMeasurementExtension on MemoryMeasurement { external set bytes(int value); external int get bytes; external set breakdown(JSArray value); external JSArray get breakdown; } - -@JS() -@staticInterop -@anonymous -class MemoryBreakdownEntry { +extension type MemoryBreakdownEntry._(JSObject _) implements JSObject { external factory MemoryBreakdownEntry({ int bytes, JSArray attribution, JSArray types, }); -} -extension MemoryBreakdownEntryExtension on MemoryBreakdownEntry { external set bytes(int value); external int get bytes; external set attribution(JSArray value); @@ -42,19 +31,13 @@ extension MemoryBreakdownEntryExtension on MemoryBreakdownEntry { external set types(JSArray value); external JSArray get types; } - -@JS() -@staticInterop -@anonymous -class MemoryAttribution { +extension type MemoryAttribution._(JSObject _) implements JSObject { external factory MemoryAttribution({ String url, MemoryAttributionContainer container, String scope, }); -} -extension MemoryAttributionExtension on MemoryAttribution { external set url(String value); external String get url; external set container(MemoryAttributionContainer value); @@ -62,18 +45,12 @@ extension MemoryAttributionExtension on MemoryAttribution { external set scope(String value); external String get scope; } - -@JS() -@staticInterop -@anonymous -class MemoryAttributionContainer { +extension type MemoryAttributionContainer._(JSObject _) implements JSObject { external factory MemoryAttributionContainer({ String id, String src, }); -} -extension MemoryAttributionContainerExtension on MemoryAttributionContainer { external set id(String value); external String get id; external set src(String value); diff --git a/lib/src/dom/performance_timeline.dart b/lib/src/dom/performance_timeline.dart index 40aa9701..4bb9277f 100644 --- a/lib/src/dom/performance_timeline.dart +++ b/lib/src/dom/performance_timeline.dart @@ -10,60 +10,37 @@ import 'hr_time.dart'; typedef PerformanceEntryList = JSArray; typedef PerformanceObserverCallback = JSFunction; - -@JS('PerformanceEntry') -@staticInterop -class PerformanceEntry {} - -extension PerformanceEntryExtension on PerformanceEntry { +extension type PerformanceEntry._(JSObject _) implements JSObject { external JSObject toJSON(); external String get name; external String get entryType; external DOMHighResTimeStamp get startTime; external DOMHighResTimeStamp get duration; } - -@JS('PerformanceObserver') -@staticInterop -class PerformanceObserver { +extension type PerformanceObserver._(JSObject _) implements JSObject { external factory PerformanceObserver(PerformanceObserverCallback callback); external static JSArray get supportedEntryTypes; -} - -extension PerformanceObserverExtension on PerformanceObserver { external void observe([PerformanceObserverInit options]); external void disconnect(); external PerformanceEntryList takeRecords(); } - -@JS() -@staticInterop -@anonymous -class PerformanceObserverCallbackOptions { +extension type PerformanceObserverCallbackOptions._(JSObject _) + implements JSObject { external factory PerformanceObserverCallbackOptions( {int droppedEntriesCount}); -} -extension PerformanceObserverCallbackOptionsExtension - on PerformanceObserverCallbackOptions { external set droppedEntriesCount(int value); external int get droppedEntriesCount; } - -@JS() -@staticInterop -@anonymous -class PerformanceObserverInit { +extension type PerformanceObserverInit._(JSObject _) implements JSObject { external factory PerformanceObserverInit({ DOMHighResTimeStamp durationThreshold, JSArray entryTypes, String type, bool buffered, }); -} -extension PerformanceObserverInitExtension on PerformanceObserverInit { external set durationThreshold(DOMHighResTimeStamp value); external DOMHighResTimeStamp get durationThreshold; external set entryTypes(JSArray value); @@ -73,13 +50,7 @@ extension PerformanceObserverInitExtension on PerformanceObserverInit { external set buffered(bool value); external bool get buffered; } - -@JS('PerformanceObserverEntryList') -@staticInterop -class PerformanceObserverEntryList {} - -extension PerformanceObserverEntryListExtension - on PerformanceObserverEntryList { +extension type PerformanceObserverEntryList._(JSObject _) implements JSObject { external PerformanceEntryList getEntries(); external PerformanceEntryList getEntriesByType(String type); external PerformanceEntryList getEntriesByName( diff --git a/lib/src/dom/periodic_background_sync.dart b/lib/src/dom/periodic_background_sync.dart index 3c513ada..9afd1464 100644 --- a/lib/src/dom/periodic_background_sync.dart +++ b/lib/src/dom/periodic_background_sync.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'service_workers.dart'; -@JS('PeriodicSyncManager') -@staticInterop -class PeriodicSyncManager {} - -extension PeriodicSyncManagerExtension on PeriodicSyncManager { +extension type PeriodicSyncManager._(JSObject _) implements JSObject { external JSPromise register( String tag, [ BackgroundSyncOptions options, @@ -20,40 +16,25 @@ extension PeriodicSyncManagerExtension on PeriodicSyncManager { external JSPromise getTags(); external JSPromise unregister(String tag); } - -@JS() -@staticInterop -@anonymous -class BackgroundSyncOptions { +extension type BackgroundSyncOptions._(JSObject _) implements JSObject { external factory BackgroundSyncOptions({int minInterval}); -} -extension BackgroundSyncOptionsExtension on BackgroundSyncOptions { external set minInterval(int value); external int get minInterval; } - -@JS() -@staticInterop -@anonymous -class PeriodicSyncEventInit implements ExtendableEventInit { +extension type PeriodicSyncEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory PeriodicSyncEventInit({required String tag}); -} -extension PeriodicSyncEventInitExtension on PeriodicSyncEventInit { external set tag(String value); external String get tag; } - -@JS('PeriodicSyncEvent') -@staticInterop -class PeriodicSyncEvent implements ExtendableEvent { +extension type PeriodicSyncEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory PeriodicSyncEvent( String type, PeriodicSyncEventInit init, ); -} -extension PeriodicSyncEventExtension on PeriodicSyncEvent { external String get tag; } diff --git a/lib/src/dom/permissions.dart b/lib/src/dom/permissions.dart index 7d131d6a..6826e044 100644 --- a/lib/src/dom/permissions.dart +++ b/lib/src/dom/permissions.dart @@ -10,51 +10,29 @@ import 'dom.dart'; import 'html.dart'; typedef PermissionState = String; - -@JS('Permissions') -@staticInterop -class Permissions {} - -extension PermissionsExtension on Permissions { +extension type Permissions._(JSObject _) implements JSObject { external JSPromise request(JSObject permissionDesc); external JSPromise revoke(JSObject permissionDesc); external JSPromise query(JSObject permissionDesc); } - -@JS() -@staticInterop -@anonymous -class PermissionDescriptor { +extension type PermissionDescriptor._(JSObject _) implements JSObject { external factory PermissionDescriptor({required String name}); -} -extension PermissionDescriptorExtension on PermissionDescriptor { external set name(String value); external String get name; } - -@JS('PermissionStatus') -@staticInterop -class PermissionStatus implements EventTarget {} - -extension PermissionStatusExtension on PermissionStatus { +extension type PermissionStatus._(JSObject _) implements EventTarget, JSObject { external PermissionState get state; external String get name; external set onchange(EventHandler value); external EventHandler get onchange; } - -@JS() -@staticInterop -@anonymous -class PermissionSetParameters { +extension type PermissionSetParameters._(JSObject _) implements JSObject { external factory PermissionSetParameters({ required PermissionDescriptor descriptor, required PermissionState state, }); -} -extension PermissionSetParametersExtension on PermissionSetParameters { external set descriptor(PermissionDescriptor value); external PermissionDescriptor get descriptor; external set state(PermissionState value); diff --git a/lib/src/dom/permissions_policy.dart b/lib/src/dom/permissions_policy.dart index 65d07f19..cf961f7d 100644 --- a/lib/src/dom/permissions_policy.dart +++ b/lib/src/dom/permissions_policy.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'reporting.dart'; -@JS('PermissionsPolicy') -@staticInterop -class PermissionsPolicy {} - -extension PermissionsPolicyExtension on PermissionsPolicy { +extension type PermissionsPolicy._(JSObject _) implements JSObject { external bool allowsFeature( String feature, [ String origin, @@ -21,13 +17,8 @@ extension PermissionsPolicyExtension on PermissionsPolicy { external JSArray allowedFeatures(); external JSArray getAllowlistForFeature(String feature); } - -@JS('PermissionsPolicyViolationReportBody') -@staticInterop -class PermissionsPolicyViolationReportBody implements ReportBody {} - -extension PermissionsPolicyViolationReportBodyExtension - on PermissionsPolicyViolationReportBody { +extension type PermissionsPolicyViolationReportBody._(JSObject _) + implements ReportBody, JSObject { external String get featureId; external String? get sourceFile; external int? get lineNumber; diff --git a/lib/src/dom/picture_in_picture.dart b/lib/src/dom/picture_in_picture.dart index 9cde866a..a3797ddc 100644 --- a/lib/src/dom/picture_in_picture.dart +++ b/lib/src/dom/picture_in_picture.dart @@ -9,39 +9,26 @@ import 'dart:js_interop'; import 'dom.dart'; import 'html.dart'; -@JS('PictureInPictureWindow') -@staticInterop -class PictureInPictureWindow implements EventTarget {} - -extension PictureInPictureWindowExtension on PictureInPictureWindow { +extension type PictureInPictureWindow._(JSObject _) + implements EventTarget, JSObject { external int get width; external int get height; external set onresize(EventHandler value); external EventHandler get onresize; } - -@JS('PictureInPictureEvent') -@staticInterop -class PictureInPictureEvent implements Event { +extension type PictureInPictureEvent._(JSObject _) implements Event, JSObject { external factory PictureInPictureEvent( String type, PictureInPictureEventInit eventInitDict, ); -} -extension PictureInPictureEventExtension on PictureInPictureEvent { external PictureInPictureWindow get pictureInPictureWindow; } - -@JS() -@staticInterop -@anonymous -class PictureInPictureEventInit implements EventInit { +extension type PictureInPictureEventInit._(JSObject _) + implements EventInit, JSObject { external factory PictureInPictureEventInit( {required PictureInPictureWindow pictureInPictureWindow}); -} -extension PictureInPictureEventInitExtension on PictureInPictureEventInit { external set pictureInPictureWindow(PictureInPictureWindow value); external PictureInPictureWindow get pictureInPictureWindow; } diff --git a/lib/src/dom/pointerevents.dart b/lib/src/dom/pointerevents.dart index 38845237..8ed28d28 100644 --- a/lib/src/dom/pointerevents.dart +++ b/lib/src/dom/pointerevents.dart @@ -8,10 +8,8 @@ import 'dart:js_interop'; import 'uievents.dart'; -@JS() -@staticInterop -@anonymous -class PointerEventInit implements MouseEventInit { +extension type PointerEventInit._(JSObject _) + implements MouseEventInit, JSObject { external factory PointerEventInit({ int pointerId, num width, @@ -28,9 +26,7 @@ class PointerEventInit implements MouseEventInit { JSArray coalescedEvents, JSArray predictedEvents, }); -} -extension PointerEventInitExtension on PointerEventInit { external set pointerId(int value); external int get pointerId; external set width(num value); @@ -60,17 +56,12 @@ extension PointerEventInitExtension on PointerEventInit { external set predictedEvents(JSArray value); external JSArray get predictedEvents; } - -@JS('PointerEvent') -@staticInterop -class PointerEvent implements MouseEvent { +extension type PointerEvent._(JSObject _) implements MouseEvent, JSObject { external factory PointerEvent( String type, [ PointerEventInit eventInitDict, ]); -} -extension PointerEventExtension on PointerEvent { external JSArray getCoalescedEvents(); external JSArray getPredictedEvents(); external int get pointerId; diff --git a/lib/src/dom/portals.dart b/lib/src/dom/portals.dart index ff88a1b0..e5b11401 100644 --- a/lib/src/dom/portals.dart +++ b/lib/src/dom/portals.dart @@ -9,13 +9,10 @@ import 'dart:js_interop'; import 'dom.dart'; import 'html.dart'; -@JS('HTMLPortalElement') -@staticInterop -class HTMLPortalElement implements HTMLElement { +extension type HTMLPortalElement._(JSObject _) + implements HTMLElement, JSObject { external factory HTMLPortalElement(); -} -extension HTMLPortalElementExtension on HTMLPortalElement { external JSPromise activate([PortalActivateOptions options]); external void postMessage( JSAny? message, [ @@ -30,24 +27,14 @@ extension HTMLPortalElementExtension on HTMLPortalElement { external set onmessageerror(EventHandler value); external EventHandler get onmessageerror; } - -@JS() -@staticInterop -@anonymous -class PortalActivateOptions implements StructuredSerializeOptions { +extension type PortalActivateOptions._(JSObject _) + implements StructuredSerializeOptions, JSObject { external factory PortalActivateOptions({JSAny? data}); -} -extension PortalActivateOptionsExtension on PortalActivateOptions { external set data(JSAny? value); external JSAny? get data; } - -@JS('PortalHost') -@staticInterop -class PortalHost implements EventTarget {} - -extension PortalHostExtension on PortalHost { +extension type PortalHost._(JSObject _) implements EventTarget, JSObject { external void postMessage( JSAny? message, [ StructuredSerializeOptions options, @@ -57,29 +44,19 @@ extension PortalHostExtension on PortalHost { external set onmessageerror(EventHandler value); external EventHandler get onmessageerror; } - -@JS('PortalActivateEvent') -@staticInterop -class PortalActivateEvent implements Event { +extension type PortalActivateEvent._(JSObject _) implements Event, JSObject { external factory PortalActivateEvent( String type, [ PortalActivateEventInit eventInitDict, ]); -} -extension PortalActivateEventExtension on PortalActivateEvent { external HTMLPortalElement adoptPredecessor(); external JSAny? get data; } - -@JS() -@staticInterop -@anonymous -class PortalActivateEventInit implements EventInit { +extension type PortalActivateEventInit._(JSObject _) + implements EventInit, JSObject { external factory PortalActivateEventInit({JSAny? data}); -} -extension PortalActivateEventInitExtension on PortalActivateEventInit { external set data(JSAny? value); external JSAny? get data; } diff --git a/lib/src/dom/presentation_api.dart b/lib/src/dom/presentation_api.dart index fba391b1..52283f3e 100644 --- a/lib/src/dom/presentation_api.dart +++ b/lib/src/dom/presentation_api.dart @@ -12,74 +12,46 @@ import 'websockets.dart'; typedef PresentationConnectionState = String; typedef PresentationConnectionCloseReason = String; - -@JS('Presentation') -@staticInterop -class Presentation {} - -extension PresentationExtension on Presentation { +extension type Presentation._(JSObject _) implements JSObject { external set defaultRequest(PresentationRequest? value); external PresentationRequest? get defaultRequest; external PresentationReceiver? get receiver; } - -@JS('PresentationRequest') -@staticInterop -class PresentationRequest implements EventTarget { +extension type PresentationRequest._(JSObject _) + implements EventTarget, JSObject { external factory PresentationRequest(JSAny urlOrUrls); -} -extension PresentationRequestExtension on PresentationRequest { external JSPromise start(); external JSPromise reconnect(String presentationId); external JSPromise getAvailability(); external set onconnectionavailable(EventHandler value); external EventHandler get onconnectionavailable; } - -@JS('PresentationAvailability') -@staticInterop -class PresentationAvailability implements EventTarget {} - -extension PresentationAvailabilityExtension on PresentationAvailability { +extension type PresentationAvailability._(JSObject _) + implements EventTarget, JSObject { external bool get value; external set onchange(EventHandler value); external EventHandler get onchange; } - -@JS('PresentationConnectionAvailableEvent') -@staticInterop -class PresentationConnectionAvailableEvent implements Event { +extension type PresentationConnectionAvailableEvent._(JSObject _) + implements Event, JSObject { external factory PresentationConnectionAvailableEvent( String type, PresentationConnectionAvailableEventInit eventInitDict, ); -} -extension PresentationConnectionAvailableEventExtension - on PresentationConnectionAvailableEvent { external PresentationConnection get connection; } - -@JS() -@staticInterop -@anonymous -class PresentationConnectionAvailableEventInit implements EventInit { +extension type PresentationConnectionAvailableEventInit._(JSObject _) + implements EventInit, JSObject { external factory PresentationConnectionAvailableEventInit( {required PresentationConnection connection}); -} -extension PresentationConnectionAvailableEventInitExtension - on PresentationConnectionAvailableEventInit { external set connection(PresentationConnection value); external PresentationConnection get connection; } - -@JS('PresentationConnection') -@staticInterop -class PresentationConnection implements EventTarget {} - -extension PresentationConnectionExtension on PresentationConnection { +extension type PresentationConnection._(JSObject _) + implements EventTarget, JSObject { external void close(); external void terminate(); external void send(JSAny dataOrMessage); @@ -97,53 +69,33 @@ extension PresentationConnectionExtension on PresentationConnection { external set onmessage(EventHandler value); external EventHandler get onmessage; } - -@JS('PresentationConnectionCloseEvent') -@staticInterop -class PresentationConnectionCloseEvent implements Event { +extension type PresentationConnectionCloseEvent._(JSObject _) + implements Event, JSObject { external factory PresentationConnectionCloseEvent( String type, PresentationConnectionCloseEventInit eventInitDict, ); -} -extension PresentationConnectionCloseEventExtension - on PresentationConnectionCloseEvent { external PresentationConnectionCloseReason get reason; external String get message; } - -@JS() -@staticInterop -@anonymous -class PresentationConnectionCloseEventInit implements EventInit { +extension type PresentationConnectionCloseEventInit._(JSObject _) + implements EventInit, JSObject { external factory PresentationConnectionCloseEventInit({ required PresentationConnectionCloseReason reason, String message, }); -} -extension PresentationConnectionCloseEventInitExtension - on PresentationConnectionCloseEventInit { external set reason(PresentationConnectionCloseReason value); external PresentationConnectionCloseReason get reason; external set message(String value); external String get message; } - -@JS('PresentationReceiver') -@staticInterop -class PresentationReceiver {} - -extension PresentationReceiverExtension on PresentationReceiver { +extension type PresentationReceiver._(JSObject _) implements JSObject { external JSPromise get connectionList; } - -@JS('PresentationConnectionList') -@staticInterop -class PresentationConnectionList implements EventTarget {} - -extension PresentationConnectionListExtension on PresentationConnectionList { +extension type PresentationConnectionList._(JSObject _) + implements EventTarget, JSObject { external JSArray get connections; external set onconnectionavailable(EventHandler value); external EventHandler get onconnectionavailable; diff --git a/lib/src/dom/private_network_access.dart b/lib/src/dom/private_network_access.dart index d09e2621..da64e842 100644 --- a/lib/src/dom/private_network_access.dart +++ b/lib/src/dom/private_network_access.dart @@ -9,16 +9,10 @@ import 'dart:js_interop'; import 'permissions.dart'; typedef RequestTargetAddressSpace = String; - -@JS() -@staticInterop -@anonymous -class PrivateNetworkAccessPermissionDescriptor implements PermissionDescriptor { +extension type PrivateNetworkAccessPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory PrivateNetworkAccessPermissionDescriptor({String id}); -} -extension PrivateNetworkAccessPermissionDescriptorExtension - on PrivateNetworkAccessPermissionDescriptor { external set id(String value); external String get id; } diff --git a/lib/src/dom/proximity.dart b/lib/src/dom/proximity.dart index 60a29794..8f2d39d7 100644 --- a/lib/src/dom/proximity.dart +++ b/lib/src/dom/proximity.dart @@ -8,30 +8,20 @@ import 'dart:js_interop'; import 'generic_sensor.dart'; -@JS('ProximitySensor') -@staticInterop -class ProximitySensor implements Sensor { +extension type ProximitySensor._(JSObject _) implements Sensor, JSObject { external factory ProximitySensor([SensorOptions sensorOptions]); -} -extension ProximitySensorExtension on ProximitySensor { external num? get distance; external num? get max; external bool? get near; } - -@JS() -@staticInterop -@anonymous -class ProximityReadingValues { +extension type ProximityReadingValues._(JSObject _) implements JSObject { external factory ProximityReadingValues({ required num? distance, required num? max, required bool? near, }); -} -extension ProximityReadingValuesExtension on ProximityReadingValues { external set distance(num? value); external num? get distance; external set max(num? value); diff --git a/lib/src/dom/push_api.dart b/lib/src/dom/push_api.dart index 7d04605b..eb057478 100644 --- a/lib/src/dom/push_api.dart +++ b/lib/src/dom/push_api.dart @@ -13,62 +13,35 @@ import 'service_workers.dart'; typedef PushMessageDataInit = JSAny; typedef PushEncryptionKeyName = String; - -@JS() -@staticInterop -@anonymous -class PushPermissionDescriptor implements PermissionDescriptor { +extension type PushPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory PushPermissionDescriptor({bool userVisibleOnly}); -} -extension PushPermissionDescriptorExtension on PushPermissionDescriptor { external set userVisibleOnly(bool value); external bool get userVisibleOnly; } - -@JS('PushManager') -@staticInterop -class PushManager { +extension type PushManager._(JSObject _) implements JSObject { external static JSArray get supportedContentEncodings; -} - -extension PushManagerExtension on PushManager { external JSPromise subscribe([PushSubscriptionOptionsInit options]); external JSPromise getSubscription(); external JSPromise permissionState([PushSubscriptionOptionsInit options]); } - -@JS('PushSubscriptionOptions') -@staticInterop -class PushSubscriptionOptions {} - -extension PushSubscriptionOptionsExtension on PushSubscriptionOptions { +extension type PushSubscriptionOptions._(JSObject _) implements JSObject { external bool get userVisibleOnly; external JSArrayBuffer? get applicationServerKey; } - -@JS() -@staticInterop -@anonymous -class PushSubscriptionOptionsInit { +extension type PushSubscriptionOptionsInit._(JSObject _) implements JSObject { external factory PushSubscriptionOptionsInit({ bool userVisibleOnly, JSAny? applicationServerKey, }); -} -extension PushSubscriptionOptionsInitExtension on PushSubscriptionOptionsInit { external set userVisibleOnly(bool value); external bool get userVisibleOnly; external set applicationServerKey(JSAny? value); external JSAny? get applicationServerKey; } - -@JS('PushSubscription') -@staticInterop -class PushSubscription {} - -extension PushSubscriptionExtension on PushSubscription { +extension type PushSubscription._(JSObject _) implements JSObject { external JSArrayBuffer? getKey(PushEncryptionKeyName name); external JSPromise unsubscribe(); external PushSubscriptionJSON toJSON(); @@ -76,19 +49,13 @@ extension PushSubscriptionExtension on PushSubscription { external EpochTimeStamp? get expirationTime; external PushSubscriptionOptions get options; } - -@JS() -@staticInterop -@anonymous -class PushSubscriptionJSON { +extension type PushSubscriptionJSON._(JSObject _) implements JSObject { external factory PushSubscriptionJSON({ String endpoint, EpochTimeStamp? expirationTime, JSAny keys, }); -} -extension PushSubscriptionJSONExtension on PushSubscriptionJSON { external set endpoint(String value); external String get endpoint; external set expirationTime(EpochTimeStamp? value); @@ -96,69 +63,44 @@ extension PushSubscriptionJSONExtension on PushSubscriptionJSON { external set keys(JSAny value); external JSAny get keys; } - -@JS('PushMessageData') -@staticInterop -class PushMessageData {} - -extension PushMessageDataExtension on PushMessageData { +extension type PushMessageData._(JSObject _) implements JSObject { external JSArrayBuffer arrayBuffer(); external Blob blob(); external JSAny? json(); external String text(); } - -@JS('PushEvent') -@staticInterop -class PushEvent implements ExtendableEvent { +extension type PushEvent._(JSObject _) implements ExtendableEvent, JSObject { external factory PushEvent( String type, [ PushEventInit eventInitDict, ]); -} -extension PushEventExtension on PushEvent { external PushMessageData? get data; } - -@JS() -@staticInterop -@anonymous -class PushEventInit implements ExtendableEventInit { +extension type PushEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory PushEventInit({PushMessageDataInit data}); -} -extension PushEventInitExtension on PushEventInit { external set data(PushMessageDataInit value); external PushMessageDataInit get data; } - -@JS('PushSubscriptionChangeEvent') -@staticInterop -class PushSubscriptionChangeEvent implements ExtendableEvent { +extension type PushSubscriptionChangeEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory PushSubscriptionChangeEvent( String type, [ PushSubscriptionChangeEventInit eventInitDict, ]); -} -extension PushSubscriptionChangeEventExtension on PushSubscriptionChangeEvent { external PushSubscription? get newSubscription; external PushSubscription? get oldSubscription; } - -@JS() -@staticInterop -@anonymous -class PushSubscriptionChangeEventInit implements ExtendableEventInit { +extension type PushSubscriptionChangeEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory PushSubscriptionChangeEventInit({ PushSubscription newSubscription, PushSubscription oldSubscription, }); -} -extension PushSubscriptionChangeEventInitExtension - on PushSubscriptionChangeEventInit { external set newSubscription(PushSubscription value); external PushSubscription get newSubscription; external set oldSubscription(PushSubscription value); diff --git a/lib/src/dom/raw_camera_access.dart b/lib/src/dom/raw_camera_access.dart index bb1e7237..7e5de01c 100644 --- a/lib/src/dom/raw_camera_access.dart +++ b/lib/src/dom/raw_camera_access.dart @@ -6,11 +6,7 @@ import 'dart:js_interop'; -@JS('XRCamera') -@staticInterop -class XRCamera {} - -extension XRCameraExtension on XRCamera { +extension type XRCamera._(JSObject _) implements JSObject { external int get width; external int get height; } diff --git a/lib/src/dom/real_world_meshing.dart b/lib/src/dom/real_world_meshing.dart index 028c3624..bd778e8f 100644 --- a/lib/src/dom/real_world_meshing.dart +++ b/lib/src/dom/real_world_meshing.dart @@ -9,20 +9,11 @@ import 'dart:js_interop'; import 'hr_time.dart'; import 'webxr.dart'; -@JS('XRMesh') -@staticInterop -class XRMesh {} - -extension XRMeshExtension on XRMesh { +extension type XRMesh._(JSObject _) implements JSObject { external XRSpace get meshSpace; external JSArray get vertices; external JSUint32Array get indices; external DOMHighResTimeStamp get lastChangedTime; external String? get semanticLabel; } - -@JS('XRMeshSet') -@staticInterop -class XRMeshSet {} - -extension XRMeshSetExtension on XRMeshSet {} +extension type XRMeshSet._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/remote_playback.dart b/lib/src/dom/remote_playback.dart index 415f66e3..f9226779 100644 --- a/lib/src/dom/remote_playback.dart +++ b/lib/src/dom/remote_playback.dart @@ -11,12 +11,7 @@ import 'html.dart'; typedef RemotePlaybackAvailabilityCallback = JSFunction; typedef RemotePlaybackState = String; - -@JS('RemotePlayback') -@staticInterop -class RemotePlayback implements EventTarget {} - -extension RemotePlaybackExtension on RemotePlayback { +extension type RemotePlayback._(JSObject _) implements EventTarget, JSObject { external JSPromise watchAvailability( RemotePlaybackAvailabilityCallback callback); external JSPromise cancelWatchAvailability([int id]); diff --git a/lib/src/dom/reporting.dart b/lib/src/dom/reporting.dart index 5db8be36..7cf01219 100644 --- a/lib/src/dom/reporting.dart +++ b/lib/src/dom/reporting.dart @@ -8,70 +8,42 @@ import 'dart:js_interop'; typedef ReportList = JSArray; typedef ReportingObserverCallback = JSFunction; - -@JS('ReportBody') -@staticInterop -class ReportBody {} - -extension ReportBodyExtension on ReportBody { +extension type ReportBody._(JSObject _) implements JSObject { external JSObject toJSON(); } - -@JS('Report') -@staticInterop -class Report {} - -extension ReportExtension on Report { +extension type Report._(JSObject _) implements JSObject { external JSObject toJSON(); external String get type; external String get url; external ReportBody? get body; } - -@JS('ReportingObserver') -@staticInterop -class ReportingObserver { +extension type ReportingObserver._(JSObject _) implements JSObject { external factory ReportingObserver( ReportingObserverCallback callback, [ ReportingObserverOptions options, ]); -} -extension ReportingObserverExtension on ReportingObserver { external void observe(); external void disconnect(); external ReportList takeRecords(); } - -@JS() -@staticInterop -@anonymous -class ReportingObserverOptions { +extension type ReportingObserverOptions._(JSObject _) implements JSObject { external factory ReportingObserverOptions({ JSArray types, bool buffered, }); -} -extension ReportingObserverOptionsExtension on ReportingObserverOptions { external set types(JSArray value); external JSArray get types; external set buffered(bool value); external bool get buffered; } - -@JS() -@staticInterop -@anonymous -class GenerateTestReportParameters { +extension type GenerateTestReportParameters._(JSObject _) implements JSObject { external factory GenerateTestReportParameters({ required String message, String group, }); -} -extension GenerateTestReportParametersExtension - on GenerateTestReportParameters { external set message(String value); external String get message; external set group(String value); diff --git a/lib/src/dom/requestidlecallback.dart b/lib/src/dom/requestidlecallback.dart index 08d6944c..14b1c951 100644 --- a/lib/src/dom/requestidlecallback.dart +++ b/lib/src/dom/requestidlecallback.dart @@ -9,24 +9,13 @@ import 'dart:js_interop'; import 'hr_time.dart'; typedef IdleRequestCallback = JSFunction; - -@JS() -@staticInterop -@anonymous -class IdleRequestOptions { +extension type IdleRequestOptions._(JSObject _) implements JSObject { external factory IdleRequestOptions({int timeout}); -} -extension IdleRequestOptionsExtension on IdleRequestOptions { external set timeout(int value); external int get timeout; } - -@JS('IdleDeadline') -@staticInterop -class IdleDeadline {} - -extension IdleDeadlineExtension on IdleDeadline { +extension type IdleDeadline._(JSObject _) implements JSObject { external DOMHighResTimeStamp timeRemaining(); external bool get didTimeout; } diff --git a/lib/src/dom/requeststorageaccessfor.dart b/lib/src/dom/requeststorageaccessfor.dart index ddbe24c0..e7742279 100644 --- a/lib/src/dom/requeststorageaccessfor.dart +++ b/lib/src/dom/requeststorageaccessfor.dart @@ -8,17 +8,11 @@ import 'dart:js_interop'; import 'permissions.dart'; -@JS() -@staticInterop -@anonymous -class TopLevelStorageAccessPermissionDescriptor - implements PermissionDescriptor { +extension type TopLevelStorageAccessPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory TopLevelStorageAccessPermissionDescriptor( {String requestedOrigin}); -} -extension TopLevelStorageAccessPermissionDescriptorExtension - on TopLevelStorageAccessPermissionDescriptor { external set requestedOrigin(String value); external String get requestedOrigin; } diff --git a/lib/src/dom/resize_observer.dart b/lib/src/dom/resize_observer.dart index 0bf15f1f..ec50968e 100644 --- a/lib/src/dom/resize_observer.dart +++ b/lib/src/dom/resize_observer.dart @@ -11,26 +11,15 @@ import 'geometry.dart'; typedef ResizeObserverCallback = JSFunction; typedef ResizeObserverBoxOptions = String; - -@JS() -@staticInterop -@anonymous -class ResizeObserverOptions { +extension type ResizeObserverOptions._(JSObject _) implements JSObject { external factory ResizeObserverOptions({ResizeObserverBoxOptions box}); -} -extension ResizeObserverOptionsExtension on ResizeObserverOptions { external set box(ResizeObserverBoxOptions value); external ResizeObserverBoxOptions get box; } - -@JS('ResizeObserver') -@staticInterop -class ResizeObserver { +extension type ResizeObserver._(JSObject _) implements JSObject { external factory ResizeObserver(ResizeObserverCallback callback); -} -extension ResizeObserverExtension on ResizeObserver { external void observe( Element target, [ ResizeObserverOptions options, @@ -38,24 +27,14 @@ extension ResizeObserverExtension on ResizeObserver { external void unobserve(Element target); external void disconnect(); } - -@JS('ResizeObserverEntry') -@staticInterop -class ResizeObserverEntry {} - -extension ResizeObserverEntryExtension on ResizeObserverEntry { +extension type ResizeObserverEntry._(JSObject _) implements JSObject { external Element get target; external DOMRectReadOnly get contentRect; external JSArray get borderBoxSize; external JSArray get contentBoxSize; external JSArray get devicePixelContentBoxSize; } - -@JS('ResizeObserverSize') -@staticInterop -class ResizeObserverSize {} - -extension ResizeObserverSizeExtension on ResizeObserverSize { +extension type ResizeObserverSize._(JSObject _) implements JSObject { external num get inlineSize; external num get blockSize; } diff --git a/lib/src/dom/resource_timing.dart b/lib/src/dom/resource_timing.dart index 5da74210..9cdc7f27 100644 --- a/lib/src/dom/resource_timing.dart +++ b/lib/src/dom/resource_timing.dart @@ -10,12 +10,8 @@ import 'hr_time.dart'; import 'performance_timeline.dart'; typedef RenderBlockingStatusType = String; - -@JS('PerformanceResourceTiming') -@staticInterop -class PerformanceResourceTiming implements PerformanceEntry {} - -extension PerformanceResourceTimingExtension on PerformanceResourceTiming { +extension type PerformanceResourceTiming._(JSObject _) + implements PerformanceEntry, JSObject { external JSObject toJSON(); external String get initiatorType; external String get deliveryType; diff --git a/lib/src/dom/sanitizer_api.dart b/lib/src/dom/sanitizer_api.dart index 12311f89..6add2a0e 100644 --- a/lib/src/dom/sanitizer_api.dart +++ b/lib/src/dom/sanitizer_api.dart @@ -9,16 +9,10 @@ import 'dart:js_interop'; import 'dom.dart'; typedef AttributeMatchList = JSAny; - -@JS('Sanitizer') -@staticInterop -class Sanitizer { +extension type Sanitizer._(JSObject _) implements JSObject { external factory Sanitizer([SanitizerConfig config]); external static SanitizerConfig getDefaultConfiguration(); -} - -extension SanitizerExtension on Sanitizer { external DocumentFragment sanitize(JSObject input); external Element? sanitizeFor( String element, @@ -26,23 +20,13 @@ extension SanitizerExtension on Sanitizer { ); external SanitizerConfig getConfiguration(); } - -@JS() -@staticInterop -@anonymous -class SetHTMLOptions { +extension type SetHTMLOptions._(JSObject _) implements JSObject { external factory SetHTMLOptions({Sanitizer sanitizer}); -} -extension SetHTMLOptionsExtension on SetHTMLOptions { external set sanitizer(Sanitizer value); external Sanitizer get sanitizer; } - -@JS() -@staticInterop -@anonymous -class SanitizerConfig { +extension type SanitizerConfig._(JSObject _) implements JSObject { external factory SanitizerConfig({ JSArray allowElements, JSArray blockElements, @@ -53,9 +37,7 @@ class SanitizerConfig { bool allowUnknownMarkup, bool allowComments, }); -} -extension SanitizerConfigExtension on SanitizerConfig { external set allowElements(JSArray value); external JSArray get allowElements; external set blockElements(JSArray value); diff --git a/lib/src/dom/scheduling_apis.dart b/lib/src/dom/scheduling_apis.dart index fbcd7346..14270ad0 100644 --- a/lib/src/dom/scheduling_apis.dart +++ b/lib/src/dom/scheduling_apis.dart @@ -11,19 +11,13 @@ import 'html.dart'; typedef SchedulerPostTaskCallback = JSFunction; typedef TaskPriority = String; - -@JS() -@staticInterop -@anonymous -class SchedulerPostTaskOptions { +extension type SchedulerPostTaskOptions._(JSObject _) implements JSObject { external factory SchedulerPostTaskOptions({ AbortSignal signal, TaskPriority priority, int delay, }); -} -extension SchedulerPostTaskOptionsExtension on SchedulerPostTaskOptions { external set signal(AbortSignal value); external AbortSignal get signal; external set priority(TaskPriority value); @@ -31,88 +25,52 @@ extension SchedulerPostTaskOptionsExtension on SchedulerPostTaskOptions { external set delay(int value); external int get delay; } - -@JS('Scheduler') -@staticInterop -class Scheduler {} - -extension SchedulerExtension on Scheduler { +extension type Scheduler._(JSObject _) implements JSObject { external JSPromise postTask( SchedulerPostTaskCallback callback, [ SchedulerPostTaskOptions options, ]); } - -@JS('TaskPriorityChangeEvent') -@staticInterop -class TaskPriorityChangeEvent implements Event { +extension type TaskPriorityChangeEvent._(JSObject _) + implements Event, JSObject { external factory TaskPriorityChangeEvent( String type, TaskPriorityChangeEventInit priorityChangeEventInitDict, ); -} -extension TaskPriorityChangeEventExtension on TaskPriorityChangeEvent { external TaskPriority get previousPriority; } - -@JS() -@staticInterop -@anonymous -class TaskPriorityChangeEventInit implements EventInit { +extension type TaskPriorityChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory TaskPriorityChangeEventInit( {required TaskPriority previousPriority}); -} -extension TaskPriorityChangeEventInitExtension on TaskPriorityChangeEventInit { external set previousPriority(TaskPriority value); external TaskPriority get previousPriority; } - -@JS() -@staticInterop -@anonymous -class TaskControllerInit { +extension type TaskControllerInit._(JSObject _) implements JSObject { external factory TaskControllerInit({TaskPriority priority}); -} -extension TaskControllerInitExtension on TaskControllerInit { external set priority(TaskPriority value); external TaskPriority get priority; } - -@JS('TaskController') -@staticInterop -class TaskController implements AbortController { +extension type TaskController._(JSObject _) + implements AbortController, JSObject { external factory TaskController([TaskControllerInit init]); -} -extension TaskControllerExtension on TaskController { external void setPriority(TaskPriority priority); } - -@JS() -@staticInterop -@anonymous -class TaskSignalAnyInit { +extension type TaskSignalAnyInit._(JSObject _) implements JSObject { external factory TaskSignalAnyInit({JSAny priority}); -} -extension TaskSignalAnyInitExtension on TaskSignalAnyInit { external set priority(JSAny value); external JSAny get priority; } - -@JS('TaskSignal') -@staticInterop -class TaskSignal implements AbortSignal { +extension type TaskSignal._(JSObject _) implements AbortSignal, JSObject { external static TaskSignal any( JSArray signals, [ TaskSignalAnyInit init, ]); -} - -extension TaskSignalExtension on TaskSignal { external TaskPriority get priority; external set onprioritychange(EventHandler value); external EventHandler get onprioritychange; diff --git a/lib/src/dom/screen_capture.dart b/lib/src/dom/screen_capture.dart index edb3ecc2..abbfc194 100644 --- a/lib/src/dom/screen_capture.dart +++ b/lib/src/dom/screen_capture.dart @@ -16,23 +16,15 @@ typedef SurfaceSwitchingPreferenceEnum = String; typedef MonitorTypeSurfacesEnum = String; typedef DisplayCaptureSurfaceType = String; typedef CursorCaptureConstraint = String; - -@JS('CaptureController') -@staticInterop -class CaptureController implements EventTarget { +extension type CaptureController._(JSObject _) + implements EventTarget, JSObject { external factory CaptureController(); -} -extension CaptureControllerExtension on CaptureController { external void setFocusBehavior(CaptureStartFocusBehavior focusBehavior); external set oncapturedmousechange(EventHandler value); external EventHandler get oncapturedmousechange; } - -@JS() -@staticInterop -@anonymous -class DisplayMediaStreamOptions { +extension type DisplayMediaStreamOptions._(JSObject _) implements JSObject { external factory DisplayMediaStreamOptions({ JSAny video, JSAny audio, @@ -42,9 +34,7 @@ class DisplayMediaStreamOptions { SurfaceSwitchingPreferenceEnum surfaceSwitching, MonitorTypeSurfacesEnum monitorTypeSurfaces, }); -} -extension DisplayMediaStreamOptionsExtension on DisplayMediaStreamOptions { external set video(JSAny value); external JSAny get video; external set audio(JSAny value); diff --git a/lib/src/dom/screen_orientation.dart b/lib/src/dom/screen_orientation.dart index f9380d02..e2e57f32 100644 --- a/lib/src/dom/screen_orientation.dart +++ b/lib/src/dom/screen_orientation.dart @@ -11,12 +11,8 @@ import 'html.dart'; typedef OrientationLockType = String; typedef OrientationType = String; - -@JS('ScreenOrientation') -@staticInterop -class ScreenOrientation implements EventTarget {} - -extension ScreenOrientationExtension on ScreenOrientation { +extension type ScreenOrientation._(JSObject _) + implements EventTarget, JSObject { external JSPromise lock(OrientationLockType orientation); external void unlock(); external OrientationType get type; diff --git a/lib/src/dom/screen_wake_lock.dart b/lib/src/dom/screen_wake_lock.dart index e3e588ae..350f08cb 100644 --- a/lib/src/dom/screen_wake_lock.dart +++ b/lib/src/dom/screen_wake_lock.dart @@ -10,20 +10,10 @@ import 'dom.dart'; import 'html.dart'; typedef WakeLockType = String; - -@JS('WakeLock') -@staticInterop -class WakeLock {} - -extension WakeLockExtension on WakeLock { +extension type WakeLock._(JSObject _) implements JSObject { external JSPromise request([WakeLockType type]); } - -@JS('WakeLockSentinel') -@staticInterop -class WakeLockSentinel implements EventTarget {} - -extension WakeLockSentinelExtension on WakeLockSentinel { +extension type WakeLockSentinel._(JSObject _) implements EventTarget, JSObject { external JSPromise release(); external bool get released; external WakeLockType get type; diff --git a/lib/src/dom/scroll_animations.dart b/lib/src/dom/scroll_animations.dart index a112ae14..03dffed5 100644 --- a/lib/src/dom/scroll_animations.dart +++ b/lib/src/dom/scroll_animations.dart @@ -11,47 +11,31 @@ import 'dom.dart'; import 'web_animations.dart'; typedef ScrollAxis = String; - -@JS() -@staticInterop -@anonymous -class ScrollTimelineOptions { +extension type ScrollTimelineOptions._(JSObject _) implements JSObject { external factory ScrollTimelineOptions({ Element? source, ScrollAxis axis, }); -} -extension ScrollTimelineOptionsExtension on ScrollTimelineOptions { external set source(Element? value); external Element? get source; external set axis(ScrollAxis value); external ScrollAxis get axis; } - -@JS('ScrollTimeline') -@staticInterop -class ScrollTimeline implements AnimationTimeline { +extension type ScrollTimeline._(JSObject _) + implements AnimationTimeline, JSObject { external factory ScrollTimeline([ScrollTimelineOptions options]); -} -extension ScrollTimelineExtension on ScrollTimeline { external Element? get source; external ScrollAxis get axis; } - -@JS() -@staticInterop -@anonymous -class ViewTimelineOptions { +extension type ViewTimelineOptions._(JSObject _) implements JSObject { external factory ViewTimelineOptions({ Element subject, ScrollAxis axis, JSAny inset, }); -} -extension ViewTimelineOptionsExtension on ViewTimelineOptions { external set subject(Element value); external Element get subject; external set axis(ScrollAxis value); @@ -59,14 +43,9 @@ extension ViewTimelineOptionsExtension on ViewTimelineOptions { external set inset(JSAny value); external JSAny get inset; } - -@JS('ViewTimeline') -@staticInterop -class ViewTimeline implements ScrollTimeline { +extension type ViewTimeline._(JSObject _) implements ScrollTimeline, JSObject { external factory ViewTimeline([ViewTimelineOptions options]); -} -extension ViewTimelineExtension on ViewTimeline { external Element get subject; external CSSNumericValue get startOffset; external CSSNumericValue get endOffset; diff --git a/lib/src/dom/scroll_to_text_fragment.dart b/lib/src/dom/scroll_to_text_fragment.dart index 35c029b3..8942292a 100644 --- a/lib/src/dom/scroll_to_text_fragment.dart +++ b/lib/src/dom/scroll_to_text_fragment.dart @@ -6,6 +6,4 @@ import 'dart:js_interop'; -@JS('FragmentDirective') -@staticInterop -class FragmentDirective {} +extension type FragmentDirective._(JSObject _) implements JSObject {} diff --git a/lib/src/dom/secure_payment_confirmation.dart b/lib/src/dom/secure_payment_confirmation.dart index c4f3bf4a..323cea91 100644 --- a/lib/src/dom/secure_payment_confirmation.dart +++ b/lib/src/dom/secure_payment_confirmation.dart @@ -10,10 +10,8 @@ import 'payment_request.dart'; import 'webauthn.dart'; import 'webidl.dart'; -@JS() -@staticInterop -@anonymous -class SecurePaymentConfirmationRequest { +extension type SecurePaymentConfirmationRequest._(JSObject _) + implements JSObject { external factory SecurePaymentConfirmationRequest({ required BufferSource challenge, required String rpId, @@ -26,10 +24,7 @@ class SecurePaymentConfirmationRequest { JSArray locale, bool showOptOut, }); -} -extension SecurePaymentConfirmationRequestExtension - on SecurePaymentConfirmationRequest { external set challenge(BufferSource value); external BufferSource get challenge; external set rpId(String value); @@ -51,11 +46,8 @@ extension SecurePaymentConfirmationRequestExtension external set showOptOut(bool value); external bool get showOptOut; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsPaymentInputs { +extension type AuthenticationExtensionsPaymentInputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsPaymentInputs({ bool isPayment, String rpId, @@ -65,10 +57,7 @@ class AuthenticationExtensionsPaymentInputs { PaymentCurrencyAmount total, PaymentCredentialInstrument instrument, }); -} -extension AuthenticationExtensionsPaymentInputsExtension - on AuthenticationExtensionsPaymentInputs { external set isPayment(bool value); external bool get isPayment; external set rpId(String value); @@ -84,24 +73,16 @@ extension AuthenticationExtensionsPaymentInputsExtension external set instrument(PaymentCredentialInstrument value); external PaymentCredentialInstrument get instrument; } - -@JS() -@staticInterop -@anonymous -class CollectedClientPaymentData implements CollectedClientData { +extension type CollectedClientPaymentData._(JSObject _) + implements CollectedClientData, JSObject { external factory CollectedClientPaymentData( {required CollectedClientAdditionalPaymentData payment}); -} -extension CollectedClientPaymentDataExtension on CollectedClientPaymentData { external set payment(CollectedClientAdditionalPaymentData value); external CollectedClientAdditionalPaymentData get payment; } - -@JS() -@staticInterop -@anonymous -class CollectedClientAdditionalPaymentData { +extension type CollectedClientAdditionalPaymentData._(JSObject _) + implements JSObject { external factory CollectedClientAdditionalPaymentData({ required String rpId, required String topOrigin, @@ -110,10 +91,7 @@ class CollectedClientAdditionalPaymentData { required PaymentCurrencyAmount total, required PaymentCredentialInstrument instrument, }); -} -extension CollectedClientAdditionalPaymentDataExtension - on CollectedClientAdditionalPaymentData { external set rpId(String value); external String get rpId; external set topOrigin(String value); @@ -127,19 +105,13 @@ extension CollectedClientAdditionalPaymentDataExtension external set instrument(PaymentCredentialInstrument value); external PaymentCredentialInstrument get instrument; } - -@JS() -@staticInterop -@anonymous -class PaymentCredentialInstrument { +extension type PaymentCredentialInstrument._(JSObject _) implements JSObject { external factory PaymentCredentialInstrument({ required String displayName, required String icon, bool iconMustBeShown, }); -} -extension PaymentCredentialInstrumentExtension on PaymentCredentialInstrument { external set displayName(String value); external String get displayName; external set icon(String value); diff --git a/lib/src/dom/selection_api.dart b/lib/src/dom/selection_api.dart index b990e624..4313e273 100644 --- a/lib/src/dom/selection_api.dart +++ b/lib/src/dom/selection_api.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS('Selection') -@staticInterop -class Selection {} - -extension SelectionExtension on Selection { +extension type Selection._(JSObject _) implements JSObject { external Range getRangeAt(int index); external void addRange(Range range); external void removeRange(Range range); diff --git a/lib/src/dom/serial.dart b/lib/src/dom/serial.dart index 31fc1cf8..f6eea3cf 100644 --- a/lib/src/dom/serial.dart +++ b/lib/src/dom/serial.dart @@ -13,12 +13,7 @@ import 'web_bluetooth.dart'; typedef ParityType = String; typedef FlowControlType = String; - -@JS('Serial') -@staticInterop -class Serial implements EventTarget {} - -extension SerialExtension on Serial { +extension type Serial._(JSObject _) implements EventTarget, JSObject { external JSPromise getPorts(); external JSPromise requestPort([SerialPortRequestOptions options]); external set onconnect(EventHandler value); @@ -26,36 +21,24 @@ extension SerialExtension on Serial { external set ondisconnect(EventHandler value); external EventHandler get ondisconnect; } - -@JS() -@staticInterop -@anonymous -class SerialPortRequestOptions { +extension type SerialPortRequestOptions._(JSObject _) implements JSObject { external factory SerialPortRequestOptions({ JSArray filters, JSArray allowedBluetoothServiceClassIds, }); -} -extension SerialPortRequestOptionsExtension on SerialPortRequestOptions { external set filters(JSArray value); external JSArray get filters; external set allowedBluetoothServiceClassIds(JSArray value); external JSArray get allowedBluetoothServiceClassIds; } - -@JS() -@staticInterop -@anonymous -class SerialPortFilter { +extension type SerialPortFilter._(JSObject _) implements JSObject { external factory SerialPortFilter({ int usbVendorId, int usbProductId, BluetoothServiceUUID bluetoothServiceClassId, }); -} -extension SerialPortFilterExtension on SerialPortFilter { external set usbVendorId(int value); external int get usbVendorId; external set usbProductId(int value); @@ -63,12 +46,7 @@ extension SerialPortFilterExtension on SerialPortFilter { external set bluetoothServiceClassId(BluetoothServiceUUID value); external BluetoothServiceUUID get bluetoothServiceClassId; } - -@JS('SerialPort') -@staticInterop -class SerialPort implements EventTarget {} - -extension SerialPortExtension on SerialPort { +extension type SerialPort._(JSObject _) implements EventTarget, JSObject { external SerialPortInfo getInfo(); external JSPromise open(SerialOptions options); external JSPromise setSignals([SerialOutputSignals signals]); @@ -82,19 +60,13 @@ extension SerialPortExtension on SerialPort { external ReadableStream get readable; external WritableStream get writable; } - -@JS() -@staticInterop -@anonymous -class SerialPortInfo { +extension type SerialPortInfo._(JSObject _) implements JSObject { external factory SerialPortInfo({ int usbVendorId, int usbProductId, BluetoothServiceUUID bluetoothServiceClassId, }); -} -extension SerialPortInfoExtension on SerialPortInfo { external set usbVendorId(int value); external int get usbVendorId; external set usbProductId(int value); @@ -102,11 +74,7 @@ extension SerialPortInfoExtension on SerialPortInfo { external set bluetoothServiceClassId(BluetoothServiceUUID value); external BluetoothServiceUUID get bluetoothServiceClassId; } - -@JS() -@staticInterop -@anonymous -class SerialOptions { +extension type SerialOptions._(JSObject _) implements JSObject { external factory SerialOptions({ required int baudRate, int dataBits, @@ -115,9 +83,7 @@ class SerialOptions { int bufferSize, FlowControlType flowControl, }); -} -extension SerialOptionsExtension on SerialOptions { external set baudRate(int value); external int get baudRate; external set dataBits(int value); @@ -131,19 +97,13 @@ extension SerialOptionsExtension on SerialOptions { external set flowControl(FlowControlType value); external FlowControlType get flowControl; } - -@JS() -@staticInterop -@anonymous -class SerialOutputSignals { +extension type SerialOutputSignals._(JSObject _) implements JSObject { external factory SerialOutputSignals({ bool dataTerminalReady, bool requestToSend, bool break_, }); -} -extension SerialOutputSignalsExtension on SerialOutputSignals { external set dataTerminalReady(bool value); external bool get dataTerminalReady; external set requestToSend(bool value); @@ -153,20 +113,14 @@ extension SerialOutputSignalsExtension on SerialOutputSignals { @JS('break') external bool get break_; } - -@JS() -@staticInterop -@anonymous -class SerialInputSignals { +extension type SerialInputSignals._(JSObject _) implements JSObject { external factory SerialInputSignals({ required bool dataCarrierDetect, required bool clearToSend, required bool ringIndicator, required bool dataSetReady, }); -} -extension SerialInputSignalsExtension on SerialInputSignals { external set dataCarrierDetect(bool value); external bool get dataCarrierDetect; external set clearToSend(bool value); diff --git a/lib/src/dom/server_timing.dart b/lib/src/dom/server_timing.dart index 8421f499..e015ab16 100644 --- a/lib/src/dom/server_timing.dart +++ b/lib/src/dom/server_timing.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'hr_time.dart'; -@JS('PerformanceServerTiming') -@staticInterop -class PerformanceServerTiming {} - -extension PerformanceServerTimingExtension on PerformanceServerTiming { +extension type PerformanceServerTiming._(JSObject _) implements JSObject { external JSObject toJSON(); external String get name; external DOMHighResTimeStamp get duration; diff --git a/lib/src/dom/service_workers.dart b/lib/src/dom/service_workers.dart index 410f7608..e2062ab2 100644 --- a/lib/src/dom/service_workers.dart +++ b/lib/src/dom/service_workers.dart @@ -23,12 +23,7 @@ typedef ServiceWorkerState = String; typedef ServiceWorkerUpdateViaCache = String; typedef FrameType = String; typedef ClientType = String; - -@JS('ServiceWorker') -@staticInterop -class ServiceWorker implements EventTarget {} - -extension ServiceWorkerExtension on ServiceWorker { +extension type ServiceWorker._(JSObject _) implements EventTarget, JSObject { external void postMessage( JSAny? message, [ JSObject optionsOrTransfer, @@ -40,12 +35,8 @@ extension ServiceWorkerExtension on ServiceWorker { external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS('ServiceWorkerRegistration') -@staticInterop -class ServiceWorkerRegistration implements EventTarget {} - -extension ServiceWorkerRegistrationExtension on ServiceWorkerRegistration { +extension type ServiceWorkerRegistration._(JSObject _) + implements EventTarget, JSObject { external JSPromise showNotification( String title, [ NotificationOptions options, @@ -69,12 +60,8 @@ extension ServiceWorkerRegistrationExtension on ServiceWorkerRegistration { external set onupdatefound(EventHandler value); external EventHandler get onupdatefound; } - -@JS('ServiceWorkerContainer') -@staticInterop -class ServiceWorkerContainer implements EventTarget {} - -extension ServiceWorkerContainerExtension on ServiceWorkerContainer { +extension type ServiceWorkerContainer._(JSObject _) + implements EventTarget, JSObject { external JSPromise register( String scriptURL, [ RegistrationOptions options, @@ -91,19 +78,13 @@ extension ServiceWorkerContainerExtension on ServiceWorkerContainer { external set onmessageerror(EventHandler value); external EventHandler get onmessageerror; } - -@JS() -@staticInterop -@anonymous -class RegistrationOptions { +extension type RegistrationOptions._(JSObject _) implements JSObject { external factory RegistrationOptions({ String scope, WorkerType type, ServiceWorkerUpdateViaCache updateViaCache, }); -} -extension RegistrationOptionsExtension on RegistrationOptions { external set scope(String value); external String get scope; external set type(WorkerType value); @@ -111,40 +92,25 @@ extension RegistrationOptionsExtension on RegistrationOptions { external set updateViaCache(ServiceWorkerUpdateViaCache value); external ServiceWorkerUpdateViaCache get updateViaCache; } - -@JS('NavigationPreloadManager') -@staticInterop -class NavigationPreloadManager {} - -extension NavigationPreloadManagerExtension on NavigationPreloadManager { +extension type NavigationPreloadManager._(JSObject _) implements JSObject { external JSPromise enable(); external JSPromise disable(); external JSPromise setHeaderValue(String value); external JSPromise getState(); } - -@JS() -@staticInterop -@anonymous -class NavigationPreloadState { +extension type NavigationPreloadState._(JSObject _) implements JSObject { external factory NavigationPreloadState({ bool enabled, String headerValue, }); -} -extension NavigationPreloadStateExtension on NavigationPreloadState { external set enabled(bool value); external bool get enabled; external set headerValue(String value); external String get headerValue; } - -@JS('ServiceWorkerGlobalScope') -@staticInterop -class ServiceWorkerGlobalScope implements WorkerGlobalScope {} - -extension ServiceWorkerGlobalScopeExtension on ServiceWorkerGlobalScope { +extension type ServiceWorkerGlobalScope._(JSObject _) + implements WorkerGlobalScope, JSObject { external JSPromise skipWaiting(); external set onbackgroundfetchsuccess(EventHandler value); external EventHandler get onbackgroundfetchsuccess; @@ -189,12 +155,7 @@ extension ServiceWorkerGlobalScopeExtension on ServiceWorkerGlobalScope { external set onmessageerror(EventHandler value); external EventHandler get onmessageerror; } - -@JS('Client') -@staticInterop -class Client {} - -extension ClientExtension on Client { +extension type Client._(JSObject _) implements JSObject { external void postMessage( JSAny? message, [ JSObject optionsOrTransfer, @@ -205,77 +166,48 @@ extension ClientExtension on Client { external String get id; external ClientType get type; } - -@JS('WindowClient') -@staticInterop -class WindowClient implements Client {} - -extension WindowClientExtension on WindowClient { +extension type WindowClient._(JSObject _) implements Client, JSObject { external JSPromise focus(); external JSPromise navigate(String url); external DocumentVisibilityState get visibilityState; external bool get focused; external JSArray get ancestorOrigins; } - -@JS('Clients') -@staticInterop -class Clients {} - -extension ClientsExtension on Clients { +extension type Clients._(JSObject _) implements JSObject { external JSPromise get(String id); external JSPromise matchAll([ClientQueryOptions options]); external JSPromise openWindow(String url); external JSPromise claim(); } - -@JS() -@staticInterop -@anonymous -class ClientQueryOptions { +extension type ClientQueryOptions._(JSObject _) implements JSObject { external factory ClientQueryOptions({ bool includeUncontrolled, ClientType type, }); -} -extension ClientQueryOptionsExtension on ClientQueryOptions { external set includeUncontrolled(bool value); external bool get includeUncontrolled; external set type(ClientType value); external ClientType get type; } - -@JS('ExtendableEvent') -@staticInterop -class ExtendableEvent implements Event { +extension type ExtendableEvent._(JSObject _) implements Event, JSObject { external factory ExtendableEvent( String type, [ ExtendableEventInit eventInitDict, ]); -} -extension ExtendableEventExtension on ExtendableEvent { external void waitUntil(JSPromise f); } - -@JS() -@staticInterop -@anonymous -class ExtendableEventInit implements EventInit { +extension type ExtendableEventInit._(JSObject _) + implements EventInit, JSObject { external factory ExtendableEventInit(); } - -@JS('FetchEvent') -@staticInterop -class FetchEvent implements ExtendableEvent { +extension type FetchEvent._(JSObject _) implements ExtendableEvent, JSObject { external factory FetchEvent( String type, FetchEventInit eventInitDict, ); -} -extension FetchEventExtension on FetchEvent { external void respondWith(JSPromise r); external Request get request; external JSPromise get preloadResponse; @@ -284,11 +216,8 @@ extension FetchEventExtension on FetchEvent { external String get replacesClientId; external JSPromise get handled; } - -@JS() -@staticInterop -@anonymous -class FetchEventInit implements ExtendableEventInit { +extension type FetchEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory FetchEventInit({ required Request request, JSPromise preloadResponse, @@ -297,9 +226,7 @@ class FetchEventInit implements ExtendableEventInit { String replacesClientId, JSPromise handled, }); -} -extension FetchEventInitExtension on FetchEventInit { external set request(Request value); external Request get request; external set preloadResponse(JSPromise value); @@ -313,28 +240,21 @@ extension FetchEventInitExtension on FetchEventInit { external set handled(JSPromise value); external JSPromise get handled; } - -@JS('ExtendableMessageEvent') -@staticInterop -class ExtendableMessageEvent implements ExtendableEvent { +extension type ExtendableMessageEvent._(JSObject _) + implements ExtendableEvent, JSObject { external factory ExtendableMessageEvent( String type, [ ExtendableMessageEventInit eventInitDict, ]); -} -extension ExtendableMessageEventExtension on ExtendableMessageEvent { external JSAny? get data; external String get origin; external String get lastEventId; external JSObject? get source; external JSArray get ports; } - -@JS() -@staticInterop -@anonymous -class ExtendableMessageEventInit implements ExtendableEventInit { +extension type ExtendableMessageEventInit._(JSObject _) + implements ExtendableEventInit, JSObject { external factory ExtendableMessageEventInit({ JSAny? data, String origin, @@ -342,9 +262,7 @@ class ExtendableMessageEventInit implements ExtendableEventInit { JSObject? source, JSArray ports, }); -} -extension ExtendableMessageEventInitExtension on ExtendableMessageEventInit { external set data(JSAny? value); external JSAny? get data; external set origin(String value); @@ -356,12 +274,7 @@ extension ExtendableMessageEventInitExtension on ExtendableMessageEventInit { external set ports(JSArray value); external JSArray get ports; } - -@JS('Cache') -@staticInterop -class Cache {} - -extension CacheExtension on Cache { +extension type Cache._(JSObject _) implements JSObject { external JSPromise match( RequestInfo request, [ CacheQueryOptions options, @@ -385,19 +298,13 @@ extension CacheExtension on Cache { CacheQueryOptions options, ]); } - -@JS() -@staticInterop -@anonymous -class CacheQueryOptions { +extension type CacheQueryOptions._(JSObject _) implements JSObject { external factory CacheQueryOptions({ bool ignoreSearch, bool ignoreMethod, bool ignoreVary, }); -} -extension CacheQueryOptionsExtension on CacheQueryOptions { external set ignoreSearch(bool value); external bool get ignoreSearch; external set ignoreMethod(bool value); @@ -405,12 +312,7 @@ extension CacheQueryOptionsExtension on CacheQueryOptions { external set ignoreVary(bool value); external bool get ignoreVary; } - -@JS('CacheStorage') -@staticInterop -class CacheStorage {} - -extension CacheStorageExtension on CacheStorage { +extension type CacheStorage._(JSObject _) implements JSObject { external JSPromise match( RequestInfo request, [ MultiCacheQueryOptions options, @@ -420,15 +322,10 @@ extension CacheStorageExtension on CacheStorage { external JSPromise delete(String cacheName); external JSPromise keys(); } - -@JS() -@staticInterop -@anonymous -class MultiCacheQueryOptions implements CacheQueryOptions { +extension type MultiCacheQueryOptions._(JSObject _) + implements CacheQueryOptions, JSObject { external factory MultiCacheQueryOptions({String cacheName}); -} -extension MultiCacheQueryOptionsExtension on MultiCacheQueryOptions { external set cacheName(String value); external String get cacheName; } diff --git a/lib/src/dom/shape_detection_api.dart b/lib/src/dom/shape_detection_api.dart index 54113fa5..d5c65075 100644 --- a/lib/src/dom/shape_detection_api.dart +++ b/lib/src/dom/shape_detection_api.dart @@ -11,106 +11,65 @@ import 'html.dart'; typedef LandmarkType = String; typedef BarcodeFormat = String; - -@JS('FaceDetector') -@staticInterop -class FaceDetector { +extension type FaceDetector._(JSObject _) implements JSObject { external factory FaceDetector([FaceDetectorOptions faceDetectorOptions]); -} -extension FaceDetectorExtension on FaceDetector { external JSPromise detect(ImageBitmapSource image); } - -@JS() -@staticInterop -@anonymous -class FaceDetectorOptions { +extension type FaceDetectorOptions._(JSObject _) implements JSObject { external factory FaceDetectorOptions({ int maxDetectedFaces, bool fastMode, }); -} -extension FaceDetectorOptionsExtension on FaceDetectorOptions { external set maxDetectedFaces(int value); external int get maxDetectedFaces; external set fastMode(bool value); external bool get fastMode; } - -@JS() -@staticInterop -@anonymous -class DetectedFace { +extension type DetectedFace._(JSObject _) implements JSObject { external factory DetectedFace({ required DOMRectReadOnly boundingBox, required JSArray? landmarks, }); -} -extension DetectedFaceExtension on DetectedFace { external set boundingBox(DOMRectReadOnly value); external DOMRectReadOnly get boundingBox; external set landmarks(JSArray? value); external JSArray? get landmarks; } - -@JS() -@staticInterop -@anonymous -class Landmark { +extension type Landmark._(JSObject _) implements JSObject { external factory Landmark({ required JSArray locations, LandmarkType type, }); -} -extension LandmarkExtension on Landmark { external set locations(JSArray value); external JSArray get locations; external set type(LandmarkType value); external LandmarkType get type; } - -@JS('BarcodeDetector') -@staticInterop -class BarcodeDetector { +extension type BarcodeDetector._(JSObject _) implements JSObject { external factory BarcodeDetector( [BarcodeDetectorOptions barcodeDetectorOptions]); external static JSPromise getSupportedFormats(); -} - -extension BarcodeDetectorExtension on BarcodeDetector { external JSPromise detect(ImageBitmapSource image); } - -@JS() -@staticInterop -@anonymous -class BarcodeDetectorOptions { +extension type BarcodeDetectorOptions._(JSObject _) implements JSObject { external factory BarcodeDetectorOptions({JSArray formats}); -} -extension BarcodeDetectorOptionsExtension on BarcodeDetectorOptions { external set formats(JSArray value); external JSArray get formats; } - -@JS() -@staticInterop -@anonymous -class DetectedBarcode { +extension type DetectedBarcode._(JSObject _) implements JSObject { external factory DetectedBarcode({ required DOMRectReadOnly boundingBox, required String rawValue, required BarcodeFormat format, required JSArray cornerPoints, }); -} -extension DetectedBarcodeExtension on DetectedBarcode { external set boundingBox(DOMRectReadOnly value); external DOMRectReadOnly get boundingBox; external set rawValue(String value); diff --git a/lib/src/dom/shared_storage.dart b/lib/src/dom/shared_storage.dart index 51ab1486..f000cbff 100644 --- a/lib/src/dom/shared_storage.dart +++ b/lib/src/dom/shared_storage.dart @@ -10,41 +10,25 @@ import 'html.dart'; typedef SharedStorageResponse = JSAny; typedef SharedStorageOperationConstructor = JSFunction; - -@JS('SharedStorageWorklet') -@staticInterop -class SharedStorageWorklet implements Worklet {} - -@JS('SharedStorageWorkletGlobalScope') -@staticInterop -class SharedStorageWorkletGlobalScope implements WorkletGlobalScope {} - -extension SharedStorageWorkletGlobalScopeExtension - on SharedStorageWorkletGlobalScope { +extension type SharedStorageWorklet._(JSObject _) + implements Worklet, JSObject {} +extension type SharedStorageWorkletGlobalScope._(JSObject _) + implements WorkletGlobalScope, JSObject { external void register( String name, SharedStorageOperationConstructor operationCtor, ); external WorkletSharedStorage get sharedStorage; } - -@JS('SharedStorageOperation') -@staticInterop -class SharedStorageOperation {} - -@JS() -@staticInterop -@anonymous -class SharedStorageRunOperationMethodOptions { +extension type SharedStorageOperation._(JSObject _) implements JSObject {} +extension type SharedStorageRunOperationMethodOptions._(JSObject _) + implements JSObject { external factory SharedStorageRunOperationMethodOptions({ JSObject data, bool resolveToConfig, bool keepAlive, }); -} -extension SharedStorageRunOperationMethodOptionsExtension - on SharedStorageRunOperationMethodOptions { external set data(JSObject value); external JSObject get data; external set resolveToConfig(bool value); @@ -52,32 +36,18 @@ extension SharedStorageRunOperationMethodOptionsExtension external set keepAlive(bool value); external bool get keepAlive; } - -@JS('SharedStorageRunOperation') -@staticInterop -class SharedStorageRunOperation implements SharedStorageOperation {} - -extension SharedStorageRunOperationExtension on SharedStorageRunOperation { +extension type SharedStorageRunOperation._(JSObject _) + implements SharedStorageOperation, JSObject { external JSPromise run(JSObject data); } - -@JS('SharedStorageSelectURLOperation') -@staticInterop -class SharedStorageSelectURLOperation implements SharedStorageOperation {} - -extension SharedStorageSelectURLOperationExtension - on SharedStorageSelectURLOperation { +extension type SharedStorageSelectURLOperation._(JSObject _) + implements SharedStorageOperation, JSObject { external JSPromise run( JSObject data, JSArray urls, ); } - -@JS('SharedStorage') -@staticInterop -class SharedStorage {} - -extension SharedStorageExtension on SharedStorage { +extension type SharedStorage._(JSObject _) implements JSObject { external JSPromise set( String key, String value, [ @@ -90,25 +60,14 @@ extension SharedStorageExtension on SharedStorage { external JSPromise delete(String key); external JSPromise clear(); } - -@JS() -@staticInterop -@anonymous -class SharedStorageSetMethodOptions { +extension type SharedStorageSetMethodOptions._(JSObject _) implements JSObject { external factory SharedStorageSetMethodOptions({bool ignoreIfPresent}); -} -extension SharedStorageSetMethodOptionsExtension - on SharedStorageSetMethodOptions { external set ignoreIfPresent(bool value); external bool get ignoreIfPresent; } - -@JS('WindowSharedStorage') -@staticInterop -class WindowSharedStorage implements SharedStorage {} - -extension WindowSharedStorageExtension on WindowSharedStorage { +extension type WindowSharedStorage._(JSObject _) + implements SharedStorage, JSObject { external JSPromise run( String name, [ SharedStorageRunOperationMethodOptions options, @@ -120,30 +79,19 @@ extension WindowSharedStorageExtension on WindowSharedStorage { ]); external SharedStorageWorklet get worklet; } - -@JS() -@staticInterop -@anonymous -class SharedStorageUrlWithMetadata { +extension type SharedStorageUrlWithMetadata._(JSObject _) implements JSObject { external factory SharedStorageUrlWithMetadata({ required String url, JSObject reportingMetadata, }); -} -extension SharedStorageUrlWithMetadataExtension - on SharedStorageUrlWithMetadata { external set url(String value); external String get url; external set reportingMetadata(JSObject value); external JSObject get reportingMetadata; } - -@JS('WorkletSharedStorage') -@staticInterop -class WorkletSharedStorage implements SharedStorage {} - -extension WorkletSharedStorageExtension on WorkletSharedStorage { +extension type WorkletSharedStorage._(JSObject _) + implements SharedStorage, JSObject { external JSPromise get(String key); external JSPromise length(); external JSPromise remainingBudget(); diff --git a/lib/src/dom/speech_api.dart b/lib/src/dom/speech_api.dart index 10bf7d5f..294ef850 100644 --- a/lib/src/dom/speech_api.dart +++ b/lib/src/dom/speech_api.dart @@ -11,14 +11,10 @@ import 'html.dart'; typedef SpeechRecognitionErrorCode = String; typedef SpeechSynthesisErrorCode = String; - -@JS('SpeechRecognition') -@staticInterop -class SpeechRecognition implements EventTarget { +extension type SpeechRecognition._(JSObject _) + implements EventTarget, JSObject { external factory SpeechRecognition(); -} -extension SpeechRecognitionExtension on SpeechRecognition { external void start(); external void stop(); external void abort(); @@ -55,117 +51,71 @@ extension SpeechRecognitionExtension on SpeechRecognition { external set onend(EventHandler value); external EventHandler get onend; } - -@JS('SpeechRecognitionErrorEvent') -@staticInterop -class SpeechRecognitionErrorEvent implements Event { +extension type SpeechRecognitionErrorEvent._(JSObject _) + implements Event, JSObject { external factory SpeechRecognitionErrorEvent( String type, SpeechRecognitionErrorEventInit eventInitDict, ); -} -extension SpeechRecognitionErrorEventExtension on SpeechRecognitionErrorEvent { external SpeechRecognitionErrorCode get error; external String get message; } - -@JS() -@staticInterop -@anonymous -class SpeechRecognitionErrorEventInit implements EventInit { +extension type SpeechRecognitionErrorEventInit._(JSObject _) + implements EventInit, JSObject { external factory SpeechRecognitionErrorEventInit({ required SpeechRecognitionErrorCode error, String message, }); -} -extension SpeechRecognitionErrorEventInitExtension - on SpeechRecognitionErrorEventInit { external set error(SpeechRecognitionErrorCode value); external SpeechRecognitionErrorCode get error; external set message(String value); external String get message; } - -@JS('SpeechRecognitionAlternative') -@staticInterop -class SpeechRecognitionAlternative {} - -extension SpeechRecognitionAlternativeExtension - on SpeechRecognitionAlternative { +extension type SpeechRecognitionAlternative._(JSObject _) implements JSObject { external String get transcript; external num get confidence; } - -@JS('SpeechRecognitionResult') -@staticInterop -class SpeechRecognitionResult {} - -extension SpeechRecognitionResultExtension on SpeechRecognitionResult { +extension type SpeechRecognitionResult._(JSObject _) implements JSObject { external SpeechRecognitionAlternative item(int index); external int get length; external bool get isFinal; } - -@JS('SpeechRecognitionResultList') -@staticInterop -class SpeechRecognitionResultList {} - -extension SpeechRecognitionResultListExtension on SpeechRecognitionResultList { +extension type SpeechRecognitionResultList._(JSObject _) implements JSObject { external SpeechRecognitionResult item(int index); external int get length; } - -@JS('SpeechRecognitionEvent') -@staticInterop -class SpeechRecognitionEvent implements Event { +extension type SpeechRecognitionEvent._(JSObject _) implements Event, JSObject { external factory SpeechRecognitionEvent( String type, SpeechRecognitionEventInit eventInitDict, ); -} -extension SpeechRecognitionEventExtension on SpeechRecognitionEvent { external int get resultIndex; external SpeechRecognitionResultList get results; } - -@JS() -@staticInterop -@anonymous -class SpeechRecognitionEventInit implements EventInit { +extension type SpeechRecognitionEventInit._(JSObject _) + implements EventInit, JSObject { external factory SpeechRecognitionEventInit({ int resultIndex, required SpeechRecognitionResultList results, }); -} -extension SpeechRecognitionEventInitExtension on SpeechRecognitionEventInit { external set resultIndex(int value); external int get resultIndex; external set results(SpeechRecognitionResultList value); external SpeechRecognitionResultList get results; } - -@JS('SpeechGrammar') -@staticInterop -class SpeechGrammar {} - -extension SpeechGrammarExtension on SpeechGrammar { +extension type SpeechGrammar._(JSObject _) implements JSObject { external set src(String value); external String get src; external set weight(num value); external num get weight; } - -@JS('SpeechGrammarList') -@staticInterop -class SpeechGrammarList { +extension type SpeechGrammarList._(JSObject _) implements JSObject { external factory SpeechGrammarList(); -} -extension SpeechGrammarListExtension on SpeechGrammarList { external SpeechGrammar item(int index); external void addFromURI( String src, [ @@ -177,12 +127,7 @@ extension SpeechGrammarListExtension on SpeechGrammarList { ]); external int get length; } - -@JS('SpeechSynthesis') -@staticInterop -class SpeechSynthesis implements EventTarget {} - -extension SpeechSynthesisExtension on SpeechSynthesis { +extension type SpeechSynthesis._(JSObject _) implements EventTarget, JSObject { external void speak(SpeechSynthesisUtterance utterance); external void cancel(); external void pause(); @@ -194,14 +139,10 @@ extension SpeechSynthesisExtension on SpeechSynthesis { external set onvoiceschanged(EventHandler value); external EventHandler get onvoiceschanged; } - -@JS('SpeechSynthesisUtterance') -@staticInterop -class SpeechSynthesisUtterance implements EventTarget { +extension type SpeechSynthesisUtterance._(JSObject _) + implements EventTarget, JSObject { external factory SpeechSynthesisUtterance([String text]); -} -extension SpeechSynthesisUtteranceExtension on SpeechSynthesisUtterance { external set text(String value); external String get text; external set lang(String value); @@ -229,28 +170,20 @@ extension SpeechSynthesisUtteranceExtension on SpeechSynthesisUtterance { external set onboundary(EventHandler value); external EventHandler get onboundary; } - -@JS('SpeechSynthesisEvent') -@staticInterop -class SpeechSynthesisEvent implements Event { +extension type SpeechSynthesisEvent._(JSObject _) implements Event, JSObject { external factory SpeechSynthesisEvent( String type, SpeechSynthesisEventInit eventInitDict, ); -} -extension SpeechSynthesisEventExtension on SpeechSynthesisEvent { external SpeechSynthesisUtterance get utterance; external int get charIndex; external int get charLength; external num get elapsedTime; external String get name; } - -@JS() -@staticInterop -@anonymous -class SpeechSynthesisEventInit implements EventInit { +extension type SpeechSynthesisEventInit._(JSObject _) + implements EventInit, JSObject { external factory SpeechSynthesisEventInit({ required SpeechSynthesisUtterance utterance, int charIndex, @@ -258,9 +191,7 @@ class SpeechSynthesisEventInit implements EventInit { num elapsedTime, String name, }); -} -extension SpeechSynthesisEventInitExtension on SpeechSynthesisEventInit { external set utterance(SpeechSynthesisUtterance value); external SpeechSynthesisUtterance get utterance; external set charIndex(int value); @@ -272,39 +203,24 @@ extension SpeechSynthesisEventInitExtension on SpeechSynthesisEventInit { external set name(String value); external String get name; } - -@JS('SpeechSynthesisErrorEvent') -@staticInterop -class SpeechSynthesisErrorEvent implements SpeechSynthesisEvent { +extension type SpeechSynthesisErrorEvent._(JSObject _) + implements SpeechSynthesisEvent, JSObject { external factory SpeechSynthesisErrorEvent( String type, SpeechSynthesisErrorEventInit eventInitDict, ); -} -extension SpeechSynthesisErrorEventExtension on SpeechSynthesisErrorEvent { external SpeechSynthesisErrorCode get error; } - -@JS() -@staticInterop -@anonymous -class SpeechSynthesisErrorEventInit implements SpeechSynthesisEventInit { +extension type SpeechSynthesisErrorEventInit._(JSObject _) + implements SpeechSynthesisEventInit, JSObject { external factory SpeechSynthesisErrorEventInit( {required SpeechSynthesisErrorCode error}); -} -extension SpeechSynthesisErrorEventInitExtension - on SpeechSynthesisErrorEventInit { external set error(SpeechSynthesisErrorCode value); external SpeechSynthesisErrorCode get error; } - -@JS('SpeechSynthesisVoice') -@staticInterop -class SpeechSynthesisVoice {} - -extension SpeechSynthesisVoiceExtension on SpeechSynthesisVoice { +extension type SpeechSynthesisVoice._(JSObject _) implements JSObject { external String get voiceURI; external String get name; external String get lang; diff --git a/lib/src/dom/storage.dart b/lib/src/dom/storage.dart index 12ac867a..e56c518d 100644 --- a/lib/src/dom/storage.dart +++ b/lib/src/dom/storage.dart @@ -6,28 +6,18 @@ import 'dart:js_interop'; -@JS('StorageManager') -@staticInterop -class StorageManager {} - -extension StorageManagerExtension on StorageManager { +extension type StorageManager._(JSObject _) implements JSObject { external JSPromise getDirectory(); external JSPromise persisted(); external JSPromise persist(); external JSPromise estimate(); } - -@JS() -@staticInterop -@anonymous -class StorageEstimate { +extension type StorageEstimate._(JSObject _) implements JSObject { external factory StorageEstimate({ int usage, int quota, }); -} -extension StorageEstimateExtension on StorageEstimate { external set usage(int value); external int get usage; external set quota(int value); diff --git a/lib/src/dom/storage_buckets.dart b/lib/src/dom/storage_buckets.dart index fa656c71..b6dd99d1 100644 --- a/lib/src/dom/storage_buckets.dart +++ b/lib/src/dom/storage_buckets.dart @@ -10,11 +10,7 @@ import 'hr_time.dart'; import 'indexeddb.dart'; import 'service_workers.dart'; -@JS('StorageBucketManager') -@staticInterop -class StorageBucketManager {} - -extension StorageBucketManagerExtension on StorageBucketManager { +extension type StorageBucketManager._(JSObject _) implements JSObject { external JSPromise open( String name, [ StorageBucketOptions options, @@ -22,19 +18,13 @@ extension StorageBucketManagerExtension on StorageBucketManager { external JSPromise keys(); external JSPromise delete(String name); } - -@JS() -@staticInterop -@anonymous -class StorageBucketOptions { +extension type StorageBucketOptions._(JSObject _) implements JSObject { external factory StorageBucketOptions({ bool persisted, int? quota, DOMHighResTimeStamp? expires, }); -} -extension StorageBucketOptionsExtension on StorageBucketOptions { external set persisted(bool value); external bool get persisted; external set quota(int? value); @@ -42,12 +32,7 @@ extension StorageBucketOptionsExtension on StorageBucketOptions { external set expires(DOMHighResTimeStamp? value); external DOMHighResTimeStamp? get expires; } - -@JS('StorageBucket') -@staticInterop -class StorageBucket {} - -extension StorageBucketExtension on StorageBucket { +extension type StorageBucket._(JSObject _) implements JSObject { external JSPromise persist(); external JSPromise persisted(); external JSPromise estimate(); diff --git a/lib/src/dom/streams.dart b/lib/src/dom/streams.dart index 9c220f05..08d8ef9c 100644 --- a/lib/src/dom/streams.dart +++ b/lib/src/dom/streams.dart @@ -25,19 +25,13 @@ typedef TransformerCancelCallback = JSFunction; typedef QueuingStrategySize = JSFunction; typedef ReadableStreamReaderMode = String; typedef ReadableStreamType = String; - -@JS('ReadableStream') -@staticInterop -class ReadableStream { +extension type ReadableStream._(JSObject _) implements JSObject { external factory ReadableStream([ JSObject underlyingSource, QueuingStrategy strategy, ]); external static ReadableStream from(JSAny? asyncIterable); -} - -extension ReadableStreamExtension on ReadableStream { external JSPromise cancel([JSAny? reason]); external ReadableStreamReader getReader( [ReadableStreamGetReaderOptions options]); @@ -52,64 +46,39 @@ extension ReadableStreamExtension on ReadableStream { external JSArray tee(); external bool get locked; } - -@JS() -@staticInterop -@anonymous -class ReadableStreamGetReaderOptions { +extension type ReadableStreamGetReaderOptions._(JSObject _) + implements JSObject { external factory ReadableStreamGetReaderOptions( {ReadableStreamReaderMode mode}); -} -extension ReadableStreamGetReaderOptionsExtension - on ReadableStreamGetReaderOptions { external set mode(ReadableStreamReaderMode value); external ReadableStreamReaderMode get mode; } - -@JS() -@staticInterop -@anonymous -class ReadableStreamIteratorOptions { +extension type ReadableStreamIteratorOptions._(JSObject _) implements JSObject { external factory ReadableStreamIteratorOptions({bool preventCancel}); -} -extension ReadableStreamIteratorOptionsExtension - on ReadableStreamIteratorOptions { external set preventCancel(bool value); external bool get preventCancel; } - -@JS() -@staticInterop -@anonymous -class ReadableWritablePair { +extension type ReadableWritablePair._(JSObject _) implements JSObject { external factory ReadableWritablePair({ required ReadableStream readable, required WritableStream writable, }); -} -extension ReadableWritablePairExtension on ReadableWritablePair { external set readable(ReadableStream value); external ReadableStream get readable; external set writable(WritableStream value); external WritableStream get writable; } - -@JS() -@staticInterop -@anonymous -class StreamPipeOptions { +extension type StreamPipeOptions._(JSObject _) implements JSObject { external factory StreamPipeOptions({ bool preventClose, bool preventAbort, bool preventCancel, AbortSignal signal, }); -} -extension StreamPipeOptionsExtension on StreamPipeOptions { external set preventClose(bool value); external bool get preventClose; external set preventAbort(bool value); @@ -119,11 +88,7 @@ extension StreamPipeOptionsExtension on StreamPipeOptions { external set signal(AbortSignal value); external AbortSignal get signal; } - -@JS() -@staticInterop -@anonymous -class UnderlyingSource { +extension type UnderlyingSource._(JSObject _) implements JSObject { external factory UnderlyingSource({ UnderlyingSourceStartCallback start, UnderlyingSourcePullCallback pull, @@ -131,9 +96,7 @@ class UnderlyingSource { ReadableStreamType type, int autoAllocateChunkSize, }); -} -extension UnderlyingSourceExtension on UnderlyingSource { external set start(UnderlyingSourceStartCallback value); external UnderlyingSourceStartCallback get start; external set pull(UnderlyingSourcePullCallback value); @@ -145,105 +108,64 @@ extension UnderlyingSourceExtension on UnderlyingSource { external set autoAllocateChunkSize(int value); external int get autoAllocateChunkSize; } - -@JS('ReadableStreamDefaultReader') -@staticInterop -class ReadableStreamDefaultReader { +extension type ReadableStreamDefaultReader._(JSObject _) implements JSObject { external factory ReadableStreamDefaultReader(ReadableStream stream); -} -extension ReadableStreamDefaultReaderExtension on ReadableStreamDefaultReader { external JSPromise read(); external void releaseLock(); external JSPromise cancel([JSAny? reason]); external JSPromise get closed; } - -@JS() -@staticInterop -@anonymous -class ReadableStreamReadResult { +extension type ReadableStreamReadResult._(JSObject _) implements JSObject { external factory ReadableStreamReadResult({ JSAny? value, bool done, }); -} -extension ReadableStreamReadResultExtension on ReadableStreamReadResult { external set value(JSAny? value); external JSAny? get value; external set done(bool value); external bool get done; } - -@JS('ReadableStreamBYOBReader') -@staticInterop -class ReadableStreamBYOBReader { +extension type ReadableStreamBYOBReader._(JSObject _) implements JSObject { external factory ReadableStreamBYOBReader(ReadableStream stream); -} -extension ReadableStreamBYOBReaderExtension on ReadableStreamBYOBReader { external JSPromise read(ArrayBufferView view); external void releaseLock(); external JSPromise cancel([JSAny? reason]); external JSPromise get closed; } - -@JS('ReadableStreamDefaultController') -@staticInterop -class ReadableStreamDefaultController {} - -extension ReadableStreamDefaultControllerExtension - on ReadableStreamDefaultController { +extension type ReadableStreamDefaultController._(JSObject _) + implements JSObject { external void close(); external void enqueue([JSAny? chunk]); external void error([JSAny? e]); external num? get desiredSize; } - -@JS('ReadableByteStreamController') -@staticInterop -class ReadableByteStreamController {} - -extension ReadableByteStreamControllerExtension - on ReadableByteStreamController { +extension type ReadableByteStreamController._(JSObject _) implements JSObject { external void close(); external void enqueue(ArrayBufferView chunk); external void error([JSAny? e]); external ReadableStreamBYOBRequest? get byobRequest; external num? get desiredSize; } - -@JS('ReadableStreamBYOBRequest') -@staticInterop -class ReadableStreamBYOBRequest {} - -extension ReadableStreamBYOBRequestExtension on ReadableStreamBYOBRequest { +extension type ReadableStreamBYOBRequest._(JSObject _) implements JSObject { external void respond(int bytesWritten); external void respondWithNewView(ArrayBufferView view); external ArrayBufferView? get view; } - -@JS('WritableStream') -@staticInterop -class WritableStream { +extension type WritableStream._(JSObject _) implements JSObject { external factory WritableStream([ JSObject underlyingSink, QueuingStrategy strategy, ]); -} -extension WritableStreamExtension on WritableStream { external JSPromise abort([JSAny? reason]); external JSPromise close(); external WritableStreamDefaultWriter getWriter(); external bool get locked; } - -@JS() -@staticInterop -@anonymous -class UnderlyingSink { +extension type UnderlyingSink._(JSObject _) implements JSObject { external factory UnderlyingSink({ UnderlyingSinkStartCallback start, UnderlyingSinkWriteCallback write, @@ -251,9 +173,7 @@ class UnderlyingSink { UnderlyingSinkAbortCallback abort, JSAny? type, }); -} -extension UnderlyingSinkExtension on UnderlyingSink { external set start(UnderlyingSinkStartCallback value); external UnderlyingSinkStartCallback get start; external set write(UnderlyingSinkWriteCallback value); @@ -265,14 +185,9 @@ extension UnderlyingSinkExtension on UnderlyingSink { external set type(JSAny? value); external JSAny? get type; } - -@JS('WritableStreamDefaultWriter') -@staticInterop -class WritableStreamDefaultWriter { +extension type WritableStreamDefaultWriter._(JSObject _) implements JSObject { external factory WritableStreamDefaultWriter(WritableStream stream); -} -extension WritableStreamDefaultWriterExtension on WritableStreamDefaultWriter { external JSPromise abort([JSAny? reason]); external JSPromise close(); external void releaseLock(); @@ -281,36 +196,22 @@ extension WritableStreamDefaultWriterExtension on WritableStreamDefaultWriter { external num? get desiredSize; external JSPromise get ready; } - -@JS('WritableStreamDefaultController') -@staticInterop -class WritableStreamDefaultController {} - -extension WritableStreamDefaultControllerExtension - on WritableStreamDefaultController { +extension type WritableStreamDefaultController._(JSObject _) + implements JSObject { external void error([JSAny? e]); external AbortSignal get signal; } - -@JS('TransformStream') -@staticInterop -class TransformStream { +extension type TransformStream._(JSObject _) implements JSObject { external factory TransformStream([ JSObject transformer, QueuingStrategy writableStrategy, QueuingStrategy readableStrategy, ]); -} -extension TransformStreamExtension on TransformStream { external ReadableStream get readable; external WritableStream get writable; } - -@JS() -@staticInterop -@anonymous -class Transformer { +extension type Transformer._(JSObject _) implements JSObject { external factory Transformer({ TransformerStartCallback start, TransformerTransformCallback transform, @@ -319,9 +220,7 @@ class Transformer { JSAny? readableType, JSAny? writableType, }); -} -extension TransformerExtension on Transformer { external set start(TransformerStartCallback value); external TransformerStartCallback get start; external set transform(TransformerTransformCallback value); @@ -335,66 +234,39 @@ extension TransformerExtension on Transformer { external set writableType(JSAny? value); external JSAny? get writableType; } - -@JS('TransformStreamDefaultController') -@staticInterop -class TransformStreamDefaultController {} - -extension TransformStreamDefaultControllerExtension - on TransformStreamDefaultController { +extension type TransformStreamDefaultController._(JSObject _) + implements JSObject { external void enqueue([JSAny? chunk]); external void error([JSAny? reason]); external void terminate(); external num? get desiredSize; } - -@JS() -@staticInterop -@anonymous -class QueuingStrategy { +extension type QueuingStrategy._(JSObject _) implements JSObject { external factory QueuingStrategy({ num highWaterMark, QueuingStrategySize size, }); -} -extension QueuingStrategyExtension on QueuingStrategy { external set highWaterMark(num value); external num get highWaterMark; external set size(QueuingStrategySize value); external QueuingStrategySize get size; } - -@JS() -@staticInterop -@anonymous -class QueuingStrategyInit { +extension type QueuingStrategyInit._(JSObject _) implements JSObject { external factory QueuingStrategyInit({required num highWaterMark}); -} -extension QueuingStrategyInitExtension on QueuingStrategyInit { external set highWaterMark(num value); external num get highWaterMark; } - -@JS('ByteLengthQueuingStrategy') -@staticInterop -class ByteLengthQueuingStrategy { +extension type ByteLengthQueuingStrategy._(JSObject _) implements JSObject { external factory ByteLengthQueuingStrategy(QueuingStrategyInit init); -} -extension ByteLengthQueuingStrategyExtension on ByteLengthQueuingStrategy { external num get highWaterMark; external JSFunction get size; } - -@JS('CountQueuingStrategy') -@staticInterop -class CountQueuingStrategy { +extension type CountQueuingStrategy._(JSObject _) implements JSObject { external factory CountQueuingStrategy(QueuingStrategyInit init); -} -extension CountQueuingStrategyExtension on CountQueuingStrategy { external num get highWaterMark; external JSFunction get size; } diff --git a/lib/src/dom/svg.dart b/lib/src/dom/svg.dart index 6b246587..9f462215 100644 --- a/lib/src/dom/svg.dart +++ b/lib/src/dom/svg.dart @@ -13,14 +13,9 @@ import 'geometry.dart'; import 'html.dart'; import 'web_animations.dart'; -@JS('SVGElement') -@staticInterop -class SVGElement implements Element {} - -extension SVGElementExtension on SVGElement { +extension type SVGElement._(JSObject _) implements Element, JSObject { external void focus([FocusOptions options]); external void blur(); - external SVGAnimatedString get className; external SVGSVGElement? get ownerSVGElement; external SVGElement? get viewportElement; external set onanimationstart(EventHandler value); @@ -238,19 +233,18 @@ extension SVGElementExtension on SVGElement { external CSSStyleDeclaration get style; } -@JS() -@staticInterop -@anonymous -class SVGBoundingBoxOptions { +extension SVGElementExtension on SVGElement { + external SVGAnimatedString get className; +} + +extension type SVGBoundingBoxOptions._(JSObject _) implements JSObject { external factory SVGBoundingBoxOptions({ bool fill, bool stroke, bool markers, bool clipped, }); -} -extension SVGBoundingBoxOptionsExtension on SVGBoundingBoxOptions { external set fill(bool value); external bool get fill; external set stroke(bool value); @@ -260,12 +254,8 @@ extension SVGBoundingBoxOptionsExtension on SVGBoundingBoxOptions { external set clipped(bool value); external bool get clipped; } - -@JS('SVGGraphicsElement') -@staticInterop -class SVGGraphicsElement implements SVGElement {} - -extension SVGGraphicsElementExtension on SVGGraphicsElement { +extension type SVGGraphicsElement._(JSObject _) + implements SVGElement, JSObject { external DOMRect getBBox([SVGBoundingBoxOptions options]); external DOMMatrix? getCTM(); external DOMMatrix? getScreenCTM(); @@ -273,31 +263,19 @@ extension SVGGraphicsElementExtension on SVGGraphicsElement { external SVGStringList get requiredExtensions; external SVGStringList get systemLanguage; } - -@JS('SVGGeometryElement') -@staticInterop -class SVGGeometryElement implements SVGGraphicsElement {} - -extension SVGGeometryElementExtension on SVGGeometryElement { +extension type SVGGeometryElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external bool isPointInFill([DOMPointInit point]); external bool isPointInStroke([DOMPointInit point]); external num getTotalLength(); external DOMPoint getPointAtLength(num distance); external SVGAnimatedNumber get pathLength; } - -@JS('SVGNumber') -@staticInterop -class SVGNumber {} - -extension SVGNumberExtension on SVGNumber { +extension type SVGNumber._(JSObject _) implements JSObject { external set value(num value); external num get value; } - -@JS('SVGLength') -@staticInterop -class SVGLength { +extension type SVGLength._(JSObject _) implements JSObject { external static int get SVG_LENGTHTYPE_UNKNOWN; external static int get SVG_LENGTHTYPE_NUMBER; external static int get SVG_LENGTHTYPE_PERCENTAGE; @@ -309,9 +287,6 @@ class SVGLength { external static int get SVG_LENGTHTYPE_IN; external static int get SVG_LENGTHTYPE_PT; external static int get SVG_LENGTHTYPE_PC; -} - -extension SVGLengthExtension on SVGLength { external void newValueSpecifiedUnits( int unitType, num valueInSpecifiedUnits, @@ -325,18 +300,12 @@ extension SVGLengthExtension on SVGLength { external set valueAsString(String value); external String get valueAsString; } - -@JS('SVGAngle') -@staticInterop -class SVGAngle { +extension type SVGAngle._(JSObject _) implements JSObject { external static int get SVG_ANGLETYPE_UNKNOWN; external static int get SVG_ANGLETYPE_UNSPECIFIED; external static int get SVG_ANGLETYPE_DEG; external static int get SVG_ANGLETYPE_RAD; external static int get SVG_ANGLETYPE_GRAD; -} - -extension SVGAngleExtension on SVGAngle { external void newValueSpecifiedUnits( int unitType, num valueInSpecifiedUnits, @@ -350,12 +319,7 @@ extension SVGAngleExtension on SVGAngle { external set valueAsString(String value); external String get valueAsString; } - -@JS('SVGNumberList') -@staticInterop -class SVGNumberList {} - -extension SVGNumberListExtension on SVGNumberList { +extension type SVGNumberList._(JSObject _) implements JSObject { external void clear(); external SVGNumber initialize(SVGNumber newItem); external SVGNumber getItem(int index); @@ -372,12 +336,7 @@ extension SVGNumberListExtension on SVGNumberList { external int get length; external int get numberOfItems; } - -@JS('SVGLengthList') -@staticInterop -class SVGLengthList {} - -extension SVGLengthListExtension on SVGLengthList { +extension type SVGLengthList._(JSObject _) implements JSObject { external void clear(); external SVGLength initialize(SVGLength newItem); external SVGLength getItem(int index); @@ -394,12 +353,7 @@ extension SVGLengthListExtension on SVGLengthList { external int get length; external int get numberOfItems; } - -@JS('SVGStringList') -@staticInterop -class SVGStringList {} - -extension SVGStringListExtension on SVGStringList { +extension type SVGStringList._(JSObject _) implements JSObject { external void clear(); external String initialize(String newItem); external String getItem(int index); @@ -416,115 +370,58 @@ extension SVGStringListExtension on SVGStringList { external int get length; external int get numberOfItems; } - -@JS('SVGAnimatedBoolean') -@staticInterop -class SVGAnimatedBoolean {} - -extension SVGAnimatedBooleanExtension on SVGAnimatedBoolean { +extension type SVGAnimatedBoolean._(JSObject _) implements JSObject { external set baseVal(bool value); external bool get baseVal; external bool get animVal; } - -@JS('SVGAnimatedEnumeration') -@staticInterop -class SVGAnimatedEnumeration {} - -extension SVGAnimatedEnumerationExtension on SVGAnimatedEnumeration { +extension type SVGAnimatedEnumeration._(JSObject _) implements JSObject { external set baseVal(int value); external int get baseVal; external int get animVal; } - -@JS('SVGAnimatedInteger') -@staticInterop -class SVGAnimatedInteger {} - -extension SVGAnimatedIntegerExtension on SVGAnimatedInteger { +extension type SVGAnimatedInteger._(JSObject _) implements JSObject { external set baseVal(int value); external int get baseVal; external int get animVal; } - -@JS('SVGAnimatedNumber') -@staticInterop -class SVGAnimatedNumber {} - -extension SVGAnimatedNumberExtension on SVGAnimatedNumber { +extension type SVGAnimatedNumber._(JSObject _) implements JSObject { external set baseVal(num value); external num get baseVal; external num get animVal; } - -@JS('SVGAnimatedLength') -@staticInterop -class SVGAnimatedLength {} - -extension SVGAnimatedLengthExtension on SVGAnimatedLength { +extension type SVGAnimatedLength._(JSObject _) implements JSObject { external SVGLength get baseVal; external SVGLength get animVal; } - -@JS('SVGAnimatedAngle') -@staticInterop -class SVGAnimatedAngle {} - -extension SVGAnimatedAngleExtension on SVGAnimatedAngle { +extension type SVGAnimatedAngle._(JSObject _) implements JSObject { external SVGAngle get baseVal; external SVGAngle get animVal; } - -@JS('SVGAnimatedString') -@staticInterop -class SVGAnimatedString {} - -extension SVGAnimatedStringExtension on SVGAnimatedString { +extension type SVGAnimatedString._(JSObject _) implements JSObject { external set baseVal(String value); external String get baseVal; external String get animVal; } - -@JS('SVGAnimatedRect') -@staticInterop -class SVGAnimatedRect {} - -extension SVGAnimatedRectExtension on SVGAnimatedRect { +extension type SVGAnimatedRect._(JSObject _) implements JSObject { external DOMRect get baseVal; external DOMRectReadOnly get animVal; } - -@JS('SVGAnimatedNumberList') -@staticInterop -class SVGAnimatedNumberList {} - -extension SVGAnimatedNumberListExtension on SVGAnimatedNumberList { +extension type SVGAnimatedNumberList._(JSObject _) implements JSObject { external SVGNumberList get baseVal; external SVGNumberList get animVal; } - -@JS('SVGAnimatedLengthList') -@staticInterop -class SVGAnimatedLengthList {} - -extension SVGAnimatedLengthListExtension on SVGAnimatedLengthList { +extension type SVGAnimatedLengthList._(JSObject _) implements JSObject { external SVGLengthList get baseVal; external SVGLengthList get animVal; } - -@JS('SVGUnitTypes') -@staticInterop -class SVGUnitTypes { +extension type SVGUnitTypes._(JSObject _) implements JSObject { external static int get SVG_UNIT_TYPE_UNKNOWN; external static int get SVG_UNIT_TYPE_USERSPACEONUSE; external static int get SVG_UNIT_TYPE_OBJECTBOUNDINGBOX; } - -@JS('SVGSVGElement') -@staticInterop -class SVGSVGElement implements SVGGraphicsElement {} - -extension SVGSVGElementExtension on SVGSVGElement { +extension type SVGSVGElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external NodeList getIntersectionList( DOMRectReadOnly rect, SVGElement? referenceElement, @@ -608,41 +505,21 @@ extension SVGSVGElementExtension on SVGSVGElement { external set onportalactivate(EventHandler value); external EventHandler get onportalactivate; } - -@JS('SVGGElement') -@staticInterop -class SVGGElement implements SVGGraphicsElement {} - -@JS('SVGDefsElement') -@staticInterop -class SVGDefsElement implements SVGGraphicsElement {} - -@JS('SVGDescElement') -@staticInterop -class SVGDescElement implements SVGElement {} - -@JS('SVGMetadataElement') -@staticInterop -class SVGMetadataElement implements SVGElement {} - -@JS('SVGTitleElement') -@staticInterop -class SVGTitleElement implements SVGElement {} - -@JS('SVGSymbolElement') -@staticInterop -class SVGSymbolElement implements SVGGraphicsElement {} - -extension SVGSymbolElementExtension on SVGSymbolElement { +extension type SVGGElement._(JSObject _) + implements SVGGraphicsElement, JSObject {} +extension type SVGDefsElement._(JSObject _) + implements SVGGraphicsElement, JSObject {} +extension type SVGDescElement._(JSObject _) implements SVGElement, JSObject {} +extension type SVGMetadataElement._(JSObject _) + implements SVGElement, JSObject {} +extension type SVGTitleElement._(JSObject _) implements SVGElement, JSObject {} +extension type SVGSymbolElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external SVGAnimatedRect get viewBox; external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; } - -@JS('SVGUseElement') -@staticInterop -class SVGUseElement implements SVGGraphicsElement {} - -extension SVGUseElementExtension on SVGUseElement { +extension type SVGUseElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external SVGAnimatedLength get x; external SVGAnimatedLength get y; external SVGAnimatedLength get width; @@ -651,33 +528,19 @@ extension SVGUseElementExtension on SVGUseElement { external SVGElement? get animatedInstanceRoot; external SVGAnimatedString get href; } - -@JS('SVGUseElementShadowRoot') -@staticInterop -class SVGUseElementShadowRoot implements ShadowRoot {} - -@JS('ShadowAnimation') -@staticInterop -class ShadowAnimation implements Animation { +extension type SVGUseElementShadowRoot._(JSObject _) + implements ShadowRoot, JSObject {} +extension type ShadowAnimation._(JSObject _) implements Animation, JSObject { external factory ShadowAnimation( Animation source, JSObject newTarget, ); -} -extension ShadowAnimationExtension on ShadowAnimation { external Animation get sourceAnimation; } - -@JS('SVGSwitchElement') -@staticInterop -class SVGSwitchElement implements SVGGraphicsElement {} - -@JS('SVGStyleElement') -@staticInterop -class SVGStyleElement implements SVGElement {} - -extension SVGStyleElementExtension on SVGStyleElement { +extension type SVGSwitchElement._(JSObject _) + implements SVGGraphicsElement, JSObject {} +extension type SVGStyleElement._(JSObject _) implements SVGElement, JSObject { external set type(String value); external String get type; external set media(String value); @@ -686,10 +549,7 @@ extension SVGStyleElementExtension on SVGStyleElement { external String get title; external CSSStyleSheet? get sheet; } - -@JS('SVGTransform') -@staticInterop -class SVGTransform { +extension type SVGTransform._(JSObject _) implements JSObject { external static int get SVG_TRANSFORM_UNKNOWN; external static int get SVG_TRANSFORM_MATRIX; external static int get SVG_TRANSFORM_TRANSLATE; @@ -697,9 +557,6 @@ class SVGTransform { external static int get SVG_TRANSFORM_ROTATE; external static int get SVG_TRANSFORM_SKEWX; external static int get SVG_TRANSFORM_SKEWY; -} - -extension SVGTransformExtension on SVGTransform { external void setMatrix([DOMMatrix2DInit matrix]); external void setTranslate( num tx, @@ -720,12 +577,7 @@ extension SVGTransformExtension on SVGTransform { external DOMMatrix get matrix; external num get angle; } - -@JS('SVGTransformList') -@staticInterop -class SVGTransformList {} - -extension SVGTransformListExtension on SVGTransformList { +extension type SVGTransformList._(JSObject _) implements JSObject { external void clear(); external SVGTransform initialize(SVGTransform newItem); external SVGTransform getItem(int index); @@ -744,19 +596,11 @@ extension SVGTransformListExtension on SVGTransformList { external int get length; external int get numberOfItems; } - -@JS('SVGAnimatedTransformList') -@staticInterop -class SVGAnimatedTransformList {} - -extension SVGAnimatedTransformListExtension on SVGAnimatedTransformList { +extension type SVGAnimatedTransformList._(JSObject _) implements JSObject { external SVGTransformList get baseVal; external SVGTransformList get animVal; } - -@JS('SVGPreserveAspectRatio') -@staticInterop -class SVGPreserveAspectRatio { +extension type SVGPreserveAspectRatio._(JSObject _) implements JSObject { external static int get SVG_PRESERVEASPECTRATIO_UNKNOWN; external static int get SVG_PRESERVEASPECTRATIO_NONE; external static int get SVG_PRESERVEASPECTRATIO_XMINYMIN; @@ -771,34 +615,20 @@ class SVGPreserveAspectRatio { external static int get SVG_MEETORSLICE_UNKNOWN; external static int get SVG_MEETORSLICE_MEET; external static int get SVG_MEETORSLICE_SLICE; -} - -extension SVGPreserveAspectRatioExtension on SVGPreserveAspectRatio { external set align(int value); external int get align; external set meetOrSlice(int value); external int get meetOrSlice; } - -@JS('SVGAnimatedPreserveAspectRatio') -@staticInterop -class SVGAnimatedPreserveAspectRatio {} - -extension SVGAnimatedPreserveAspectRatioExtension - on SVGAnimatedPreserveAspectRatio { +extension type SVGAnimatedPreserveAspectRatio._(JSObject _) + implements JSObject { external SVGPreserveAspectRatio get baseVal; external SVGPreserveAspectRatio get animVal; } - -@JS('SVGPathElement') -@staticInterop -class SVGPathElement implements SVGGeometryElement {} - -@JS('SVGRectElement') -@staticInterop -class SVGRectElement implements SVGGeometryElement {} - -extension SVGRectElementExtension on SVGRectElement { +extension type SVGPathElement._(JSObject _) + implements SVGGeometryElement, JSObject {} +extension type SVGRectElement._(JSObject _) + implements SVGGeometryElement, JSObject { external SVGAnimatedLength get x; external SVGAnimatedLength get y; external SVGAnimatedLength get width; @@ -806,44 +636,27 @@ extension SVGRectElementExtension on SVGRectElement { external SVGAnimatedLength get rx; external SVGAnimatedLength get ry; } - -@JS('SVGCircleElement') -@staticInterop -class SVGCircleElement implements SVGGeometryElement {} - -extension SVGCircleElementExtension on SVGCircleElement { +extension type SVGCircleElement._(JSObject _) + implements SVGGeometryElement, JSObject { external SVGAnimatedLength get cx; external SVGAnimatedLength get cy; external SVGAnimatedLength get r; } - -@JS('SVGEllipseElement') -@staticInterop -class SVGEllipseElement implements SVGGeometryElement {} - -extension SVGEllipseElementExtension on SVGEllipseElement { +extension type SVGEllipseElement._(JSObject _) + implements SVGGeometryElement, JSObject { external SVGAnimatedLength get cx; external SVGAnimatedLength get cy; external SVGAnimatedLength get rx; external SVGAnimatedLength get ry; } - -@JS('SVGLineElement') -@staticInterop -class SVGLineElement implements SVGGeometryElement {} - -extension SVGLineElementExtension on SVGLineElement { +extension type SVGLineElement._(JSObject _) + implements SVGGeometryElement, JSObject { external SVGAnimatedLength get x1; external SVGAnimatedLength get y1; external SVGAnimatedLength get x2; external SVGAnimatedLength get y2; } - -@JS('SVGPointList') -@staticInterop -class SVGPointList {} - -extension SVGPointListExtension on SVGPointList { +extension type SVGPointList._(JSObject _) implements JSObject { external void clear(); external DOMPoint initialize(DOMPoint newItem); external DOMPoint getItem(int index); @@ -860,34 +673,21 @@ extension SVGPointListExtension on SVGPointList { external int get length; external int get numberOfItems; } - -@JS('SVGPolylineElement') -@staticInterop -class SVGPolylineElement implements SVGGeometryElement {} - -extension SVGPolylineElementExtension on SVGPolylineElement { +extension type SVGPolylineElement._(JSObject _) + implements SVGGeometryElement, JSObject { external SVGPointList get points; external SVGPointList get animatedPoints; } - -@JS('SVGPolygonElement') -@staticInterop -class SVGPolygonElement implements SVGGeometryElement {} - -extension SVGPolygonElementExtension on SVGPolygonElement { +extension type SVGPolygonElement._(JSObject _) + implements SVGGeometryElement, JSObject { external SVGPointList get points; external SVGPointList get animatedPoints; } - -@JS('SVGTextContentElement') -@staticInterop -class SVGTextContentElement implements SVGGraphicsElement { +extension type SVGTextContentElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external static int get LENGTHADJUST_UNKNOWN; external static int get LENGTHADJUST_SPACING; external static int get LENGTHADJUST_SPACINGANDGLYPHS; -} - -extension SVGTextContentElementExtension on SVGTextContentElement { external int getNumberOfChars(); external num getComputedTextLength(); external num getSubStringLength( @@ -906,50 +706,33 @@ extension SVGTextContentElementExtension on SVGTextContentElement { external SVGAnimatedLength get textLength; external SVGAnimatedEnumeration get lengthAdjust; } - -@JS('SVGTextPositioningElement') -@staticInterop -class SVGTextPositioningElement implements SVGTextContentElement {} - -extension SVGTextPositioningElementExtension on SVGTextPositioningElement { +extension type SVGTextPositioningElement._(JSObject _) + implements SVGTextContentElement, JSObject { external SVGAnimatedLengthList get x; external SVGAnimatedLengthList get y; external SVGAnimatedLengthList get dx; external SVGAnimatedLengthList get dy; external SVGAnimatedNumberList get rotate; } - -@JS('SVGTextElement') -@staticInterop -class SVGTextElement implements SVGTextPositioningElement {} - -@JS('SVGTSpanElement') -@staticInterop -class SVGTSpanElement implements SVGTextPositioningElement {} - -@JS('SVGTextPathElement') -@staticInterop -class SVGTextPathElement implements SVGTextContentElement { +extension type SVGTextElement._(JSObject _) + implements SVGTextPositioningElement, JSObject {} +extension type SVGTSpanElement._(JSObject _) + implements SVGTextPositioningElement, JSObject {} +extension type SVGTextPathElement._(JSObject _) + implements SVGTextContentElement, JSObject { external static int get TEXTPATH_METHODTYPE_UNKNOWN; external static int get TEXTPATH_METHODTYPE_ALIGN; external static int get TEXTPATH_METHODTYPE_STRETCH; external static int get TEXTPATH_SPACINGTYPE_UNKNOWN; external static int get TEXTPATH_SPACINGTYPE_AUTO; external static int get TEXTPATH_SPACINGTYPE_EXACT; -} - -extension SVGTextPathElementExtension on SVGTextPathElement { external SVGAnimatedLength get startOffset; external SVGAnimatedEnumeration get method; external SVGAnimatedEnumeration get spacing; external SVGAnimatedString get href; } - -@JS('SVGImageElement') -@staticInterop -class SVGImageElement implements SVGGraphicsElement {} - -extension SVGImageElementExtension on SVGImageElement { +extension type SVGImageElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external SVGAnimatedLength get x; external SVGAnimatedLength get y; external SVGAnimatedLength get width; @@ -959,30 +742,20 @@ extension SVGImageElementExtension on SVGImageElement { external String? get crossOrigin; external SVGAnimatedString get href; } - -@JS('SVGForeignObjectElement') -@staticInterop -class SVGForeignObjectElement implements SVGGraphicsElement {} - -extension SVGForeignObjectElementExtension on SVGForeignObjectElement { +extension type SVGForeignObjectElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external SVGAnimatedLength get x; external SVGAnimatedLength get y; external SVGAnimatedLength get width; external SVGAnimatedLength get height; } - -@JS('SVGMarkerElement') -@staticInterop -class SVGMarkerElement implements SVGElement { +extension type SVGMarkerElement._(JSObject _) implements SVGElement, JSObject { external static int get SVG_MARKERUNITS_UNKNOWN; external static int get SVG_MARKERUNITS_USERSPACEONUSE; external static int get SVG_MARKERUNITS_STROKEWIDTH; external static int get SVG_MARKER_ORIENT_UNKNOWN; external static int get SVG_MARKER_ORIENT_AUTO; external static int get SVG_MARKER_ORIENT_ANGLE; -} - -extension SVGMarkerElementExtension on SVGMarkerElement { external void setOrientToAuto(); external void setOrientToAngle(SVGAngle angle); external SVGAnimatedLength get refX; @@ -997,39 +770,26 @@ extension SVGMarkerElementExtension on SVGMarkerElement { external SVGAnimatedRect get viewBox; external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; } - -@JS('SVGGradientElement') -@staticInterop -class SVGGradientElement implements SVGElement { +extension type SVGGradientElement._(JSObject _) + implements SVGElement, JSObject { external static int get SVG_SPREADMETHOD_UNKNOWN; external static int get SVG_SPREADMETHOD_PAD; external static int get SVG_SPREADMETHOD_REFLECT; external static int get SVG_SPREADMETHOD_REPEAT; -} - -extension SVGGradientElementExtension on SVGGradientElement { external SVGAnimatedEnumeration get gradientUnits; external SVGAnimatedTransformList get gradientTransform; external SVGAnimatedEnumeration get spreadMethod; external SVGAnimatedString get href; } - -@JS('SVGLinearGradientElement') -@staticInterop -class SVGLinearGradientElement implements SVGGradientElement {} - -extension SVGLinearGradientElementExtension on SVGLinearGradientElement { +extension type SVGLinearGradientElement._(JSObject _) + implements SVGGradientElement, JSObject { external SVGAnimatedLength get x1; external SVGAnimatedLength get y1; external SVGAnimatedLength get x2; external SVGAnimatedLength get y2; } - -@JS('SVGRadialGradientElement') -@staticInterop -class SVGRadialGradientElement implements SVGGradientElement {} - -extension SVGRadialGradientElementExtension on SVGRadialGradientElement { +extension type SVGRadialGradientElement._(JSObject _) + implements SVGGradientElement, JSObject { external SVGAnimatedLength get cx; external SVGAnimatedLength get cy; external SVGAnimatedLength get r; @@ -1037,20 +797,10 @@ extension SVGRadialGradientElementExtension on SVGRadialGradientElement { external SVGAnimatedLength get fy; external SVGAnimatedLength get fr; } - -@JS('SVGStopElement') -@staticInterop -class SVGStopElement implements SVGElement {} - -extension SVGStopElementExtension on SVGStopElement { +extension type SVGStopElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedNumber get offset; } - -@JS('SVGPatternElement') -@staticInterop -class SVGPatternElement implements SVGElement {} - -extension SVGPatternElementExtension on SVGPatternElement { +extension type SVGPatternElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedEnumeration get patternUnits; external SVGAnimatedEnumeration get patternContentUnits; external SVGAnimatedTransformList get patternTransform; @@ -1062,24 +812,15 @@ extension SVGPatternElementExtension on SVGPatternElement { external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; external SVGAnimatedString get href; } - -@JS('SVGScriptElement') -@staticInterop -class SVGScriptElement implements SVGElement {} - -extension SVGScriptElementExtension on SVGScriptElement { +extension type SVGScriptElement._(JSObject _) implements SVGElement, JSObject { external set type(String value); external String get type; external set crossOrigin(String? value); external String? get crossOrigin; external SVGAnimatedString get href; } - -@JS('SVGAElement') -@staticInterop -class SVGAElement implements SVGGraphicsElement {} - -extension SVGAElementExtension on SVGAElement { +extension type SVGAElement._(JSObject _) + implements SVGGraphicsElement, JSObject { external SVGAnimatedString get target; external set download(String value); external String get download; @@ -1117,12 +858,7 @@ extension SVGAElementExtension on SVGAElement { external String get hash; external SVGAnimatedString get href; } - -@JS('SVGViewElement') -@staticInterop -class SVGViewElement implements SVGElement {} - -extension SVGViewElementExtension on SVGViewElement { +extension type SVGViewElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedRect get viewBox; external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; } diff --git a/lib/src/dom/svg_animations.dart b/lib/src/dom/svg_animations.dart index a21f2d72..db1d3e0c 100644 --- a/lib/src/dom/svg_animations.dart +++ b/lib/src/dom/svg_animations.dart @@ -10,11 +10,7 @@ import 'dom.dart'; import 'html.dart'; import 'svg.dart'; -@JS('TimeEvent') -@staticInterop -class TimeEvent implements Event {} - -extension TimeEventExtension on TimeEvent { +extension type TimeEvent._(JSObject _) implements Event, JSObject { external void initTimeEvent( String typeArg, Window? viewArg, @@ -23,12 +19,8 @@ extension TimeEventExtension on TimeEvent { external Window? get view; external int get detail; } - -@JS('SVGAnimationElement') -@staticInterop -class SVGAnimationElement implements SVGElement {} - -extension SVGAnimationElementExtension on SVGAnimationElement { +extension type SVGAnimationElement._(JSObject _) + implements SVGElement, JSObject { external num getStartTime(); external num getCurrentTime(); external num getSimpleDuration(); @@ -46,31 +38,16 @@ extension SVGAnimationElementExtension on SVGAnimationElement { external SVGStringList get requiredExtensions; external SVGStringList get systemLanguage; } - -@JS('SVGAnimateElement') -@staticInterop -class SVGAnimateElement implements SVGAnimationElement {} - -@JS('SVGSetElement') -@staticInterop -class SVGSetElement implements SVGAnimationElement {} - -@JS('SVGAnimateMotionElement') -@staticInterop -class SVGAnimateMotionElement implements SVGAnimationElement {} - -@JS('SVGMPathElement') -@staticInterop -class SVGMPathElement implements SVGElement {} - -extension SVGMPathElementExtension on SVGMPathElement { +extension type SVGAnimateElement._(JSObject _) + implements SVGAnimationElement, JSObject {} +extension type SVGSetElement._(JSObject _) + implements SVGAnimationElement, JSObject {} +extension type SVGAnimateMotionElement._(JSObject _) + implements SVGAnimationElement, JSObject {} +extension type SVGMPathElement._(JSObject _) implements SVGElement, JSObject { external SVGAnimatedString get href; } - -@JS('SVGAnimateTransformElement') -@staticInterop -class SVGAnimateTransformElement implements SVGAnimationElement {} - -@JS('SVGDiscardElement') -@staticInterop -class SVGDiscardElement implements SVGAnimationElement {} +extension type SVGAnimateTransformElement._(JSObject _) + implements SVGAnimationElement, JSObject {} +extension type SVGDiscardElement._(JSObject _) + implements SVGAnimationElement, JSObject {} diff --git a/lib/src/dom/testutils.dart b/lib/src/dom/testutils.dart index 776b85a3..2b2b6341 100644 --- a/lib/src/dom/testutils.dart +++ b/lib/src/dom/testutils.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; @JS() external $TestUtils get TestUtils; - @JS('TestUtils') -@staticInterop -abstract class $TestUtils {} - -extension $TestUtilsExtension on $TestUtils { +extension type $TestUtils._(JSObject _) implements JSObject { external JSPromise gc(); } diff --git a/lib/src/dom/text_detection_api.dart b/lib/src/dom/text_detection_api.dart index a0e9f5bc..c5bb9c50 100644 --- a/lib/src/dom/text_detection_api.dart +++ b/lib/src/dom/text_detection_api.dart @@ -9,28 +9,18 @@ import 'dart:js_interop'; import 'geometry.dart'; import 'html.dart'; -@JS('TextDetector') -@staticInterop -class TextDetector { +extension type TextDetector._(JSObject _) implements JSObject { external factory TextDetector(); -} -extension TextDetectorExtension on TextDetector { external JSPromise detect(ImageBitmapSource image); } - -@JS() -@staticInterop -@anonymous -class DetectedText { +extension type DetectedText._(JSObject _) implements JSObject { external factory DetectedText({ required DOMRectReadOnly boundingBox, required String rawValue, required JSArray cornerPoints, }); -} -extension DetectedTextExtension on DetectedText { external set boundingBox(DOMRectReadOnly value); external DOMRectReadOnly get boundingBox; external set rawValue(String value); diff --git a/lib/src/dom/touch_events.dart b/lib/src/dom/touch_events.dart index 2e4e1637..f30fbab5 100644 --- a/lib/src/dom/touch_events.dart +++ b/lib/src/dom/touch_events.dart @@ -10,11 +10,7 @@ import 'dom.dart'; import 'uievents.dart'; typedef TouchType = String; - -@JS() -@staticInterop -@anonymous -class TouchInit { +extension type TouchInit._(JSObject _) implements JSObject { external factory TouchInit({ required int identifier, required EventTarget target, @@ -32,9 +28,7 @@ class TouchInit { num azimuthAngle, TouchType touchType, }); -} -extension TouchInitExtension on TouchInit { external set identifier(int value); external int get identifier; external set target(EventTarget value); @@ -66,14 +60,9 @@ extension TouchInitExtension on TouchInit { external set touchType(TouchType value); external TouchType get touchType; } - -@JS('Touch') -@staticInterop -class Touch { +extension type Touch._(JSObject _) implements JSObject { external factory Touch(TouchInit touchInitDict); -} -extension TouchExtension on Touch { external int get identifier; external EventTarget get target; external num get screenX; @@ -90,28 +79,18 @@ extension TouchExtension on Touch { external num get azimuthAngle; external TouchType get touchType; } - -@JS('TouchList') -@staticInterop -class TouchList {} - -extension TouchListExtension on TouchList { +extension type TouchList._(JSObject _) implements JSObject { external Touch? item(int index); external int get length; } - -@JS() -@staticInterop -@anonymous -class TouchEventInit implements EventModifierInit { +extension type TouchEventInit._(JSObject _) + implements EventModifierInit, JSObject { external factory TouchEventInit({ JSArray touches, JSArray targetTouches, JSArray changedTouches, }); -} -extension TouchEventInitExtension on TouchEventInit { external set touches(JSArray value); external JSArray get touches; external set targetTouches(JSArray value); @@ -119,17 +98,12 @@ extension TouchEventInitExtension on TouchEventInit { external set changedTouches(JSArray value); external JSArray get changedTouches; } - -@JS('TouchEvent') -@staticInterop -class TouchEvent implements UIEvent { +extension type TouchEvent._(JSObject _) implements UIEvent, JSObject { external factory TouchEvent( String type, [ TouchEventInit eventInitDict, ]); -} -extension TouchEventExtension on TouchEvent { external bool getModifierState(String keyArg); external TouchList get touches; external TouchList get targetTouches; diff --git a/lib/src/dom/trust_token_api.dart b/lib/src/dom/trust_token_api.dart index 2e1765e9..bda54fca 100644 --- a/lib/src/dom/trust_token_api.dart +++ b/lib/src/dom/trust_token_api.dart @@ -9,20 +9,14 @@ import 'dart:js_interop'; typedef RefreshPolicy = String; typedef TokenVersion = String; typedef OperationType = String; - -@JS() -@staticInterop -@anonymous -class PrivateToken { +extension type PrivateToken._(JSObject _) implements JSObject { external factory PrivateToken({ required TokenVersion version, required OperationType operation, RefreshPolicy refreshPolicy, JSArray issuers, }); -} -extension PrivateTokenExtension on PrivateToken { external set version(TokenVersion value); external TokenVersion get version; external set operation(OperationType value); diff --git a/lib/src/dom/trusted_types.dart b/lib/src/dom/trusted_types.dart index 00d4ea58..3b97235f 100644 --- a/lib/src/dom/trusted_types.dart +++ b/lib/src/dom/trusted_types.dart @@ -13,42 +13,19 @@ typedef TrustedType = JSObject; typedef CreateHTMLCallback = JSFunction; typedef CreateScriptCallback = JSFunction; typedef CreateScriptURLCallback = JSFunction; - -@JS('TrustedHTML') -@staticInterop -class TrustedHTML { +extension type TrustedHTML._(JSObject _) implements JSObject { external static TrustedHTML fromLiteral(JSObject templateStringsArray); -} - -extension TrustedHTMLExtension on TrustedHTML { external String toJSON(); } - -@JS('TrustedScript') -@staticInterop -class TrustedScript { +extension type TrustedScript._(JSObject _) implements JSObject { external static TrustedScript fromLiteral(JSObject templateStringsArray); -} - -extension TrustedScriptExtension on TrustedScript { external String toJSON(); } - -@JS('TrustedScriptURL') -@staticInterop -class TrustedScriptURL { +extension type TrustedScriptURL._(JSObject _) implements JSObject { external static TrustedScriptURL fromLiteral(JSObject templateStringsArray); -} - -extension TrustedScriptURLExtension on TrustedScriptURL { external String toJSON(); } - -@JS('TrustedTypePolicyFactory') -@staticInterop -class TrustedTypePolicyFactory {} - -extension TrustedTypePolicyFactoryExtension on TrustedTypePolicyFactory { +extension type TrustedTypePolicyFactory._(JSObject _) implements JSObject { external TrustedTypePolicy createPolicy( String policyName, [ TrustedTypePolicyOptions policyOptions, @@ -71,12 +48,7 @@ extension TrustedTypePolicyFactoryExtension on TrustedTypePolicyFactory { external TrustedScript get emptyScript; external TrustedTypePolicy? get defaultPolicy; } - -@JS('TrustedTypePolicy') -@staticInterop -class TrustedTypePolicy {} - -extension TrustedTypePolicyExtension on TrustedTypePolicy { +extension type TrustedTypePolicy._(JSObject _) implements JSObject { external TrustedHTML createHTML( String input, JSAny? arguments, @@ -91,19 +63,13 @@ extension TrustedTypePolicyExtension on TrustedTypePolicy { ); external String get name; } - -@JS() -@staticInterop -@anonymous -class TrustedTypePolicyOptions { +extension type TrustedTypePolicyOptions._(JSObject _) implements JSObject { external factory TrustedTypePolicyOptions({ CreateHTMLCallback? createHTML, CreateScriptCallback? createScript, CreateScriptURLCallback? createScriptURL, }); -} -extension TrustedTypePolicyOptionsExtension on TrustedTypePolicyOptions { external set createHTML(CreateHTMLCallback? value); external CreateHTMLCallback? get createHTML; external set createScript(CreateScriptCallback? value); diff --git a/lib/src/dom/turtledove.dart b/lib/src/dom/turtledove.dart index e126b902..121b2f7f 100644 --- a/lib/src/dom/turtledove.dart +++ b/lib/src/dom/turtledove.dart @@ -8,10 +8,7 @@ import 'dart:js_interop'; import 'dom.dart'; -@JS() -@staticInterop -@anonymous -class AuctionAd { +extension type AuctionAd._(JSObject _) implements JSObject { external factory AuctionAd({ required String renderURL, JSAny? metadata, @@ -19,9 +16,7 @@ class AuctionAd { String buyerAndSellerReportingId, JSArray allowedReportingOrigins, }); -} -extension AuctionAdExtension on AuctionAd { external set renderURL(String value); external String get renderURL; external set metadata(JSAny? value); @@ -33,11 +28,7 @@ extension AuctionAdExtension on AuctionAd { external set allowedReportingOrigins(JSArray value); external JSArray get allowedReportingOrigins; } - -@JS() -@staticInterop -@anonymous -class GenerateBidInterestGroup { +extension type GenerateBidInterestGroup._(JSObject _) implements JSObject { external factory GenerateBidInterestGroup({ required String owner, required String name, @@ -54,9 +45,7 @@ class GenerateBidInterestGroup { JSArray ads, JSArray adComponents, }); -} -extension GenerateBidInterestGroupExtension on GenerateBidInterestGroup { external set owner(String value); external String get owner; external set name(String value); @@ -86,45 +75,30 @@ extension GenerateBidInterestGroupExtension on GenerateBidInterestGroup { external set adComponents(JSArray value); external JSArray get adComponents; } - -@JS() -@staticInterop -@anonymous -class AuctionAdInterestGroup implements GenerateBidInterestGroup { +extension type AuctionAdInterestGroup._(JSObject _) + implements GenerateBidInterestGroup, JSObject { external factory AuctionAdInterestGroup({ num priority, JSAny prioritySignalsOverrides, }); -} -extension AuctionAdInterestGroupExtension on AuctionAdInterestGroup { external set priority(num value); external num get priority; external set prioritySignalsOverrides(JSAny value); external JSAny get prioritySignalsOverrides; } - -@JS() -@staticInterop -@anonymous -class AuctionAdInterestGroupKey { +extension type AuctionAdInterestGroupKey._(JSObject _) implements JSObject { external factory AuctionAdInterestGroupKey({ required String owner, required String name, }); -} -extension AuctionAdInterestGroupKeyExtension on AuctionAdInterestGroupKey { external set owner(String value); external String get owner; external set name(String value); external String get name; } - -@JS() -@staticInterop -@anonymous -class AuctionAdConfig { +extension type AuctionAdConfig._(JSObject _) implements JSObject { external factory AuctionAdConfig({ required String seller, required String decisionLogicURL, @@ -146,9 +120,7 @@ class AuctionAdConfig { AbortSignal? signal, JSPromise resolveToConfig, }); -} -extension AuctionAdConfigExtension on AuctionAdConfig { external set seller(String value); external String get seller; external set decisionLogicURL(String value); @@ -188,18 +160,10 @@ extension AuctionAdConfigExtension on AuctionAdConfig { external set resolveToConfig(JSPromise value); external JSPromise get resolveToConfig; } - -@JS('InterestGroupScriptRunnerGlobalScope') -@staticInterop -class InterestGroupScriptRunnerGlobalScope {} - -@JS('InterestGroupBiddingScriptRunnerGlobalScope') -@staticInterop -class InterestGroupBiddingScriptRunnerGlobalScope - implements InterestGroupScriptRunnerGlobalScope {} - -extension InterestGroupBiddingScriptRunnerGlobalScopeExtension - on InterestGroupBiddingScriptRunnerGlobalScope { +extension type InterestGroupScriptRunnerGlobalScope._(JSObject _) + implements JSObject {} +extension type InterestGroupBiddingScriptRunnerGlobalScope._(JSObject _) + implements InterestGroupScriptRunnerGlobalScope, JSObject { external bool setBid([GenerateBidOutput generateBidOutput]); external void setPriority(num priority); external void setPrioritySignalsOverride( @@ -207,19 +171,13 @@ extension InterestGroupBiddingScriptRunnerGlobalScopeExtension num? priority, ]); } - -@JS() -@staticInterop -@anonymous -class AdRender { +extension type AdRender._(JSObject _) implements JSObject { external factory AdRender({ required String url, String width, String height, }); -} -extension AdRenderExtension on AdRender { external set url(String value); external String get url; external set width(String value); @@ -227,11 +185,7 @@ extension AdRenderExtension on AdRender { external set height(String value); external String get height; } - -@JS() -@staticInterop -@anonymous -class GenerateBidOutput { +extension type GenerateBidOutput._(JSObject _) implements JSObject { external factory GenerateBidOutput({ num bid, String bidCurrency, @@ -242,9 +196,7 @@ class GenerateBidOutput { num modelingSignals, bool allowComponentAuction, }); -} -extension GenerateBidOutputExtension on GenerateBidOutput { external set bid(num value); external num get bid; external set bidCurrency(String value); @@ -262,19 +214,10 @@ extension GenerateBidOutputExtension on GenerateBidOutput { external set allowComponentAuction(bool value); external bool get allowComponentAuction; } - -@JS('InterestGroupScoringScriptRunnerGlobalScope') -@staticInterop -class InterestGroupScoringScriptRunnerGlobalScope - implements InterestGroupScriptRunnerGlobalScope {} - -@JS('InterestGroupReportingScriptRunnerGlobalScope') -@staticInterop -class InterestGroupReportingScriptRunnerGlobalScope - implements InterestGroupScriptRunnerGlobalScope {} - -extension InterestGroupReportingScriptRunnerGlobalScopeExtension - on InterestGroupReportingScriptRunnerGlobalScope { +extension type InterestGroupScoringScriptRunnerGlobalScope._(JSObject _) + implements InterestGroupScriptRunnerGlobalScope, JSObject {} +extension type InterestGroupReportingScriptRunnerGlobalScope._(JSObject _) + implements InterestGroupScriptRunnerGlobalScope, JSObject { external void sendReportTo(String url); external void registerAdBeacon(JSAny map); external void registerAdMacro( @@ -282,28 +225,18 @@ extension InterestGroupReportingScriptRunnerGlobalScopeExtension String value, ); } - -@JS() -@staticInterop -@anonymous -class PreviousWin { +extension type PreviousWin._(JSObject _) implements JSObject { external factory PreviousWin({ required int timeDelta, required String adJSON, }); -} -extension PreviousWinExtension on PreviousWin { external set timeDelta(int value); external int get timeDelta; external set adJSON(String value); external String get adJSON; } - -@JS() -@staticInterop -@anonymous -class BiddingBrowserSignals { +extension type BiddingBrowserSignals._(JSObject _) implements JSObject { external factory BiddingBrowserSignals({ required String topWindowHostname, required String seller, @@ -315,9 +248,7 @@ class BiddingBrowserSignals { JSObject wasmHelper, int dataVersion, }); -} -extension BiddingBrowserSignalsExtension on BiddingBrowserSignals { external set topWindowHostname(String value); external String get topWindowHostname; external set seller(String value); @@ -337,11 +268,7 @@ extension BiddingBrowserSignalsExtension on BiddingBrowserSignals { external set dataVersion(int value); external int get dataVersion; } - -@JS() -@staticInterop -@anonymous -class ScoringBrowserSignals { +extension type ScoringBrowserSignals._(JSObject _) implements JSObject { external factory ScoringBrowserSignals({ required String topWindowHostname, required String interestGroupOwner, @@ -351,9 +278,7 @@ class ScoringBrowserSignals { int dataVersion, JSArray adComponents, }); -} -extension ScoringBrowserSignalsExtension on ScoringBrowserSignals { external set topWindowHostname(String value); external String get topWindowHostname; external set interestGroupOwner(String value); @@ -369,11 +294,7 @@ extension ScoringBrowserSignalsExtension on ScoringBrowserSignals { external set adComponents(JSArray value); external JSArray get adComponents; } - -@JS() -@staticInterop -@anonymous -class ReportingBrowserSignals { +extension type ReportingBrowserSignals._(JSObject _) implements JSObject { external factory ReportingBrowserSignals({ required String topWindowHostname, required String interestGroupOwner, @@ -386,9 +307,7 @@ class ReportingBrowserSignals { String componentSeller, String buyerAndSellerReportingId, }); -} -extension ReportingBrowserSignalsExtension on ReportingBrowserSignals { external set topWindowHostname(String value); external String get topWindowHostname; external set interestGroupOwner(String value); @@ -410,20 +329,15 @@ extension ReportingBrowserSignalsExtension on ReportingBrowserSignals { external set buyerAndSellerReportingId(String value); external String get buyerAndSellerReportingId; } - -@JS() -@staticInterop -@anonymous -class ReportResultBrowserSignals implements ReportingBrowserSignals { +extension type ReportResultBrowserSignals._(JSObject _) + implements ReportingBrowserSignals, JSObject { external factory ReportResultBrowserSignals({ required num desirability, String topLevelSellerSignals, num modifiedBid, int dataVersion, }); -} -extension ReportResultBrowserSignalsExtension on ReportResultBrowserSignals { external set desirability(num value); external num get desirability; external set topLevelSellerSignals(String value); @@ -433,11 +347,8 @@ extension ReportResultBrowserSignalsExtension on ReportResultBrowserSignals { external set dataVersion(int value); external int get dataVersion; } - -@JS() -@staticInterop -@anonymous -class ReportWinBrowserSignals implements ReportingBrowserSignals { +extension type ReportWinBrowserSignals._(JSObject _) + implements ReportingBrowserSignals, JSObject { external factory ReportWinBrowserSignals({ num adCost, String seller, @@ -447,9 +358,7 @@ class ReportWinBrowserSignals implements ReportingBrowserSignals { int modelingSignals, int dataVersion, }); -} -extension ReportWinBrowserSignalsExtension on ReportWinBrowserSignals { external set adCost(num value); external num get adCost; external set seller(String value); @@ -465,11 +374,7 @@ extension ReportWinBrowserSignalsExtension on ReportWinBrowserSignals { external set dataVersion(int value); external int get dataVersion; } - -@JS() -@staticInterop -@anonymous -class ScoreAdOutput { +extension type ScoreAdOutput._(JSObject _) implements JSObject { external factory ScoreAdOutput({ required num desirability, num bid, @@ -477,9 +382,7 @@ class ScoreAdOutput { num incomingBidInSellerCurrency, bool allowComponentAuction, }); -} -extension ScoreAdOutputExtension on ScoreAdOutput { external set desirability(num value); external num get desirability; external set bid(num value); diff --git a/lib/src/dom/ua_client_hints.dart b/lib/src/dom/ua_client_hints.dart index 554924bc..332b01a3 100644 --- a/lib/src/dom/ua_client_hints.dart +++ b/lib/src/dom/ua_client_hints.dart @@ -6,27 +6,18 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class NavigatorUABrandVersion { +extension type NavigatorUABrandVersion._(JSObject _) implements JSObject { external factory NavigatorUABrandVersion({ String brand, String version, }); -} -extension NavigatorUABrandVersionExtension on NavigatorUABrandVersion { external set brand(String value); external String get brand; external set version(String value); external String get version; } - -@JS() -@staticInterop -@anonymous -class UADataValues { +extension type UADataValues._(JSObject _) implements JSObject { external factory UADataValues({ String architecture, String bitness, @@ -40,9 +31,7 @@ class UADataValues { String uaFullVersion, bool wow64, }); -} -extension UADataValuesExtension on UADataValues { external set architecture(String value); external String get architecture; external set bitness(String value); @@ -66,19 +55,13 @@ extension UADataValuesExtension on UADataValues { external set wow64(bool value); external bool get wow64; } - -@JS() -@staticInterop -@anonymous -class UALowEntropyJSON { +extension type UALowEntropyJSON._(JSObject _) implements JSObject { external factory UALowEntropyJSON({ JSArray brands, bool mobile, String platform, }); -} -extension UALowEntropyJSONExtension on UALowEntropyJSON { external set brands(JSArray value); external JSArray get brands; external set mobile(bool value); @@ -86,12 +69,7 @@ extension UALowEntropyJSONExtension on UALowEntropyJSON { external set platform(String value); external String get platform; } - -@JS('NavigatorUAData') -@staticInterop -class NavigatorUAData {} - -extension NavigatorUADataExtension on NavigatorUAData { +extension type NavigatorUAData._(JSObject _) implements JSObject { external JSPromise getHighEntropyValues(JSArray hints); external UALowEntropyJSON toJSON(); external JSArray get brands; diff --git a/lib/src/dom/uievents.dart b/lib/src/dom/uievents.dart index 03ddc5e4..c9edb0f5 100644 --- a/lib/src/dom/uievents.dart +++ b/lib/src/dom/uievents.dart @@ -10,16 +10,12 @@ import 'dom.dart'; import 'html.dart'; import 'input_device_capabilities.dart'; -@JS('UIEvent') -@staticInterop -class UIEvent implements Event { +extension type UIEvent._(JSObject _) implements Event, JSObject { external factory UIEvent( String type, [ UIEventInit eventInitDict, ]); -} -extension UIEventExtension on UIEvent { external void initUIEvent( String typeArg, [ bool bubblesArg, @@ -32,20 +28,14 @@ extension UIEventExtension on UIEvent { external int get detail; external int get which; } - -@JS() -@staticInterop -@anonymous -class UIEventInit implements EventInit { +extension type UIEventInit._(JSObject _) implements EventInit, JSObject { external factory UIEventInit({ InputDeviceCapabilities? sourceCapabilities, Window? view, int detail, int which, }); -} -extension UIEventInitExtension on UIEventInit { external set sourceCapabilities(InputDeviceCapabilities? value); external InputDeviceCapabilities? get sourceCapabilities; external set view(Window? value); @@ -55,42 +45,26 @@ extension UIEventInitExtension on UIEventInit { external set which(int value); external int get which; } - -@JS('FocusEvent') -@staticInterop -class FocusEvent implements UIEvent { +extension type FocusEvent._(JSObject _) implements UIEvent, JSObject { external factory FocusEvent( String type, [ FocusEventInit eventInitDict, ]); -} -extension FocusEventExtension on FocusEvent { external EventTarget? get relatedTarget; } - -@JS() -@staticInterop -@anonymous -class FocusEventInit implements UIEventInit { +extension type FocusEventInit._(JSObject _) implements UIEventInit, JSObject { external factory FocusEventInit({EventTarget? relatedTarget}); -} -extension FocusEventInitExtension on FocusEventInit { external set relatedTarget(EventTarget? value); external EventTarget? get relatedTarget; } - -@JS('MouseEvent') -@staticInterop -class MouseEvent implements UIEvent { +extension type MouseEvent._(JSObject _) implements UIEvent, JSObject { external factory MouseEvent( String type, [ MouseEventInit eventInitDict, ]); -} -extension MouseEventExtension on MouseEvent { external bool getModifierState(String keyArg); external void initMouseEvent( String typeArg, [ @@ -131,11 +105,8 @@ extension MouseEventExtension on MouseEvent { external int get buttons; external EventTarget? get relatedTarget; } - -@JS() -@staticInterop -@anonymous -class MouseEventInit implements EventModifierInit { +extension type MouseEventInit._(JSObject _) + implements EventModifierInit, JSObject { external factory MouseEventInit({ num movementX, num movementY, @@ -147,9 +118,7 @@ class MouseEventInit implements EventModifierInit { int buttons, EventTarget? relatedTarget, }); -} -extension MouseEventInitExtension on MouseEventInit { external set movementX(num value); external num get movementX; external set movementY(num value); @@ -169,11 +138,8 @@ extension MouseEventInitExtension on MouseEventInit { external set relatedTarget(EventTarget? value); external EventTarget? get relatedTarget; } - -@JS() -@staticInterop -@anonymous -class EventModifierInit implements UIEventInit { +extension type EventModifierInit._(JSObject _) + implements UIEventInit, JSObject { external factory EventModifierInit({ bool ctrlKey, bool shiftKey, @@ -190,9 +156,7 @@ class EventModifierInit implements UIEventInit { bool modifierSymbol, bool modifierSymbolLock, }); -} -extension EventModifierInitExtension on EventModifierInit { external set ctrlKey(bool value); external bool get ctrlKey; external set shiftKey(bool value); @@ -222,10 +186,7 @@ extension EventModifierInitExtension on EventModifierInit { external set modifierSymbolLock(bool value); external bool get modifierSymbolLock; } - -@JS('WheelEvent') -@staticInterop -class WheelEvent implements MouseEvent { +extension type WheelEvent._(JSObject _) implements MouseEvent, JSObject { external factory WheelEvent( String type, [ WheelEventInit eventInitDict, @@ -234,28 +195,20 @@ class WheelEvent implements MouseEvent { external static int get DOM_DELTA_PIXEL; external static int get DOM_DELTA_LINE; external static int get DOM_DELTA_PAGE; -} - -extension WheelEventExtension on WheelEvent { external num get deltaX; external num get deltaY; external num get deltaZ; external int get deltaMode; } - -@JS() -@staticInterop -@anonymous -class WheelEventInit implements MouseEventInit { +extension type WheelEventInit._(JSObject _) + implements MouseEventInit, JSObject { external factory WheelEventInit({ num deltaX, num deltaY, num deltaZ, int deltaMode, }); -} -extension WheelEventInitExtension on WheelEventInit { external set deltaX(num value); external num get deltaX; external set deltaY(num value); @@ -265,28 +218,19 @@ extension WheelEventInitExtension on WheelEventInit { external set deltaMode(int value); external int get deltaMode; } - -@JS('InputEvent') -@staticInterop -class InputEvent implements UIEvent { +extension type InputEvent._(JSObject _) implements UIEvent, JSObject { external factory InputEvent( String type, [ InputEventInit eventInitDict, ]); -} -extension InputEventExtension on InputEvent { external JSArray getTargetRanges(); external DataTransfer? get dataTransfer; external String? get data; external bool get isComposing; external String get inputType; } - -@JS() -@staticInterop -@anonymous -class InputEventInit implements UIEventInit { +extension type InputEventInit._(JSObject _) implements UIEventInit, JSObject { external factory InputEventInit({ DataTransfer? dataTransfer, JSArray targetRanges, @@ -294,9 +238,7 @@ class InputEventInit implements UIEventInit { bool isComposing, String inputType, }); -} -extension InputEventInitExtension on InputEventInit { external set dataTransfer(DataTransfer? value); external DataTransfer? get dataTransfer; external set targetRanges(JSArray value); @@ -308,10 +250,7 @@ extension InputEventInitExtension on InputEventInit { external set inputType(String value); external String get inputType; } - -@JS('KeyboardEvent') -@staticInterop -class KeyboardEvent implements UIEvent { +extension type KeyboardEvent._(JSObject _) implements UIEvent, JSObject { external factory KeyboardEvent( String type, [ KeyboardEventInit eventInitDict, @@ -321,9 +260,6 @@ class KeyboardEvent implements UIEvent { external static int get DOM_KEY_LOCATION_LEFT; external static int get DOM_KEY_LOCATION_RIGHT; external static int get DOM_KEY_LOCATION_NUMPAD; -} - -extension KeyboardEventExtension on KeyboardEvent { external bool getModifierState(String keyArg); external void initKeyboardEvent( String typeArg, [ @@ -349,11 +285,8 @@ extension KeyboardEventExtension on KeyboardEvent { external int get charCode; external int get keyCode; } - -@JS() -@staticInterop -@anonymous -class KeyboardEventInit implements EventModifierInit { +extension type KeyboardEventInit._(JSObject _) + implements EventModifierInit, JSObject { external factory KeyboardEventInit({ String key, String code, @@ -363,9 +296,7 @@ class KeyboardEventInit implements EventModifierInit { int charCode, int keyCode, }); -} -extension KeyboardEventInitExtension on KeyboardEventInit { external set key(String value); external String get key; external set code(String value); @@ -381,17 +312,12 @@ extension KeyboardEventInitExtension on KeyboardEventInit { external set keyCode(int value); external int get keyCode; } - -@JS('CompositionEvent') -@staticInterop -class CompositionEvent implements UIEvent { +extension type CompositionEvent._(JSObject _) implements UIEvent, JSObject { external factory CompositionEvent( String type, [ CompositionEventInit eventInitDict, ]); -} -extension CompositionEventExtension on CompositionEvent { external void initCompositionEvent( String typeArg, [ bool bubblesArg, @@ -401,28 +327,17 @@ extension CompositionEventExtension on CompositionEvent { ]); external String get data; } - -@JS() -@staticInterop -@anonymous -class CompositionEventInit implements UIEventInit { +extension type CompositionEventInit._(JSObject _) + implements UIEventInit, JSObject { external factory CompositionEventInit({String data}); -} -extension CompositionEventInitExtension on CompositionEventInit { external set data(String value); external String get data; } - -@JS('MutationEvent') -@staticInterop -class MutationEvent implements Event { +extension type MutationEvent._(JSObject _) implements Event, JSObject { external static int get MODIFICATION; external static int get ADDITION; external static int get REMOVAL; -} - -extension MutationEventExtension on MutationEvent { external void initMutationEvent( String typeArg, [ bool bubblesArg, diff --git a/lib/src/dom/url.dart b/lib/src/dom/url.dart index 5f6d9670..b5c9a0cc 100644 --- a/lib/src/dom/url.dart +++ b/lib/src/dom/url.dart @@ -6,9 +6,7 @@ import 'dart:js_interop'; -@JS('URL') -@staticInterop -class URL { +extension type URL._(JSObject _) implements JSObject { external factory URL( String url, [ String base, @@ -20,9 +18,6 @@ class URL { String url, [ String base, ]); -} - -extension URLExtension on URL { external String toJSON(); external set href(String value); external String get href; @@ -47,14 +42,9 @@ extension URLExtension on URL { external set hash(String value); external String get hash; } - -@JS('URLSearchParams') -@staticInterop -class URLSearchParams { +extension type URLSearchParams._(JSObject _) implements JSObject { external factory URLSearchParams([JSAny init]); -} -extension URLSearchParamsExtension on URLSearchParams { external void append( String name, String value, diff --git a/lib/src/dom/urlpattern.dart b/lib/src/dom/urlpattern.dart index 3578b4c4..0b3b36c6 100644 --- a/lib/src/dom/urlpattern.dart +++ b/lib/src/dom/urlpattern.dart @@ -7,18 +7,13 @@ import 'dart:js_interop'; typedef URLPatternInput = JSAny; - -@JS('URLPattern') -@staticInterop -class URLPattern { +extension type URLPattern._(JSObject _) implements JSObject { external factory URLPattern([ URLPatternInput input, JSAny baseURLOrOptions, URLPatternOptions options, ]); -} -extension URLPatternExtension on URLPattern { external bool test([ URLPatternInput input, String baseURL, @@ -36,11 +31,7 @@ extension URLPatternExtension on URLPattern { external String get search; external String get hash; } - -@JS() -@staticInterop -@anonymous -class URLPatternInit { +extension type URLPatternInit._(JSObject _) implements JSObject { external factory URLPatternInit({ String protocol, String username, @@ -52,9 +43,7 @@ class URLPatternInit { String hash, String baseURL, }); -} -extension URLPatternInitExtension on URLPatternInit { external set protocol(String value); external String get protocol; external set username(String value); @@ -74,23 +63,13 @@ extension URLPatternInitExtension on URLPatternInit { external set baseURL(String value); external String get baseURL; } - -@JS() -@staticInterop -@anonymous -class URLPatternOptions { +extension type URLPatternOptions._(JSObject _) implements JSObject { external factory URLPatternOptions({bool ignoreCase}); -} -extension URLPatternOptionsExtension on URLPatternOptions { external set ignoreCase(bool value); external bool get ignoreCase; } - -@JS() -@staticInterop -@anonymous -class URLPatternResult { +extension type URLPatternResult._(JSObject _) implements JSObject { external factory URLPatternResult({ JSArray inputs, URLPatternComponentResult protocol, @@ -102,9 +81,7 @@ class URLPatternResult { URLPatternComponentResult search, URLPatternComponentResult hash, }); -} -extension URLPatternResultExtension on URLPatternResult { external set inputs(JSArray value); external JSArray get inputs; external set protocol(URLPatternComponentResult value); @@ -124,18 +101,12 @@ extension URLPatternResultExtension on URLPatternResult { external set hash(URLPatternComponentResult value); external URLPatternComponentResult get hash; } - -@JS() -@staticInterop -@anonymous -class URLPatternComponentResult { +extension type URLPatternComponentResult._(JSObject _) implements JSObject { external factory URLPatternComponentResult({ String input, JSAny groups, }); -} -extension URLPatternComponentResultExtension on URLPatternComponentResult { external set input(String value); external String get input; external set groups(JSAny value); diff --git a/lib/src/dom/user_timing.dart b/lib/src/dom/user_timing.dart index d567509d..1a0110c4 100644 --- a/lib/src/dom/user_timing.dart +++ b/lib/src/dom/user_timing.dart @@ -9,36 +9,25 @@ import 'dart:js_interop'; import 'hr_time.dart'; import 'performance_timeline.dart'; -@JS() -@staticInterop -@anonymous -class PerformanceMarkOptions { +extension type PerformanceMarkOptions._(JSObject _) implements JSObject { external factory PerformanceMarkOptions({ JSAny? detail, DOMHighResTimeStamp startTime, }); -} -extension PerformanceMarkOptionsExtension on PerformanceMarkOptions { external set detail(JSAny? value); external JSAny? get detail; external set startTime(DOMHighResTimeStamp value); external DOMHighResTimeStamp get startTime; } - -@JS() -@staticInterop -@anonymous -class PerformanceMeasureOptions { +extension type PerformanceMeasureOptions._(JSObject _) implements JSObject { external factory PerformanceMeasureOptions({ JSAny? detail, JSAny start, DOMHighResTimeStamp duration, JSAny end, }); -} -extension PerformanceMeasureOptionsExtension on PerformanceMeasureOptions { external set detail(JSAny? value); external JSAny? get detail; external set start(JSAny value); @@ -48,24 +37,16 @@ extension PerformanceMeasureOptionsExtension on PerformanceMeasureOptions { external set end(JSAny value); external JSAny get end; } - -@JS('PerformanceMark') -@staticInterop -class PerformanceMark implements PerformanceEntry { +extension type PerformanceMark._(JSObject _) + implements PerformanceEntry, JSObject { external factory PerformanceMark( String markName, [ PerformanceMarkOptions markOptions, ]); -} -extension PerformanceMarkExtension on PerformanceMark { external JSAny? get detail; } - -@JS('PerformanceMeasure') -@staticInterop -class PerformanceMeasure implements PerformanceEntry {} - -extension PerformanceMeasureExtension on PerformanceMeasure { +extension type PerformanceMeasure._(JSObject _) + implements PerformanceEntry, JSObject { external JSAny? get detail; } diff --git a/lib/src/dom/video_rvfc.dart b/lib/src/dom/video_rvfc.dart index 49ffc9bd..f0ee8e2a 100644 --- a/lib/src/dom/video_rvfc.dart +++ b/lib/src/dom/video_rvfc.dart @@ -9,11 +9,7 @@ import 'dart:js_interop'; import 'hr_time.dart'; typedef VideoFrameRequestCallback = JSFunction; - -@JS() -@staticInterop -@anonymous -class VideoFrameCallbackMetadata { +extension type VideoFrameCallbackMetadata._(JSObject _) implements JSObject { external factory VideoFrameCallbackMetadata({ required DOMHighResTimeStamp presentationTime, required DOMHighResTimeStamp expectedDisplayTime, @@ -26,9 +22,7 @@ class VideoFrameCallbackMetadata { DOMHighResTimeStamp receiveTime, int rtpTimestamp, }); -} -extension VideoFrameCallbackMetadataExtension on VideoFrameCallbackMetadata { external set presentationTime(DOMHighResTimeStamp value); external DOMHighResTimeStamp get presentationTime; external set expectedDisplayTime(DOMHighResTimeStamp value); diff --git a/lib/src/dom/virtual_keyboard.dart b/lib/src/dom/virtual_keyboard.dart index 94e86dd7..d349bec1 100644 --- a/lib/src/dom/virtual_keyboard.dart +++ b/lib/src/dom/virtual_keyboard.dart @@ -10,11 +10,7 @@ import 'dom.dart'; import 'geometry.dart'; import 'html.dart'; -@JS('VirtualKeyboard') -@staticInterop -class VirtualKeyboard implements EventTarget {} - -extension VirtualKeyboardExtension on VirtualKeyboard { +extension type VirtualKeyboard._(JSObject _) implements EventTarget, JSObject { external void show(); external void hide(); external DOMRect get boundingRect; diff --git a/lib/src/dom/wasm_js_api.dart b/lib/src/dom/wasm_js_api.dart index d2aa518e..8642a600 100644 --- a/lib/src/dom/wasm_js_api.dart +++ b/lib/src/dom/wasm_js_api.dart @@ -11,33 +11,21 @@ import 'webidl.dart'; typedef ImportExportKind = String; typedef TableKind = String; typedef ValueType = String; - -@JS() -@staticInterop -@anonymous -class WebAssemblyInstantiatedSource { +extension type WebAssemblyInstantiatedSource._(JSObject _) implements JSObject { external factory WebAssemblyInstantiatedSource({ required Module module, required Instance instance, }); -} -extension WebAssemblyInstantiatedSourceExtension - on WebAssemblyInstantiatedSource { external set module(Module value); external Module get module; external set instance(Instance value); external Instance get instance; } - @JS() external $WebAssembly get WebAssembly; - @JS('WebAssembly') -@staticInterop -abstract class $WebAssembly {} - -extension $WebAssemblyExtension on $WebAssembly { +extension type $WebAssembly._(JSObject _) implements JSObject { external bool validate(BufferSource bytes); external JSPromise compile(BufferSource bytes); external JSPromise instantiate( @@ -50,36 +38,24 @@ extension $WebAssemblyExtension on $WebAssembly { JSObject importObject, ]); } - -@JS() -@staticInterop -@anonymous -class ModuleExportDescriptor { +extension type ModuleExportDescriptor._(JSObject _) implements JSObject { external factory ModuleExportDescriptor({ required String name, required ImportExportKind kind, }); -} -extension ModuleExportDescriptorExtension on ModuleExportDescriptor { external set name(String value); external String get name; external set kind(ImportExportKind value); external ImportExportKind get kind; } - -@JS() -@staticInterop -@anonymous -class ModuleImportDescriptor { +extension type ModuleImportDescriptor._(JSObject _) implements JSObject { external factory ModuleImportDescriptor({ required String module, required String name, required ImportExportKind kind, }); -} -extension ModuleImportDescriptorExtension on ModuleImportDescriptor { external set module(String value); external String get module; external set name(String value); @@ -87,10 +63,7 @@ extension ModuleImportDescriptorExtension on ModuleImportDescriptor { external set kind(ImportExportKind value); external ImportExportKind get kind; } - -@JS('Module') -@staticInterop -class Module { +extension type Module._(JSObject _) implements JSObject { external factory Module(BufferSource bytes); external static JSArray exports(Module moduleObject); @@ -100,60 +73,38 @@ class Module { String sectionName, ); } - -@JS('Instance') -@staticInterop -class Instance { +extension type Instance._(JSObject _) implements JSObject { external factory Instance( Module module, [ JSObject importObject, ]); -} -extension InstanceExtension on Instance { external JSObject get exports; } - -@JS() -@staticInterop -@anonymous -class MemoryDescriptor { +extension type MemoryDescriptor._(JSObject _) implements JSObject { external factory MemoryDescriptor({ required int initial, int maximum, }); -} -extension MemoryDescriptorExtension on MemoryDescriptor { external set initial(int value); external int get initial; external set maximum(int value); external int get maximum; } - -@JS('Memory') -@staticInterop -class Memory { +extension type Memory._(JSObject _) implements JSObject { external factory Memory(MemoryDescriptor descriptor); -} -extension MemoryExtension on Memory { external int grow(int delta); external JSArrayBuffer get buffer; } - -@JS() -@staticInterop -@anonymous -class TableDescriptor { +extension type TableDescriptor._(JSObject _) implements JSObject { external factory TableDescriptor({ required TableKind element, required int initial, int maximum, }); -} -extension TableDescriptorExtension on TableDescriptor { external set element(TableKind value); external TableKind get element; external set initial(int value); @@ -161,17 +112,12 @@ extension TableDescriptorExtension on TableDescriptor { external set maximum(int value); external int get maximum; } - -@JS('Table') -@staticInterop -class Table { +extension type Table._(JSObject _) implements JSObject { external factory Table( TableDescriptor descriptor, [ JSAny? value, ]); -} -extension TableExtension on Table { external int grow( int delta, [ JSAny? value, @@ -183,34 +129,23 @@ extension TableExtension on Table { ]); external int get length; } - -@JS() -@staticInterop -@anonymous -class GlobalDescriptor { +extension type GlobalDescriptor._(JSObject _) implements JSObject { external factory GlobalDescriptor({ required ValueType value, bool mutable, }); -} -extension GlobalDescriptorExtension on GlobalDescriptor { external set value(ValueType value); external ValueType get value; external set mutable(bool value); external bool get mutable; } - -@JS('Global') -@staticInterop -class Global { +extension type Global._(JSObject _) implements JSObject { external factory Global( GlobalDescriptor descriptor, [ JSAny? v, ]); -} -extension GlobalExtension on Global { external JSAny? valueOf(); external set value(JSAny? value); external JSAny? get value; diff --git a/lib/src/dom/web_animations.dart b/lib/src/dom/web_animations.dart index d3e671cd..65bb36ed 100644 --- a/lib/src/dom/web_animations.dart +++ b/lib/src/dom/web_animations.dart @@ -18,45 +18,27 @@ typedef FillMode = String; typedef PlaybackDirection = String; typedef CompositeOperation = String; typedef CompositeOperationOrAuto = String; - -@JS('AnimationTimeline') -@staticInterop -class AnimationTimeline {} - -extension AnimationTimelineExtension on AnimationTimeline { +extension type AnimationTimeline._(JSObject _) implements JSObject { external Animation play([AnimationEffect? effect]); external CSSNumberish? get currentTime; external CSSNumberish? get duration; } - -@JS() -@staticInterop -@anonymous -class DocumentTimelineOptions { +extension type DocumentTimelineOptions._(JSObject _) implements JSObject { external factory DocumentTimelineOptions({DOMHighResTimeStamp originTime}); -} -extension DocumentTimelineOptionsExtension on DocumentTimelineOptions { external set originTime(DOMHighResTimeStamp value); external DOMHighResTimeStamp get originTime; } - -@JS('DocumentTimeline') -@staticInterop -class DocumentTimeline implements AnimationTimeline { +extension type DocumentTimeline._(JSObject _) + implements AnimationTimeline, JSObject { external factory DocumentTimeline([DocumentTimelineOptions options]); } - -@JS('Animation') -@staticInterop -class Animation implements EventTarget { +extension type Animation._(JSObject _) implements EventTarget, JSObject { external factory Animation([ AnimationEffect? effect, AnimationTimeline? timeline, ]); -} -extension AnimationExtension on Animation { external void cancel(); external void finish(); external void play(); @@ -89,12 +71,7 @@ extension AnimationExtension on Animation { external set onremove(EventHandler value); external EventHandler get onremove; } - -@JS('AnimationEffect') -@staticInterop -class AnimationEffect {} - -extension AnimationEffectExtension on AnimationEffect { +extension type AnimationEffect._(JSObject _) implements JSObject { external void before(AnimationEffect effects); external void after(AnimationEffect effects); external void replace(AnimationEffect effects); @@ -106,11 +83,7 @@ extension AnimationEffectExtension on AnimationEffect { external AnimationEffect? get previousSibling; external AnimationEffect? get nextSibling; } - -@JS() -@staticInterop -@anonymous -class EffectTiming { +extension type EffectTiming._(JSObject _) implements JSObject { external factory EffectTiming({ num delay, num endDelay, @@ -122,9 +95,7 @@ class EffectTiming { PlaybackDirection direction, String easing, }); -} -extension EffectTimingExtension on EffectTiming { external set delay(num value); external num get delay; external set endDelay(num value); @@ -144,11 +115,7 @@ extension EffectTimingExtension on EffectTiming { external set easing(String value); external String get easing; } - -@JS() -@staticInterop -@anonymous -class OptionalEffectTiming { +extension type OptionalEffectTiming._(JSObject _) implements JSObject { external factory OptionalEffectTiming({ num playbackRate, num delay, @@ -160,9 +127,7 @@ class OptionalEffectTiming { PlaybackDirection direction, String easing, }); -} -extension OptionalEffectTimingExtension on OptionalEffectTiming { external set playbackRate(num value); external num get playbackRate; external set delay(num value); @@ -182,11 +147,8 @@ extension OptionalEffectTimingExtension on OptionalEffectTiming { external set easing(String value); external String get easing; } - -@JS() -@staticInterop -@anonymous -class ComputedEffectTiming implements EffectTiming { +extension type ComputedEffectTiming._(JSObject _) + implements EffectTiming, JSObject { external factory ComputedEffectTiming({ CSSNumberish startTime, CSSNumberish endTime, @@ -195,9 +157,7 @@ class ComputedEffectTiming implements EffectTiming { num? progress, num? currentIteration, }); -} -extension ComputedEffectTimingExtension on ComputedEffectTiming { external set startTime(CSSNumberish value); external CSSNumberish get startTime; external set endTime(CSSNumberish value); @@ -211,18 +171,14 @@ extension ComputedEffectTimingExtension on ComputedEffectTiming { external set currentIteration(num? value); external num? get currentIteration; } - -@JS('KeyframeEffect') -@staticInterop -class KeyframeEffect implements AnimationEffect { +extension type KeyframeEffect._(JSObject _) + implements AnimationEffect, JSObject { external factory KeyframeEffect( JSObject? sourceOrTarget, [ JSObject? keyframes, JSAny options, ]); -} -extension KeyframeEffectExtension on KeyframeEffect { external JSArray getKeyframes(); external void setKeyframes(JSObject? keyframes); external set iterationComposite(IterationCompositeOperation value); @@ -234,20 +190,14 @@ extension KeyframeEffectExtension on KeyframeEffect { external set composite(CompositeOperation value); external CompositeOperation get composite; } - -@JS() -@staticInterop -@anonymous -class BaseComputedKeyframe { +extension type BaseComputedKeyframe._(JSObject _) implements JSObject { external factory BaseComputedKeyframe({ num? offset, num computedOffset, String easing, CompositeOperationOrAuto composite, }); -} -extension BaseComputedKeyframeExtension on BaseComputedKeyframe { external set offset(num? value); external num? get offset; external set computedOffset(num value); @@ -257,19 +207,13 @@ extension BaseComputedKeyframeExtension on BaseComputedKeyframe { external set composite(CompositeOperationOrAuto value); external CompositeOperationOrAuto get composite; } - -@JS() -@staticInterop -@anonymous -class BasePropertyIndexedKeyframe { +extension type BasePropertyIndexedKeyframe._(JSObject _) implements JSObject { external factory BasePropertyIndexedKeyframe({ JSAny? offset, JSAny easing, JSAny composite, }); -} -extension BasePropertyIndexedKeyframeExtension on BasePropertyIndexedKeyframe { external set offset(JSAny? value); external JSAny? get offset; external set easing(JSAny value); @@ -277,19 +221,13 @@ extension BasePropertyIndexedKeyframeExtension on BasePropertyIndexedKeyframe { external set composite(JSAny value); external JSAny get composite; } - -@JS() -@staticInterop -@anonymous -class BaseKeyframe { +extension type BaseKeyframe._(JSObject _) implements JSObject { external factory BaseKeyframe({ num? offset, String easing, CompositeOperationOrAuto composite, }); -} -extension BaseKeyframeExtension on BaseKeyframe { external set offset(num? value); external num? get offset; external set easing(String value); @@ -297,19 +235,14 @@ extension BaseKeyframeExtension on BaseKeyframe { external set composite(CompositeOperationOrAuto value); external CompositeOperationOrAuto get composite; } - -@JS() -@staticInterop -@anonymous -class KeyframeEffectOptions implements EffectTiming { +extension type KeyframeEffectOptions._(JSObject _) + implements EffectTiming, JSObject { external factory KeyframeEffectOptions({ IterationCompositeOperation iterationComposite, CompositeOperation composite, String? pseudoElement, }); -} -extension KeyframeEffectOptionsExtension on KeyframeEffectOptions { external set iterationComposite(IterationCompositeOperation value); external IterationCompositeOperation get iterationComposite; external set composite(CompositeOperation value); @@ -317,20 +250,15 @@ extension KeyframeEffectOptionsExtension on KeyframeEffectOptions { external set pseudoElement(String? value); external String? get pseudoElement; } - -@JS() -@staticInterop -@anonymous -class KeyframeAnimationOptions implements KeyframeEffectOptions { +extension type KeyframeAnimationOptions._(JSObject _) + implements KeyframeEffectOptions, JSObject { external factory KeyframeAnimationOptions({ JSAny rangeStart, JSAny rangeEnd, String id, AnimationTimeline? timeline, }); -} -extension KeyframeAnimationOptionsExtension on KeyframeAnimationOptions { external set rangeStart(JSAny value); external JSAny get rangeStart; external set rangeEnd(JSAny value); @@ -340,15 +268,9 @@ extension KeyframeAnimationOptionsExtension on KeyframeAnimationOptions { external set timeline(AnimationTimeline? value); external AnimationTimeline? get timeline; } - -@JS() -@staticInterop -@anonymous -class GetAnimationsOptions { +extension type GetAnimationsOptions._(JSObject _) implements JSObject { external factory GetAnimationsOptions({bool subtree}); -} -extension GetAnimationsOptionsExtension on GetAnimationsOptions { external set subtree(bool value); external bool get subtree; } diff --git a/lib/src/dom/web_animations_2.dart b/lib/src/dom/web_animations_2.dart index 0938a02f..ae505ad7 100644 --- a/lib/src/dom/web_animations_2.dart +++ b/lib/src/dom/web_animations_2.dart @@ -12,17 +12,12 @@ import 'web_animations.dart'; typedef EffectCallback = JSFunction; typedef IterationCompositeOperation = String; - -@JS('GroupEffect') -@staticInterop -class GroupEffect { +extension type GroupEffect._(JSObject _) implements JSObject { external factory GroupEffect( JSArray? children, [ JSAny timing, ]); -} -extension GroupEffectExtension on GroupEffect { external GroupEffect clone(); external void prepend(AnimationEffect effects); external void append(AnimationEffect effects); @@ -30,71 +25,45 @@ extension GroupEffectExtension on GroupEffect { external AnimationEffect? get firstChild; external AnimationEffect? get lastChild; } - -@JS('AnimationNodeList') -@staticInterop -class AnimationNodeList {} - -extension AnimationNodeListExtension on AnimationNodeList { +extension type AnimationNodeList._(JSObject _) implements JSObject { external AnimationEffect? item(int index); external int get length; } - -@JS('SequenceEffect') -@staticInterop -class SequenceEffect implements GroupEffect { +extension type SequenceEffect._(JSObject _) implements GroupEffect, JSObject { external factory SequenceEffect( JSArray? children, [ JSAny timing, ]); -} -extension SequenceEffectExtension on SequenceEffect { external SequenceEffect clone(); } - -@JS() -@staticInterop -@anonymous -class TimelineRangeOffset { +extension type TimelineRangeOffset._(JSObject _) implements JSObject { external factory TimelineRangeOffset({ String? rangeName, CSSNumericValue offset, }); -} -extension TimelineRangeOffsetExtension on TimelineRangeOffset { external set rangeName(String? value); external String? get rangeName; external set offset(CSSNumericValue value); external CSSNumericValue get offset; } - -@JS('AnimationPlaybackEvent') -@staticInterop -class AnimationPlaybackEvent implements Event { +extension type AnimationPlaybackEvent._(JSObject _) implements Event, JSObject { external factory AnimationPlaybackEvent( String type, [ AnimationPlaybackEventInit eventInitDict, ]); -} -extension AnimationPlaybackEventExtension on AnimationPlaybackEvent { external CSSNumberish? get currentTime; external CSSNumberish? get timelineTime; } - -@JS() -@staticInterop -@anonymous -class AnimationPlaybackEventInit implements EventInit { +extension type AnimationPlaybackEventInit._(JSObject _) + implements EventInit, JSObject { external factory AnimationPlaybackEventInit({ CSSNumberish? currentTime, CSSNumberish? timelineTime, }); -} -extension AnimationPlaybackEventInitExtension on AnimationPlaybackEventInit { external set currentTime(CSSNumberish? value); external CSSNumberish? get currentTime; external set timelineTime(CSSNumberish? value); diff --git a/lib/src/dom/web_app_launch.dart b/lib/src/dom/web_app_launch.dart index fe63dd3d..98c5c9d6 100644 --- a/lib/src/dom/web_app_launch.dart +++ b/lib/src/dom/web_app_launch.dart @@ -7,20 +7,10 @@ import 'dart:js_interop'; typedef LaunchConsumer = JSFunction; - -@JS('LaunchParams') -@staticInterop -class LaunchParams {} - -extension LaunchParamsExtension on LaunchParams { +extension type LaunchParams._(JSObject _) implements JSObject { external String? get targetURL; external JSArray get files; } - -@JS('LaunchQueue') -@staticInterop -class LaunchQueue {} - -extension LaunchQueueExtension on LaunchQueue { +extension type LaunchQueue._(JSObject _) implements JSObject { external void setConsumer(LaunchConsumer consumer); } diff --git a/lib/src/dom/web_bluetooth.dart b/lib/src/dom/web_bluetooth.dart index 15a04ebd..1793b428 100644 --- a/lib/src/dom/web_bluetooth.dart +++ b/lib/src/dom/web_bluetooth.dart @@ -15,56 +15,34 @@ typedef UUID = String; typedef BluetoothServiceUUID = JSAny; typedef BluetoothCharacteristicUUID = JSAny; typedef BluetoothDescriptorUUID = JSAny; - -@JS() -@staticInterop -@anonymous -class BluetoothDataFilterInit { +extension type BluetoothDataFilterInit._(JSObject _) implements JSObject { external factory BluetoothDataFilterInit({ BufferSource dataPrefix, BufferSource mask, }); -} -extension BluetoothDataFilterInitExtension on BluetoothDataFilterInit { external set dataPrefix(BufferSource value); external BufferSource get dataPrefix; external set mask(BufferSource value); external BufferSource get mask; } - -@JS() -@staticInterop -@anonymous -class BluetoothManufacturerDataFilterInit implements BluetoothDataFilterInit { +extension type BluetoothManufacturerDataFilterInit._(JSObject _) + implements BluetoothDataFilterInit, JSObject { external factory BluetoothManufacturerDataFilterInit( {required int companyIdentifier}); -} -extension BluetoothManufacturerDataFilterInitExtension - on BluetoothManufacturerDataFilterInit { external set companyIdentifier(int value); external int get companyIdentifier; } - -@JS() -@staticInterop -@anonymous -class BluetoothServiceDataFilterInit implements BluetoothDataFilterInit { +extension type BluetoothServiceDataFilterInit._(JSObject _) + implements BluetoothDataFilterInit, JSObject { external factory BluetoothServiceDataFilterInit( {required BluetoothServiceUUID service}); -} -extension BluetoothServiceDataFilterInitExtension - on BluetoothServiceDataFilterInit { external set service(BluetoothServiceUUID value); external BluetoothServiceUUID get service; } - -@JS() -@staticInterop -@anonymous -class BluetoothLEScanFilterInit { +extension type BluetoothLEScanFilterInit._(JSObject _) implements JSObject { external factory BluetoothLEScanFilterInit({ JSArray services, String name, @@ -72,9 +50,7 @@ class BluetoothLEScanFilterInit { JSArray manufacturerData, JSArray serviceData, }); -} -extension BluetoothLEScanFilterInitExtension on BluetoothLEScanFilterInit { external set services(JSArray value); external JSArray get services; external set name(String value); @@ -86,11 +62,7 @@ extension BluetoothLEScanFilterInitExtension on BluetoothLEScanFilterInit { external set serviceData(JSArray value); external JSArray get serviceData; } - -@JS() -@staticInterop -@anonymous -class RequestDeviceOptions { +extension type RequestDeviceOptions._(JSObject _) implements JSObject { external factory RequestDeviceOptions({ JSArray filters, JSArray exclusionFilters, @@ -98,9 +70,7 @@ class RequestDeviceOptions { JSArray optionalManufacturerData, bool acceptAllDevices, }); -} -extension RequestDeviceOptionsExtension on RequestDeviceOptions { external set filters(JSArray value); external JSArray get filters; external set exclusionFilters(JSArray value); @@ -112,12 +82,7 @@ extension RequestDeviceOptionsExtension on RequestDeviceOptions { external set acceptAllDevices(bool value); external bool get acceptAllDevices; } - -@JS('Bluetooth') -@staticInterop -class Bluetooth implements EventTarget {} - -extension BluetoothExtension on Bluetooth { +extension type Bluetooth._(JSObject _) implements EventTarget, JSObject { external JSPromise getAvailability(); external JSPromise getDevices(); external JSPromise requestDevice([RequestDeviceOptions options]); @@ -137,11 +102,8 @@ extension BluetoothExtension on Bluetooth { external set onserviceremoved(EventHandler value); external EventHandler get onserviceremoved; } - -@JS() -@staticInterop -@anonymous -class BluetoothPermissionDescriptor implements PermissionDescriptor { +extension type BluetoothPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory BluetoothPermissionDescriptor({ String deviceId, JSArray filters, @@ -149,10 +111,7 @@ class BluetoothPermissionDescriptor implements PermissionDescriptor { JSArray optionalManufacturerData, bool acceptAllDevices, }); -} -extension BluetoothPermissionDescriptorExtension - on BluetoothPermissionDescriptor { external set deviceId(String value); external String get deviceId; external set filters(JSArray value); @@ -164,20 +123,14 @@ extension BluetoothPermissionDescriptorExtension external set acceptAllDevices(bool value); external bool get acceptAllDevices; } - -@JS() -@staticInterop -@anonymous -class AllowedBluetoothDevice { +extension type AllowedBluetoothDevice._(JSObject _) implements JSObject { external factory AllowedBluetoothDevice({ required String deviceId, required bool mayUseGATT, required JSAny allowedServices, required JSArray allowedManufacturerData, }); -} -extension AllowedBluetoothDeviceExtension on AllowedBluetoothDevice { external set deviceId(String value); external String get deviceId; external set mayUseGATT(bool value); @@ -187,59 +140,33 @@ extension AllowedBluetoothDeviceExtension on AllowedBluetoothDevice { external set allowedManufacturerData(JSArray value); external JSArray get allowedManufacturerData; } - -@JS() -@staticInterop -@anonymous -class BluetoothPermissionStorage { +extension type BluetoothPermissionStorage._(JSObject _) implements JSObject { external factory BluetoothPermissionStorage( {required JSArray allowedDevices}); -} -extension BluetoothPermissionStorageExtension on BluetoothPermissionStorage { external set allowedDevices(JSArray value); external JSArray get allowedDevices; } - -@JS('BluetoothPermissionResult') -@staticInterop -class BluetoothPermissionResult implements PermissionStatus {} - -extension BluetoothPermissionResultExtension on BluetoothPermissionResult { +extension type BluetoothPermissionResult._(JSObject _) + implements PermissionStatus, JSObject { external set devices(JSArray value); external JSArray get devices; } - -@JS('ValueEvent') -@staticInterop -class ValueEvent implements Event { +extension type ValueEvent._(JSObject _) implements Event, JSObject { external factory ValueEvent( String type, [ ValueEventInit initDict, ]); -} -extension ValueEventExtension on ValueEvent { external JSAny? get value; } - -@JS() -@staticInterop -@anonymous -class ValueEventInit implements EventInit { +extension type ValueEventInit._(JSObject _) implements EventInit, JSObject { external factory ValueEventInit({JSAny? value}); -} -extension ValueEventInitExtension on ValueEventInit { external set value(JSAny? value); external JSAny? get value; } - -@JS('BluetoothDevice') -@staticInterop -class BluetoothDevice implements EventTarget {} - -extension BluetoothDeviceExtension on BluetoothDevice { +extension type BluetoothDevice._(JSObject _) implements EventTarget, JSObject { external JSPromise forget(); external JSPromise watchAdvertisements([WatchAdvertisementsOptions options]); external String get id; @@ -259,42 +186,21 @@ extension BluetoothDeviceExtension on BluetoothDevice { external set onserviceremoved(EventHandler value); external EventHandler get onserviceremoved; } - -@JS() -@staticInterop -@anonymous -class WatchAdvertisementsOptions { +extension type WatchAdvertisementsOptions._(JSObject _) implements JSObject { external factory WatchAdvertisementsOptions({AbortSignal signal}); -} -extension WatchAdvertisementsOptionsExtension on WatchAdvertisementsOptions { external set signal(AbortSignal value); external AbortSignal get signal; } - -@JS('BluetoothManufacturerDataMap') -@staticInterop -class BluetoothManufacturerDataMap {} - -extension BluetoothManufacturerDataMapExtension - on BluetoothManufacturerDataMap {} - -@JS('BluetoothServiceDataMap') -@staticInterop -class BluetoothServiceDataMap {} - -extension BluetoothServiceDataMapExtension on BluetoothServiceDataMap {} - -@JS('BluetoothAdvertisingEvent') -@staticInterop -class BluetoothAdvertisingEvent implements Event { +extension type BluetoothManufacturerDataMap._(JSObject _) implements JSObject {} +extension type BluetoothServiceDataMap._(JSObject _) implements JSObject {} +extension type BluetoothAdvertisingEvent._(JSObject _) + implements Event, JSObject { external factory BluetoothAdvertisingEvent( String type, BluetoothAdvertisingEventInit init, ); -} -extension BluetoothAdvertisingEventExtension on BluetoothAdvertisingEvent { external BluetoothDevice get device; external JSArray get uuids; external String? get name; @@ -304,11 +210,8 @@ extension BluetoothAdvertisingEventExtension on BluetoothAdvertisingEvent { external BluetoothManufacturerDataMap get manufacturerData; external BluetoothServiceDataMap get serviceData; } - -@JS() -@staticInterop -@anonymous -class BluetoothAdvertisingEventInit implements EventInit { +extension type BluetoothAdvertisingEventInit._(JSObject _) + implements EventInit, JSObject { external factory BluetoothAdvertisingEventInit({ required BluetoothDevice device, JSArray uuids, @@ -319,10 +222,7 @@ class BluetoothAdvertisingEventInit implements EventInit { BluetoothManufacturerDataMap manufacturerData, BluetoothServiceDataMap serviceData, }); -} -extension BluetoothAdvertisingEventInitExtension - on BluetoothAdvertisingEventInit { external set device(BluetoothDevice value); external BluetoothDevice get device; external set uuids(JSArray value); @@ -340,12 +240,7 @@ extension BluetoothAdvertisingEventInitExtension external set serviceData(BluetoothServiceDataMap value); external BluetoothServiceDataMap get serviceData; } - -@JS('BluetoothRemoteGATTServer') -@staticInterop -class BluetoothRemoteGATTServer {} - -extension BluetoothRemoteGATTServerExtension on BluetoothRemoteGATTServer { +extension type BluetoothRemoteGATTServer._(JSObject _) implements JSObject { external JSPromise connect(); external void disconnect(); external JSPromise getPrimaryService(BluetoothServiceUUID service); @@ -353,12 +248,8 @@ extension BluetoothRemoteGATTServerExtension on BluetoothRemoteGATTServer { external BluetoothDevice get device; external bool get connected; } - -@JS('BluetoothRemoteGATTService') -@staticInterop -class BluetoothRemoteGATTService implements EventTarget {} - -extension BluetoothRemoteGATTServiceExtension on BluetoothRemoteGATTService { +extension type BluetoothRemoteGATTService._(JSObject _) + implements EventTarget, JSObject { external JSPromise getCharacteristic( BluetoothCharacteristicUUID characteristic); external JSPromise getCharacteristics( @@ -377,13 +268,8 @@ extension BluetoothRemoteGATTServiceExtension on BluetoothRemoteGATTService { external set onserviceremoved(EventHandler value); external EventHandler get onserviceremoved; } - -@JS('BluetoothRemoteGATTCharacteristic') -@staticInterop -class BluetoothRemoteGATTCharacteristic implements EventTarget {} - -extension BluetoothRemoteGATTCharacteristicExtension - on BluetoothRemoteGATTCharacteristic { +extension type BluetoothRemoteGATTCharacteristic._(JSObject _) + implements EventTarget, JSObject { external JSPromise getDescriptor(BluetoothDescriptorUUID descriptor); external JSPromise getDescriptors([BluetoothDescriptorUUID descriptor]); external JSPromise readValue(); @@ -399,13 +285,8 @@ extension BluetoothRemoteGATTCharacteristicExtension external set oncharacteristicvaluechanged(EventHandler value); external EventHandler get oncharacteristicvaluechanged; } - -@JS('BluetoothCharacteristicProperties') -@staticInterop -class BluetoothCharacteristicProperties {} - -extension BluetoothCharacteristicPropertiesExtension - on BluetoothCharacteristicProperties { +extension type BluetoothCharacteristicProperties._(JSObject _) + implements JSObject { external bool get broadcast; external bool get read; external bool get writeWithoutResponse; @@ -416,23 +297,14 @@ extension BluetoothCharacteristicPropertiesExtension external bool get reliableWrite; external bool get writableAuxiliaries; } - -@JS('BluetoothRemoteGATTDescriptor') -@staticInterop -class BluetoothRemoteGATTDescriptor {} - -extension BluetoothRemoteGATTDescriptorExtension - on BluetoothRemoteGATTDescriptor { +extension type BluetoothRemoteGATTDescriptor._(JSObject _) implements JSObject { external JSPromise readValue(); external JSPromise writeValue(BufferSource value); external BluetoothRemoteGATTCharacteristic get characteristic; external UUID get uuid; external JSDataView? get value; } - -@JS('BluetoothUUID') -@staticInterop -class BluetoothUUID { +extension type BluetoothUUID._(JSObject _) implements JSObject { external static UUID getService(JSAny name); external static UUID getCharacteristic(JSAny name); external static UUID getDescriptor(JSAny name); diff --git a/lib/src/dom/web_locks.dart b/lib/src/dom/web_locks.dart index 8c66141f..f3e46463 100644 --- a/lib/src/dom/web_locks.dart +++ b/lib/src/dom/web_locks.dart @@ -10,12 +10,7 @@ import 'dom.dart'; typedef LockGrantedCallback = JSFunction; typedef LockMode = String; - -@JS('LockManager') -@staticInterop -class LockManager {} - -extension LockManagerExtension on LockManager { +extension type LockManager._(JSObject _) implements JSObject { external JSPromise request( String name, JSObject callbackOrOptions, [ @@ -23,20 +18,14 @@ extension LockManagerExtension on LockManager { ]); external JSPromise query(); } - -@JS() -@staticInterop -@anonymous -class LockOptions { +extension type LockOptions._(JSObject _) implements JSObject { external factory LockOptions({ LockMode mode, bool ifAvailable, bool steal, AbortSignal signal, }); -} -extension LockOptionsExtension on LockOptions { external set mode(LockMode value); external LockMode get mode; external set ifAvailable(bool value); @@ -46,36 +35,24 @@ extension LockOptionsExtension on LockOptions { external set signal(AbortSignal value); external AbortSignal get signal; } - -@JS() -@staticInterop -@anonymous -class LockManagerSnapshot { +extension type LockManagerSnapshot._(JSObject _) implements JSObject { external factory LockManagerSnapshot({ JSArray held, JSArray pending, }); -} -extension LockManagerSnapshotExtension on LockManagerSnapshot { external set held(JSArray value); external JSArray get held; external set pending(JSArray value); external JSArray get pending; } - -@JS() -@staticInterop -@anonymous -class LockInfo { +extension type LockInfo._(JSObject _) implements JSObject { external factory LockInfo({ String name, LockMode mode, String clientId, }); -} -extension LockInfoExtension on LockInfo { external set name(String value); external String get name; external set mode(LockMode value); @@ -83,12 +60,7 @@ extension LockInfoExtension on LockInfo { external set clientId(String value); external String get clientId; } - -@JS('Lock') -@staticInterop -class Lock {} - -extension LockExtension on Lock { +extension type Lock._(JSObject _) implements JSObject { external String get name; external LockMode get mode; } diff --git a/lib/src/dom/web_nfc.dart b/lib/src/dom/web_nfc.dart index d9f9e0b7..e4216c31 100644 --- a/lib/src/dom/web_nfc.dart +++ b/lib/src/dom/web_nfc.dart @@ -10,36 +10,20 @@ import 'dom.dart'; import 'html.dart'; typedef NDEFMessageSource = JSAny; - -@JS('NDEFMessage') -@staticInterop -class NDEFMessage { +extension type NDEFMessage._(JSObject _) implements JSObject { external factory NDEFMessage(NDEFMessageInit messageInit); -} -extension NDEFMessageExtension on NDEFMessage { external JSArray get records; } - -@JS() -@staticInterop -@anonymous -class NDEFMessageInit { +extension type NDEFMessageInit._(JSObject _) implements JSObject { external factory NDEFMessageInit({required JSArray records}); -} -extension NDEFMessageInitExtension on NDEFMessageInit { external set records(JSArray value); external JSArray get records; } - -@JS('NDEFRecord') -@staticInterop -class NDEFRecord { +extension type NDEFRecord._(JSObject _) implements JSObject { external factory NDEFRecord(NDEFRecordInit recordInit); -} -extension NDEFRecordExtension on NDEFRecord { external JSArray? toRecords(); external String get recordType; external String? get mediaType; @@ -48,11 +32,7 @@ extension NDEFRecordExtension on NDEFRecord { external String? get encoding; external String? get lang; } - -@JS() -@staticInterop -@anonymous -class NDEFRecordInit { +extension type NDEFRecordInit._(JSObject _) implements JSObject { external factory NDEFRecordInit({ required String recordType, String mediaType, @@ -61,9 +41,7 @@ class NDEFRecordInit { String lang, JSAny? data, }); -} -extension NDEFRecordInitExtension on NDEFRecordInit { external set recordType(String value); external String get recordType; external set mediaType(String value); @@ -77,14 +55,9 @@ extension NDEFRecordInitExtension on NDEFRecordInit { external set data(JSAny? value); external JSAny? get data; } - -@JS('NDEFReader') -@staticInterop -class NDEFReader implements EventTarget { +extension type NDEFReader._(JSObject _) implements EventTarget, JSObject { external factory NDEFReader(); -} -extension NDEFReaderExtension on NDEFReader { external JSPromise scan([NDEFScanOptions options]); external JSPromise write( NDEFMessageSource message, [ @@ -96,75 +69,47 @@ extension NDEFReaderExtension on NDEFReader { external set onreadingerror(EventHandler value); external EventHandler get onreadingerror; } - -@JS('NDEFReadingEvent') -@staticInterop -class NDEFReadingEvent implements Event { +extension type NDEFReadingEvent._(JSObject _) implements Event, JSObject { external factory NDEFReadingEvent( String type, NDEFReadingEventInit readingEventInitDict, ); -} -extension NDEFReadingEventExtension on NDEFReadingEvent { external String get serialNumber; external NDEFMessage get message; } - -@JS() -@staticInterop -@anonymous -class NDEFReadingEventInit implements EventInit { +extension type NDEFReadingEventInit._(JSObject _) + implements EventInit, JSObject { external factory NDEFReadingEventInit({ String? serialNumber, required NDEFMessageInit message, }); -} -extension NDEFReadingEventInitExtension on NDEFReadingEventInit { external set serialNumber(String? value); external String? get serialNumber; external set message(NDEFMessageInit value); external NDEFMessageInit get message; } - -@JS() -@staticInterop -@anonymous -class NDEFWriteOptions { +extension type NDEFWriteOptions._(JSObject _) implements JSObject { external factory NDEFWriteOptions({ bool overwrite, AbortSignal? signal, }); -} -extension NDEFWriteOptionsExtension on NDEFWriteOptions { external set overwrite(bool value); external bool get overwrite; external set signal(AbortSignal? value); external AbortSignal? get signal; } - -@JS() -@staticInterop -@anonymous -class NDEFMakeReadOnlyOptions { +extension type NDEFMakeReadOnlyOptions._(JSObject _) implements JSObject { external factory NDEFMakeReadOnlyOptions({AbortSignal? signal}); -} -extension NDEFMakeReadOnlyOptionsExtension on NDEFMakeReadOnlyOptions { external set signal(AbortSignal? value); external AbortSignal? get signal; } - -@JS() -@staticInterop -@anonymous -class NDEFScanOptions { +extension type NDEFScanOptions._(JSObject _) implements JSObject { external factory NDEFScanOptions({AbortSignal signal}); -} -extension NDEFScanOptionsExtension on NDEFScanOptions { external set signal(AbortSignal value); external AbortSignal get signal; } diff --git a/lib/src/dom/web_otp.dart b/lib/src/dom/web_otp.dart index da63f555..7bfbbc06 100644 --- a/lib/src/dom/web_otp.dart +++ b/lib/src/dom/web_otp.dart @@ -9,23 +9,12 @@ import 'dart:js_interop'; import 'credential_management.dart'; typedef OTPCredentialTransportType = String; - -@JS('OTPCredential') -@staticInterop -class OTPCredential implements Credential {} - -extension OTPCredentialExtension on OTPCredential { +extension type OTPCredential._(JSObject _) implements Credential, JSObject { external String get code; } - -@JS() -@staticInterop -@anonymous -class OTPCredentialRequestOptions { +extension type OTPCredentialRequestOptions._(JSObject _) implements JSObject { external factory OTPCredentialRequestOptions({JSArray transport}); -} -extension OTPCredentialRequestOptionsExtension on OTPCredentialRequestOptions { external set transport(JSArray value); external JSArray get transport; } diff --git a/lib/src/dom/web_share.dart b/lib/src/dom/web_share.dart index 492c2f34..258f2363 100644 --- a/lib/src/dom/web_share.dart +++ b/lib/src/dom/web_share.dart @@ -6,19 +6,14 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class ShareData { +extension type ShareData._(JSObject _) implements JSObject { external factory ShareData({ JSArray files, String title, String text, String url, }); -} -extension ShareDataExtension on ShareData { external set files(JSArray value); external JSArray get files; external set title(String value); diff --git a/lib/src/dom/webaudio.dart b/lib/src/dom/webaudio.dart index af24fb03..6c7ea3a0 100644 --- a/lib/src/dom/webaudio.dart +++ b/lib/src/dom/webaudio.dart @@ -27,12 +27,7 @@ typedef OscillatorType = String; typedef PanningModelType = String; typedef DistanceModelType = String; typedef OverSampleType = String; - -@JS('BaseAudioContext') -@staticInterop -class BaseAudioContext implements EventTarget {} - -extension BaseAudioContextExtension on BaseAudioContext { +extension type BaseAudioContext._(JSObject _) implements EventTarget, JSObject { external AnalyserNode createAnalyser(); external BiquadFilterNode createBiquadFilter(); external AudioBuffer createBuffer( @@ -81,14 +76,10 @@ extension BaseAudioContextExtension on BaseAudioContext { external set onstatechange(EventHandler value); external EventHandler get onstatechange; } - -@JS('AudioContext') -@staticInterop -class AudioContext implements BaseAudioContext { +extension type AudioContext._(JSObject _) + implements BaseAudioContext, JSObject { external factory AudioContext([AudioContextOptions contextOptions]); -} -extension AudioContextExtension on AudioContext { external AudioTimestamp getOutputTimestamp(); external JSPromise resume(); external JSPromise suspend(); @@ -108,20 +99,14 @@ extension AudioContextExtension on AudioContext { external set onsinkchange(EventHandler value); external EventHandler get onsinkchange; } - -@JS() -@staticInterop -@anonymous -class AudioContextOptions { +extension type AudioContextOptions._(JSObject _) implements JSObject { external factory AudioContextOptions({ JSAny latencyHint, num sampleRate, JSAny sinkId, JSAny renderSizeHint, }); -} -extension AudioContextOptionsExtension on AudioContextOptions { external set latencyHint(JSAny value); external JSAny get latencyHint; external set sampleRate(num value); @@ -131,97 +116,60 @@ extension AudioContextOptionsExtension on AudioContextOptions { external set renderSizeHint(JSAny value); external JSAny get renderSizeHint; } - -@JS() -@staticInterop -@anonymous -class AudioSinkOptions { +extension type AudioSinkOptions._(JSObject _) implements JSObject { external factory AudioSinkOptions({required AudioSinkType type}); -} -extension AudioSinkOptionsExtension on AudioSinkOptions { external set type(AudioSinkType value); external AudioSinkType get type; } - -@JS('AudioSinkInfo') -@staticInterop -class AudioSinkInfo {} - -extension AudioSinkInfoExtension on AudioSinkInfo { +extension type AudioSinkInfo._(JSObject _) implements JSObject { external AudioSinkType get type; } - -@JS() -@staticInterop -@anonymous -class AudioTimestamp { +extension type AudioTimestamp._(JSObject _) implements JSObject { external factory AudioTimestamp({ num contextTime, DOMHighResTimeStamp performanceTime, }); -} -extension AudioTimestampExtension on AudioTimestamp { external set contextTime(num value); external num get contextTime; external set performanceTime(DOMHighResTimeStamp value); external DOMHighResTimeStamp get performanceTime; } - -@JS('AudioRenderCapacity') -@staticInterop -class AudioRenderCapacity implements EventTarget {} - -extension AudioRenderCapacityExtension on AudioRenderCapacity { +extension type AudioRenderCapacity._(JSObject _) + implements EventTarget, JSObject { external void start([AudioRenderCapacityOptions options]); external void stop(); external set onupdate(EventHandler value); external EventHandler get onupdate; } - -@JS() -@staticInterop -@anonymous -class AudioRenderCapacityOptions { +extension type AudioRenderCapacityOptions._(JSObject _) implements JSObject { external factory AudioRenderCapacityOptions({num updateInterval}); -} -extension AudioRenderCapacityOptionsExtension on AudioRenderCapacityOptions { external set updateInterval(num value); external num get updateInterval; } - -@JS('AudioRenderCapacityEvent') -@staticInterop -class AudioRenderCapacityEvent implements Event { +extension type AudioRenderCapacityEvent._(JSObject _) + implements Event, JSObject { external factory AudioRenderCapacityEvent( String type, [ AudioRenderCapacityEventInit eventInitDict, ]); -} -extension AudioRenderCapacityEventExtension on AudioRenderCapacityEvent { external num get timestamp; external num get averageLoad; external num get peakLoad; external num get underrunRatio; } - -@JS() -@staticInterop -@anonymous -class AudioRenderCapacityEventInit implements EventInit { +extension type AudioRenderCapacityEventInit._(JSObject _) + implements EventInit, JSObject { external factory AudioRenderCapacityEventInit({ num timestamp, num averageLoad, num peakLoad, num underrunRatio, }); -} -extension AudioRenderCapacityEventInitExtension - on AudioRenderCapacityEventInit { external set timestamp(num value); external num get timestamp; external set averageLoad(num value); @@ -231,18 +179,14 @@ extension AudioRenderCapacityEventInitExtension external set underrunRatio(num value); external num get underrunRatio; } - -@JS('OfflineAudioContext') -@staticInterop -class OfflineAudioContext implements BaseAudioContext { +extension type OfflineAudioContext._(JSObject _) + implements BaseAudioContext, JSObject { external factory OfflineAudioContext( JSAny contextOptionsOrNumberOfChannels, [ int length, num sampleRate, ]); -} -extension OfflineAudioContextExtension on OfflineAudioContext { external JSPromise startRendering(); external JSPromise resume(); external JSPromise suspend(num suspendTime); @@ -250,20 +194,14 @@ extension OfflineAudioContextExtension on OfflineAudioContext { external set oncomplete(EventHandler value); external EventHandler get oncomplete; } - -@JS() -@staticInterop -@anonymous -class OfflineAudioContextOptions { +extension type OfflineAudioContextOptions._(JSObject _) implements JSObject { external factory OfflineAudioContextOptions({ int numberOfChannels, required int length, required num sampleRate, JSAny renderSizeHint, }); -} -extension OfflineAudioContextOptionsExtension on OfflineAudioContextOptions { external set numberOfChannels(int value); external int get numberOfChannels; external set length(int value); @@ -273,41 +211,26 @@ extension OfflineAudioContextOptionsExtension on OfflineAudioContextOptions { external set renderSizeHint(JSAny value); external JSAny get renderSizeHint; } - -@JS('OfflineAudioCompletionEvent') -@staticInterop -class OfflineAudioCompletionEvent implements Event { +extension type OfflineAudioCompletionEvent._(JSObject _) + implements Event, JSObject { external factory OfflineAudioCompletionEvent( String type, OfflineAudioCompletionEventInit eventInitDict, ); -} -extension OfflineAudioCompletionEventExtension on OfflineAudioCompletionEvent { external AudioBuffer get renderedBuffer; } - -@JS() -@staticInterop -@anonymous -class OfflineAudioCompletionEventInit implements EventInit { +extension type OfflineAudioCompletionEventInit._(JSObject _) + implements EventInit, JSObject { external factory OfflineAudioCompletionEventInit( {required AudioBuffer renderedBuffer}); -} -extension OfflineAudioCompletionEventInitExtension - on OfflineAudioCompletionEventInit { external set renderedBuffer(AudioBuffer value); external AudioBuffer get renderedBuffer; } - -@JS('AudioBuffer') -@staticInterop -class AudioBuffer { +extension type AudioBuffer._(JSObject _) implements JSObject { external factory AudioBuffer(AudioBufferOptions options); -} -extension AudioBufferExtension on AudioBuffer { external JSFloat32Array getChannelData(int channel); external void copyFromChannel( JSFloat32Array destination, @@ -324,19 +247,13 @@ extension AudioBufferExtension on AudioBuffer { external num get duration; external int get numberOfChannels; } - -@JS() -@staticInterop -@anonymous -class AudioBufferOptions { +extension type AudioBufferOptions._(JSObject _) implements JSObject { external factory AudioBufferOptions({ int numberOfChannels, required int length, required num sampleRate, }); -} -extension AudioBufferOptionsExtension on AudioBufferOptions { external set numberOfChannels(int value); external int get numberOfChannels; external set length(int value); @@ -344,12 +261,7 @@ extension AudioBufferOptionsExtension on AudioBufferOptions { external set sampleRate(num value); external num get sampleRate; } - -@JS('AudioNode') -@staticInterop -class AudioNode implements EventTarget {} - -extension AudioNodeExtension on AudioNode { +extension type AudioNode._(JSObject _) implements EventTarget, JSObject { external AudioNode? connect( JSObject destinationNodeOrDestinationParam, [ int output, @@ -370,19 +282,13 @@ extension AudioNodeExtension on AudioNode { external set channelInterpretation(ChannelInterpretation value); external ChannelInterpretation get channelInterpretation; } - -@JS() -@staticInterop -@anonymous -class AudioNodeOptions { +extension type AudioNodeOptions._(JSObject _) implements JSObject { external factory AudioNodeOptions({ int channelCount, ChannelCountMode channelCountMode, ChannelInterpretation channelInterpretation, }); -} -extension AudioNodeOptionsExtension on AudioNodeOptions { external set channelCount(int value); external int get channelCount; external set channelCountMode(ChannelCountMode value); @@ -390,12 +296,7 @@ extension AudioNodeOptionsExtension on AudioNodeOptions { external set channelInterpretation(ChannelInterpretation value); external ChannelInterpretation get channelInterpretation; } - -@JS('AudioParam') -@staticInterop -class AudioParam {} - -extension AudioParamExtension on AudioParam { +extension type AudioParam._(JSObject _) implements JSObject { external AudioParam setValueAtTime( num value, num startTime, @@ -428,28 +329,19 @@ extension AudioParamExtension on AudioParam { external num get minValue; external num get maxValue; } - -@JS('AudioScheduledSourceNode') -@staticInterop -class AudioScheduledSourceNode implements AudioNode {} - -extension AudioScheduledSourceNodeExtension on AudioScheduledSourceNode { +extension type AudioScheduledSourceNode._(JSObject _) + implements AudioNode, JSObject { external void start([num when]); external void stop([num when]); external set onended(EventHandler value); external EventHandler get onended; } - -@JS('AnalyserNode') -@staticInterop -class AnalyserNode implements AudioNode { +extension type AnalyserNode._(JSObject _) implements AudioNode, JSObject { external factory AnalyserNode( BaseAudioContext context, [ AnalyserOptions options, ]); -} -extension AnalyserNodeExtension on AnalyserNode { external void getFloatFrequencyData(JSFloat32Array array); external void getByteFrequencyData(JSUint8Array array); external void getFloatTimeDomainData(JSFloat32Array array); @@ -464,20 +356,15 @@ extension AnalyserNodeExtension on AnalyserNode { external set smoothingTimeConstant(num value); external num get smoothingTimeConstant; } - -@JS() -@staticInterop -@anonymous -class AnalyserOptions implements AudioNodeOptions { +extension type AnalyserOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory AnalyserOptions({ int fftSize, num maxDecibels, num minDecibels, num smoothingTimeConstant, }); -} -extension AnalyserOptionsExtension on AnalyserOptions { external set fftSize(int value); external int get fftSize; external set maxDecibels(num value); @@ -487,17 +374,13 @@ extension AnalyserOptionsExtension on AnalyserOptions { external set smoothingTimeConstant(num value); external num get smoothingTimeConstant; } - -@JS('AudioBufferSourceNode') -@staticInterop -class AudioBufferSourceNode implements AudioScheduledSourceNode { +extension type AudioBufferSourceNode._(JSObject _) + implements AudioScheduledSourceNode, JSObject { external factory AudioBufferSourceNode( BaseAudioContext context, [ AudioBufferSourceOptions options, ]); -} -extension AudioBufferSourceNodeExtension on AudioBufferSourceNode { external void start([ num when, num offset, @@ -514,11 +397,7 @@ extension AudioBufferSourceNodeExtension on AudioBufferSourceNode { external set loopEnd(num value); external num get loopEnd; } - -@JS() -@staticInterop -@anonymous -class AudioBufferSourceOptions { +extension type AudioBufferSourceOptions._(JSObject _) implements JSObject { external factory AudioBufferSourceOptions({ AudioBuffer? buffer, num detune, @@ -527,9 +406,7 @@ class AudioBufferSourceOptions { num loopStart, num playbackRate, }); -} -extension AudioBufferSourceOptionsExtension on AudioBufferSourceOptions { external set buffer(AudioBuffer? value); external AudioBuffer? get buffer; external set detune(num value); @@ -543,20 +420,11 @@ extension AudioBufferSourceOptionsExtension on AudioBufferSourceOptions { external set playbackRate(num value); external num get playbackRate; } - -@JS('AudioDestinationNode') -@staticInterop -class AudioDestinationNode implements AudioNode {} - -extension AudioDestinationNodeExtension on AudioDestinationNode { +extension type AudioDestinationNode._(JSObject _) + implements AudioNode, JSObject { external int get maxChannelCount; } - -@JS('AudioListener') -@staticInterop -class AudioListener {} - -extension AudioListenerExtension on AudioListener { +extension type AudioListener._(JSObject _) implements JSObject { external void setPosition( num x, num y, @@ -580,34 +448,24 @@ extension AudioListenerExtension on AudioListener { external AudioParam get upY; external AudioParam get upZ; } - -@JS('AudioProcessingEvent') -@staticInterop -class AudioProcessingEvent implements Event { +extension type AudioProcessingEvent._(JSObject _) implements Event, JSObject { external factory AudioProcessingEvent( String type, AudioProcessingEventInit eventInitDict, ); -} -extension AudioProcessingEventExtension on AudioProcessingEvent { external num get playbackTime; external AudioBuffer get inputBuffer; external AudioBuffer get outputBuffer; } - -@JS() -@staticInterop -@anonymous -class AudioProcessingEventInit implements EventInit { +extension type AudioProcessingEventInit._(JSObject _) + implements EventInit, JSObject { external factory AudioProcessingEventInit({ required num playbackTime, required AudioBuffer inputBuffer, required AudioBuffer outputBuffer, }); -} -extension AudioProcessingEventInitExtension on AudioProcessingEventInit { external set playbackTime(num value); external num get playbackTime; external set inputBuffer(AudioBuffer value); @@ -615,17 +473,12 @@ extension AudioProcessingEventInitExtension on AudioProcessingEventInit { external set outputBuffer(AudioBuffer value); external AudioBuffer get outputBuffer; } - -@JS('BiquadFilterNode') -@staticInterop -class BiquadFilterNode implements AudioNode { +extension type BiquadFilterNode._(JSObject _) implements AudioNode, JSObject { external factory BiquadFilterNode( BaseAudioContext context, [ BiquadFilterOptions options, ]); -} -extension BiquadFilterNodeExtension on BiquadFilterNode { external void getFrequencyResponse( JSFloat32Array frequencyHz, JSFloat32Array magResponse, @@ -638,11 +491,8 @@ extension BiquadFilterNodeExtension on BiquadFilterNode { external AudioParam get Q; external AudioParam get gain; } - -@JS() -@staticInterop -@anonymous -class BiquadFilterOptions implements AudioNodeOptions { +extension type BiquadFilterOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory BiquadFilterOptions({ BiquadFilterType type, num Q, @@ -650,9 +500,7 @@ class BiquadFilterOptions implements AudioNodeOptions { num frequency, num gain, }); -} -extension BiquadFilterOptionsExtension on BiquadFilterOptions { external set type(BiquadFilterType value); external BiquadFilterType get type; external set Q(num value); @@ -664,147 +512,98 @@ extension BiquadFilterOptionsExtension on BiquadFilterOptions { external set gain(num value); external num get gain; } - -@JS('ChannelMergerNode') -@staticInterop -class ChannelMergerNode implements AudioNode { +extension type ChannelMergerNode._(JSObject _) implements AudioNode, JSObject { external factory ChannelMergerNode( BaseAudioContext context, [ ChannelMergerOptions options, ]); } - -@JS() -@staticInterop -@anonymous -class ChannelMergerOptions implements AudioNodeOptions { +extension type ChannelMergerOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory ChannelMergerOptions({int numberOfInputs}); -} -extension ChannelMergerOptionsExtension on ChannelMergerOptions { external set numberOfInputs(int value); external int get numberOfInputs; } - -@JS('ChannelSplitterNode') -@staticInterop -class ChannelSplitterNode implements AudioNode { +extension type ChannelSplitterNode._(JSObject _) + implements AudioNode, JSObject { external factory ChannelSplitterNode( BaseAudioContext context, [ ChannelSplitterOptions options, ]); } - -@JS() -@staticInterop -@anonymous -class ChannelSplitterOptions implements AudioNodeOptions { +extension type ChannelSplitterOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory ChannelSplitterOptions({int numberOfOutputs}); -} -extension ChannelSplitterOptionsExtension on ChannelSplitterOptions { external set numberOfOutputs(int value); external int get numberOfOutputs; } - -@JS('ConstantSourceNode') -@staticInterop -class ConstantSourceNode implements AudioScheduledSourceNode { +extension type ConstantSourceNode._(JSObject _) + implements AudioScheduledSourceNode, JSObject { external factory ConstantSourceNode( BaseAudioContext context, [ ConstantSourceOptions options, ]); -} -extension ConstantSourceNodeExtension on ConstantSourceNode { external AudioParam get offset; } - -@JS() -@staticInterop -@anonymous -class ConstantSourceOptions { +extension type ConstantSourceOptions._(JSObject _) implements JSObject { external factory ConstantSourceOptions({num offset}); -} -extension ConstantSourceOptionsExtension on ConstantSourceOptions { external set offset(num value); external num get offset; } - -@JS('ConvolverNode') -@staticInterop -class ConvolverNode implements AudioNode { +extension type ConvolverNode._(JSObject _) implements AudioNode, JSObject { external factory ConvolverNode( BaseAudioContext context, [ ConvolverOptions options, ]); -} -extension ConvolverNodeExtension on ConvolverNode { external set buffer(AudioBuffer? value); external AudioBuffer? get buffer; external set normalize(bool value); external bool get normalize; } - -@JS() -@staticInterop -@anonymous -class ConvolverOptions implements AudioNodeOptions { +extension type ConvolverOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory ConvolverOptions({ AudioBuffer? buffer, bool disableNormalization, }); -} -extension ConvolverOptionsExtension on ConvolverOptions { external set buffer(AudioBuffer? value); external AudioBuffer? get buffer; external set disableNormalization(bool value); external bool get disableNormalization; } - -@JS('DelayNode') -@staticInterop -class DelayNode implements AudioNode { +extension type DelayNode._(JSObject _) implements AudioNode, JSObject { external factory DelayNode( BaseAudioContext context, [ DelayOptions options, ]); -} -extension DelayNodeExtension on DelayNode { external AudioParam get delayTime; } - -@JS() -@staticInterop -@anonymous -class DelayOptions implements AudioNodeOptions { +extension type DelayOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory DelayOptions({ num maxDelayTime, num delayTime, }); -} -extension DelayOptionsExtension on DelayOptions { external set maxDelayTime(num value); external num get maxDelayTime; external set delayTime(num value); external num get delayTime; } - -@JS('DynamicsCompressorNode') -@staticInterop -class DynamicsCompressorNode implements AudioNode { +extension type DynamicsCompressorNode._(JSObject _) + implements AudioNode, JSObject { external factory DynamicsCompressorNode( BaseAudioContext context, [ DynamicsCompressorOptions options, ]); -} -extension DynamicsCompressorNodeExtension on DynamicsCompressorNode { external AudioParam get threshold; external AudioParam get knee; external AudioParam get ratio; @@ -812,11 +611,8 @@ extension DynamicsCompressorNodeExtension on DynamicsCompressorNode { external AudioParam get attack; external AudioParam get release; } - -@JS() -@staticInterop -@anonymous -class DynamicsCompressorOptions implements AudioNodeOptions { +extension type DynamicsCompressorOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory DynamicsCompressorOptions({ num attack, num knee, @@ -824,9 +620,7 @@ class DynamicsCompressorOptions implements AudioNodeOptions { num release, num threshold, }); -} -extension DynamicsCompressorOptionsExtension on DynamicsCompressorOptions { external set attack(num value); external num get attack; external set knee(num value); @@ -838,187 +632,123 @@ extension DynamicsCompressorOptionsExtension on DynamicsCompressorOptions { external set threshold(num value); external num get threshold; } - -@JS('GainNode') -@staticInterop -class GainNode implements AudioNode { +extension type GainNode._(JSObject _) implements AudioNode, JSObject { external factory GainNode( BaseAudioContext context, [ GainOptions options, ]); -} -extension GainNodeExtension on GainNode { external AudioParam get gain; } - -@JS() -@staticInterop -@anonymous -class GainOptions implements AudioNodeOptions { +extension type GainOptions._(JSObject _) implements AudioNodeOptions, JSObject { external factory GainOptions({num gain}); -} -extension GainOptionsExtension on GainOptions { external set gain(num value); external num get gain; } - -@JS('IIRFilterNode') -@staticInterop -class IIRFilterNode implements AudioNode { +extension type IIRFilterNode._(JSObject _) implements AudioNode, JSObject { external factory IIRFilterNode( BaseAudioContext context, IIRFilterOptions options, ); -} -extension IIRFilterNodeExtension on IIRFilterNode { external void getFrequencyResponse( JSFloat32Array frequencyHz, JSFloat32Array magResponse, JSFloat32Array phaseResponse, ); } - -@JS() -@staticInterop -@anonymous -class IIRFilterOptions implements AudioNodeOptions { +extension type IIRFilterOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory IIRFilterOptions({ required JSArray feedforward, required JSArray feedback, }); -} -extension IIRFilterOptionsExtension on IIRFilterOptions { external set feedforward(JSArray value); external JSArray get feedforward; external set feedback(JSArray value); external JSArray get feedback; } - -@JS('MediaElementAudioSourceNode') -@staticInterop -class MediaElementAudioSourceNode implements AudioNode { +extension type MediaElementAudioSourceNode._(JSObject _) + implements AudioNode, JSObject { external factory MediaElementAudioSourceNode( AudioContext context, MediaElementAudioSourceOptions options, ); -} -extension MediaElementAudioSourceNodeExtension on MediaElementAudioSourceNode { external HTMLMediaElement get mediaElement; } - -@JS() -@staticInterop -@anonymous -class MediaElementAudioSourceOptions { +extension type MediaElementAudioSourceOptions._(JSObject _) + implements JSObject { external factory MediaElementAudioSourceOptions( {required HTMLMediaElement mediaElement}); -} -extension MediaElementAudioSourceOptionsExtension - on MediaElementAudioSourceOptions { external set mediaElement(HTMLMediaElement value); external HTMLMediaElement get mediaElement; } - -@JS('MediaStreamAudioDestinationNode') -@staticInterop -class MediaStreamAudioDestinationNode implements AudioNode { +extension type MediaStreamAudioDestinationNode._(JSObject _) + implements AudioNode, JSObject { external factory MediaStreamAudioDestinationNode( AudioContext context, [ AudioNodeOptions options, ]); -} -extension MediaStreamAudioDestinationNodeExtension - on MediaStreamAudioDestinationNode { external MediaStream get stream; } - -@JS('MediaStreamAudioSourceNode') -@staticInterop -class MediaStreamAudioSourceNode implements AudioNode { +extension type MediaStreamAudioSourceNode._(JSObject _) + implements AudioNode, JSObject { external factory MediaStreamAudioSourceNode( AudioContext context, MediaStreamAudioSourceOptions options, ); -} -extension MediaStreamAudioSourceNodeExtension on MediaStreamAudioSourceNode { external MediaStream get mediaStream; } - -@JS() -@staticInterop -@anonymous -class MediaStreamAudioSourceOptions { +extension type MediaStreamAudioSourceOptions._(JSObject _) implements JSObject { external factory MediaStreamAudioSourceOptions( {required MediaStream mediaStream}); -} -extension MediaStreamAudioSourceOptionsExtension - on MediaStreamAudioSourceOptions { external set mediaStream(MediaStream value); external MediaStream get mediaStream; } - -@JS('MediaStreamTrackAudioSourceNode') -@staticInterop -class MediaStreamTrackAudioSourceNode implements AudioNode { +extension type MediaStreamTrackAudioSourceNode._(JSObject _) + implements AudioNode, JSObject { external factory MediaStreamTrackAudioSourceNode( AudioContext context, MediaStreamTrackAudioSourceOptions options, ); } - -@JS() -@staticInterop -@anonymous -class MediaStreamTrackAudioSourceOptions { +extension type MediaStreamTrackAudioSourceOptions._(JSObject _) + implements JSObject { external factory MediaStreamTrackAudioSourceOptions( {required MediaStreamTrack mediaStreamTrack}); -} -extension MediaStreamTrackAudioSourceOptionsExtension - on MediaStreamTrackAudioSourceOptions { external set mediaStreamTrack(MediaStreamTrack value); external MediaStreamTrack get mediaStreamTrack; } - -@JS('OscillatorNode') -@staticInterop -class OscillatorNode implements AudioScheduledSourceNode { +extension type OscillatorNode._(JSObject _) + implements AudioScheduledSourceNode, JSObject { external factory OscillatorNode( BaseAudioContext context, [ OscillatorOptions options, ]); -} -extension OscillatorNodeExtension on OscillatorNode { external void setPeriodicWave(PeriodicWave periodicWave); external set type(OscillatorType value); external OscillatorType get type; external AudioParam get frequency; external AudioParam get detune; } - -@JS() -@staticInterop -@anonymous -class OscillatorOptions implements AudioNodeOptions { +extension type OscillatorOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory OscillatorOptions({ OscillatorType type, num frequency, num detune, PeriodicWave periodicWave, }); -} -extension OscillatorOptionsExtension on OscillatorOptions { external set type(OscillatorType value); external OscillatorType get type; external set frequency(num value); @@ -1028,17 +758,12 @@ extension OscillatorOptionsExtension on OscillatorOptions { external set periodicWave(PeriodicWave value); external PeriodicWave get periodicWave; } - -@JS('PannerNode') -@staticInterop -class PannerNode implements AudioNode { +extension type PannerNode._(JSObject _) implements AudioNode, JSObject { external factory PannerNode( BaseAudioContext context, [ PannerOptions options, ]); -} -extension PannerNodeExtension on PannerNode { external void setPosition( num x, num y, @@ -1072,11 +797,8 @@ extension PannerNodeExtension on PannerNode { external set coneOuterGain(num value); external num get coneOuterGain; } - -@JS() -@staticInterop -@anonymous -class PannerOptions implements AudioNodeOptions { +extension type PannerOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory PannerOptions({ PanningModelType panningModel, DistanceModelType distanceModel, @@ -1093,9 +815,7 @@ class PannerOptions implements AudioNodeOptions { num coneOuterAngle, num coneOuterGain, }); -} -extension PannerOptionsExtension on PannerOptions { external set panningModel(PanningModelType value); external PanningModelType get panningModel; external set distanceModel(DistanceModelType value); @@ -1125,126 +845,79 @@ extension PannerOptionsExtension on PannerOptions { external set coneOuterGain(num value); external num get coneOuterGain; } - -@JS('PeriodicWave') -@staticInterop -class PeriodicWave { +extension type PeriodicWave._(JSObject _) implements JSObject { external factory PeriodicWave( BaseAudioContext context, [ PeriodicWaveOptions options, ]); } - -@JS() -@staticInterop -@anonymous -class PeriodicWaveConstraints { +extension type PeriodicWaveConstraints._(JSObject _) implements JSObject { external factory PeriodicWaveConstraints({bool disableNormalization}); -} -extension PeriodicWaveConstraintsExtension on PeriodicWaveConstraints { external set disableNormalization(bool value); external bool get disableNormalization; } - -@JS() -@staticInterop -@anonymous -class PeriodicWaveOptions implements PeriodicWaveConstraints { +extension type PeriodicWaveOptions._(JSObject _) + implements PeriodicWaveConstraints, JSObject { external factory PeriodicWaveOptions({ JSArray real, JSArray imag, }); -} -extension PeriodicWaveOptionsExtension on PeriodicWaveOptions { external set real(JSArray value); external JSArray get real; external set imag(JSArray value); external JSArray get imag; } - -@JS('ScriptProcessorNode') -@staticInterop -class ScriptProcessorNode implements AudioNode {} - -extension ScriptProcessorNodeExtension on ScriptProcessorNode { +extension type ScriptProcessorNode._(JSObject _) + implements AudioNode, JSObject { external set onaudioprocess(EventHandler value); external EventHandler get onaudioprocess; external int get bufferSize; } - -@JS('StereoPannerNode') -@staticInterop -class StereoPannerNode implements AudioNode { +extension type StereoPannerNode._(JSObject _) implements AudioNode, JSObject { external factory StereoPannerNode( BaseAudioContext context, [ StereoPannerOptions options, ]); -} -extension StereoPannerNodeExtension on StereoPannerNode { external AudioParam get pan; } - -@JS() -@staticInterop -@anonymous -class StereoPannerOptions implements AudioNodeOptions { +extension type StereoPannerOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory StereoPannerOptions({num pan}); -} -extension StereoPannerOptionsExtension on StereoPannerOptions { external set pan(num value); external num get pan; } - -@JS('WaveShaperNode') -@staticInterop -class WaveShaperNode implements AudioNode { +extension type WaveShaperNode._(JSObject _) implements AudioNode, JSObject { external factory WaveShaperNode( BaseAudioContext context, [ WaveShaperOptions options, ]); -} -extension WaveShaperNodeExtension on WaveShaperNode { external set curve(JSFloat32Array? value); external JSFloat32Array? get curve; external set oversample(OverSampleType value); external OverSampleType get oversample; } - -@JS() -@staticInterop -@anonymous -class WaveShaperOptions implements AudioNodeOptions { +extension type WaveShaperOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory WaveShaperOptions({ JSArray curve, OverSampleType oversample, }); -} -extension WaveShaperOptionsExtension on WaveShaperOptions { external set curve(JSArray value); external JSArray get curve; external set oversample(OverSampleType value); external OverSampleType get oversample; } - -@JS('AudioWorklet') -@staticInterop -class AudioWorklet implements Worklet {} - -extension AudioWorkletExtension on AudioWorklet { +extension type AudioWorklet._(JSObject _) implements Worklet, JSObject { external MessagePort get port; } - -@JS('AudioWorkletGlobalScope') -@staticInterop -class AudioWorkletGlobalScope implements WorkletGlobalScope {} - -extension AudioWorkletGlobalScopeExtension on AudioWorkletGlobalScope { +extension type AudioWorkletGlobalScope._(JSObject _) + implements WorkletGlobalScope, JSObject { external void registerProcessor( String name, AudioWorkletProcessorConstructor processorCtor, @@ -1255,34 +928,21 @@ extension AudioWorkletGlobalScopeExtension on AudioWorkletGlobalScope { external int get renderQuantumSize; external MessagePort get port; } - -@JS('AudioParamMap') -@staticInterop -class AudioParamMap {} - -extension AudioParamMapExtension on AudioParamMap {} - -@JS('AudioWorkletNode') -@staticInterop -class AudioWorkletNode implements AudioNode { +extension type AudioParamMap._(JSObject _) implements JSObject {} +extension type AudioWorkletNode._(JSObject _) implements AudioNode, JSObject { external factory AudioWorkletNode( BaseAudioContext context, String name, [ AudioWorkletNodeOptions options, ]); -} -extension AudioWorkletNodeExtension on AudioWorkletNode { external AudioParamMap get parameters; external MessagePort get port; external set onprocessorerror(EventHandler value); external EventHandler get onprocessorerror; } - -@JS() -@staticInterop -@anonymous -class AudioWorkletNodeOptions implements AudioNodeOptions { +extension type AudioWorkletNodeOptions._(JSObject _) + implements AudioNodeOptions, JSObject { external factory AudioWorkletNodeOptions({ int numberOfInputs, int numberOfOutputs, @@ -1290,9 +950,7 @@ class AudioWorkletNodeOptions implements AudioNodeOptions { JSAny parameterData, JSObject processorOptions, }); -} -extension AudioWorkletNodeOptionsExtension on AudioWorkletNodeOptions { external set numberOfInputs(int value); external int get numberOfInputs; external set numberOfOutputs(int value); @@ -1304,21 +962,12 @@ extension AudioWorkletNodeOptionsExtension on AudioWorkletNodeOptions { external set processorOptions(JSObject value); external JSObject get processorOptions; } - -@JS('AudioWorkletProcessor') -@staticInterop -class AudioWorkletProcessor { +extension type AudioWorkletProcessor._(JSObject _) implements JSObject { external factory AudioWorkletProcessor(); -} -extension AudioWorkletProcessorExtension on AudioWorkletProcessor { external MessagePort get port; } - -@JS() -@staticInterop -@anonymous -class AudioParamDescriptor { +extension type AudioParamDescriptor._(JSObject _) implements JSObject { external factory AudioParamDescriptor({ required String name, num defaultValue, @@ -1326,9 +975,7 @@ class AudioParamDescriptor { num maxValue, AutomationRate automationRate, }); -} -extension AudioParamDescriptorExtension on AudioParamDescriptor { external set name(String value); external String get name; external set defaultValue(num value); diff --git a/lib/src/dom/webauthn.dart b/lib/src/dom/webauthn.dart index b1d2204d..a5b67cb1 100644 --- a/lib/src/dom/webauthn.dart +++ b/lib/src/dom/webauthn.dart @@ -25,10 +25,8 @@ typedef AuthenticatorTransport = String; typedef UserVerificationRequirement = String; typedef PublicKeyCredentialHints = String; typedef LargeBlobSupport = String; - -@JS('PublicKeyCredential') -@staticInterop -class PublicKeyCredential implements Credential { +extension type PublicKeyCredential._(JSObject _) + implements Credential, JSObject { external static JSPromise isConditionalMediationAvailable(); external static JSPromise isUserVerifyingPlatformAuthenticatorAvailable(); external static JSPromise isPasskeyPlatformAuthenticatorAvailable(); @@ -37,20 +35,13 @@ class PublicKeyCredential implements Credential { PublicKeyCredentialCreationOptionsJSON options); external static PublicKeyCredentialRequestOptions parseRequestOptionsFromJSON( PublicKeyCredentialRequestOptionsJSON options); -} - -extension PublicKeyCredentialExtension on PublicKeyCredential { external AuthenticationExtensionsClientOutputs getClientExtensionResults(); external PublicKeyCredentialJSON toJSON(); external JSArrayBuffer get rawId; external AuthenticatorResponse get response; external String? get authenticatorAttachment; } - -@JS() -@staticInterop -@anonymous -class RegistrationResponseJSON { +extension type RegistrationResponseJSON._(JSObject _) implements JSObject { external factory RegistrationResponseJSON({ required Base64URLString id, required Base64URLString rawId, @@ -59,9 +50,7 @@ class RegistrationResponseJSON { required AuthenticationExtensionsClientOutputsJSON clientExtensionResults, required String type, }); -} -extension RegistrationResponseJSONExtension on RegistrationResponseJSON { external set id(Base64URLString value); external Base64URLString get id; external set rawId(Base64URLString value); @@ -76,11 +65,8 @@ extension RegistrationResponseJSONExtension on RegistrationResponseJSON { external set type(String value); external String get type; } - -@JS() -@staticInterop -@anonymous -class AuthenticatorAttestationResponseJSON { +extension type AuthenticatorAttestationResponseJSON._(JSObject _) + implements JSObject { external factory AuthenticatorAttestationResponseJSON({ required Base64URLString clientDataJSON, required Base64URLString authenticatorData, @@ -89,10 +75,7 @@ class AuthenticatorAttestationResponseJSON { required int publicKeyAlgorithm, required Base64URLString attestationObject, }); -} -extension AuthenticatorAttestationResponseJSONExtension - on AuthenticatorAttestationResponseJSON { external set clientDataJSON(Base64URLString value); external Base64URLString get clientDataJSON; external set authenticatorData(Base64URLString value); @@ -106,11 +89,7 @@ extension AuthenticatorAttestationResponseJSONExtension external set attestationObject(Base64URLString value); external Base64URLString get attestationObject; } - -@JS() -@staticInterop -@anonymous -class AuthenticationResponseJSON { +extension type AuthenticationResponseJSON._(JSObject _) implements JSObject { external factory AuthenticationResponseJSON({ required Base64URLString id, required Base64URLString rawId, @@ -119,9 +98,7 @@ class AuthenticationResponseJSON { required AuthenticationExtensionsClientOutputsJSON clientExtensionResults, required String type, }); -} -extension AuthenticationResponseJSONExtension on AuthenticationResponseJSON { external set id(Base64URLString value); external Base64URLString get id; external set rawId(Base64URLString value); @@ -136,11 +113,8 @@ extension AuthenticationResponseJSONExtension on AuthenticationResponseJSON { external set type(String value); external String get type; } - -@JS() -@staticInterop -@anonymous -class AuthenticatorAssertionResponseJSON { +extension type AuthenticatorAssertionResponseJSON._(JSObject _) + implements JSObject { external factory AuthenticatorAssertionResponseJSON({ required Base64URLString clientDataJSON, required Base64URLString authenticatorData, @@ -148,10 +122,7 @@ class AuthenticatorAssertionResponseJSON { Base64URLString userHandle, Base64URLString attestationObject, }); -} -extension AuthenticatorAssertionResponseJSONExtension - on AuthenticatorAssertionResponseJSON { external set clientDataJSON(Base64URLString value); external Base64URLString get clientDataJSON; external set authenticatorData(Base64URLString value); @@ -163,18 +134,12 @@ extension AuthenticatorAssertionResponseJSONExtension external set attestationObject(Base64URLString value); external Base64URLString get attestationObject; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsClientOutputsJSON { +extension type AuthenticationExtensionsClientOutputsJSON._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsClientOutputsJSON(); } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialCreationOptionsJSON { +extension type PublicKeyCredentialCreationOptionsJSON._(JSObject _) + implements JSObject { external factory PublicKeyCredentialCreationOptionsJSON({ required PublicKeyCredentialRpEntity rp, required PublicKeyCredentialUserEntityJSON user, @@ -188,10 +153,7 @@ class PublicKeyCredentialCreationOptionsJSON { JSArray attestationFormats, AuthenticationExtensionsClientInputsJSON extensions, }); -} -extension PublicKeyCredentialCreationOptionsJSONExtension - on PublicKeyCredentialCreationOptionsJSON { external set rp(PublicKeyCredentialRpEntity value); external PublicKeyCredentialRpEntity get rp; external set user(PublicKeyCredentialUserEntityJSON value); @@ -215,20 +177,14 @@ extension PublicKeyCredentialCreationOptionsJSONExtension external set extensions(AuthenticationExtensionsClientInputsJSON value); external AuthenticationExtensionsClientInputsJSON get extensions; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialUserEntityJSON { +extension type PublicKeyCredentialUserEntityJSON._(JSObject _) + implements JSObject { external factory PublicKeyCredentialUserEntityJSON({ required Base64URLString id, required String name, required String displayName, }); -} -extension PublicKeyCredentialUserEntityJSONExtension - on PublicKeyCredentialUserEntityJSON { external set id(Base64URLString value); external Base64URLString get id; external set name(String value); @@ -236,20 +192,14 @@ extension PublicKeyCredentialUserEntityJSONExtension external set displayName(String value); external String get displayName; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialDescriptorJSON { +extension type PublicKeyCredentialDescriptorJSON._(JSObject _) + implements JSObject { external factory PublicKeyCredentialDescriptorJSON({ required Base64URLString id, required String type, JSArray transports, }); -} -extension PublicKeyCredentialDescriptorJSONExtension - on PublicKeyCredentialDescriptorJSON { external set id(Base64URLString value); external Base64URLString get id; external set type(String value); @@ -257,18 +207,12 @@ extension PublicKeyCredentialDescriptorJSONExtension external set transports(JSArray value); external JSArray get transports; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsClientInputsJSON { +extension type AuthenticationExtensionsClientInputsJSON._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsClientInputsJSON(); } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialRequestOptionsJSON { +extension type PublicKeyCredentialRequestOptionsJSON._(JSObject _) + implements JSObject { external factory PublicKeyCredentialRequestOptionsJSON({ required Base64URLString challenge, int timeout, @@ -280,10 +224,7 @@ class PublicKeyCredentialRequestOptionsJSON { JSArray attestationFormats, AuthenticationExtensionsClientInputsJSON extensions, }); -} -extension PublicKeyCredentialRequestOptionsJSONExtension - on PublicKeyCredentialRequestOptionsJSON { external set challenge(Base64URLString value); external Base64URLString get challenge; external set timeout(int value); @@ -303,62 +244,37 @@ extension PublicKeyCredentialRequestOptionsJSONExtension external set extensions(AuthenticationExtensionsClientInputsJSON value); external AuthenticationExtensionsClientInputsJSON get extensions; } - -@JS('AuthenticatorResponse') -@staticInterop -class AuthenticatorResponse {} - -extension AuthenticatorResponseExtension on AuthenticatorResponse { +extension type AuthenticatorResponse._(JSObject _) implements JSObject { external JSArrayBuffer get clientDataJSON; } - -@JS('AuthenticatorAttestationResponse') -@staticInterop -class AuthenticatorAttestationResponse implements AuthenticatorResponse {} - -extension AuthenticatorAttestationResponseExtension - on AuthenticatorAttestationResponse { +extension type AuthenticatorAttestationResponse._(JSObject _) + implements AuthenticatorResponse, JSObject { external JSArray getTransports(); external JSArrayBuffer getAuthenticatorData(); external JSArrayBuffer? getPublicKey(); external COSEAlgorithmIdentifier getPublicKeyAlgorithm(); external JSArrayBuffer get attestationObject; } - -@JS('AuthenticatorAssertionResponse') -@staticInterop -class AuthenticatorAssertionResponse implements AuthenticatorResponse {} - -extension AuthenticatorAssertionResponseExtension - on AuthenticatorAssertionResponse { +extension type AuthenticatorAssertionResponse._(JSObject _) + implements AuthenticatorResponse, JSObject { external JSArrayBuffer get authenticatorData; external JSArrayBuffer get signature; external JSArrayBuffer? get userHandle; external JSArrayBuffer? get attestationObject; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialParameters { +extension type PublicKeyCredentialParameters._(JSObject _) implements JSObject { external factory PublicKeyCredentialParameters({ required String type, required COSEAlgorithmIdentifier alg, }); -} -extension PublicKeyCredentialParametersExtension - on PublicKeyCredentialParameters { external set type(String value); external String get type; external set alg(COSEAlgorithmIdentifier value); external COSEAlgorithmIdentifier get alg; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialCreationOptions { +extension type PublicKeyCredentialCreationOptions._(JSObject _) + implements JSObject { external factory PublicKeyCredentialCreationOptions({ required PublicKeyCredentialRpEntity rp, required PublicKeyCredentialUserEntity user, @@ -372,10 +288,7 @@ class PublicKeyCredentialCreationOptions { JSArray attestationFormats, AuthenticationExtensionsClientInputs extensions, }); -} -extension PublicKeyCredentialCreationOptionsExtension - on PublicKeyCredentialCreationOptions { external set rp(PublicKeyCredentialRpEntity value); external PublicKeyCredentialRpEntity get rp; external set user(PublicKeyCredentialUserEntity value); @@ -399,63 +312,40 @@ extension PublicKeyCredentialCreationOptionsExtension external set extensions(AuthenticationExtensionsClientInputs value); external AuthenticationExtensionsClientInputs get extensions; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialEntity { +extension type PublicKeyCredentialEntity._(JSObject _) implements JSObject { external factory PublicKeyCredentialEntity({required String name}); -} -extension PublicKeyCredentialEntityExtension on PublicKeyCredentialEntity { external set name(String value); external String get name; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialRpEntity implements PublicKeyCredentialEntity { +extension type PublicKeyCredentialRpEntity._(JSObject _) + implements PublicKeyCredentialEntity, JSObject { external factory PublicKeyCredentialRpEntity({String id}); -} -extension PublicKeyCredentialRpEntityExtension on PublicKeyCredentialRpEntity { external set id(String value); external String get id; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialUserEntity implements PublicKeyCredentialEntity { +extension type PublicKeyCredentialUserEntity._(JSObject _) + implements PublicKeyCredentialEntity, JSObject { external factory PublicKeyCredentialUserEntity({ required BufferSource id, required String displayName, }); -} -extension PublicKeyCredentialUserEntityExtension - on PublicKeyCredentialUserEntity { external set id(BufferSource value); external BufferSource get id; external set displayName(String value); external String get displayName; } - -@JS() -@staticInterop -@anonymous -class AuthenticatorSelectionCriteria { +extension type AuthenticatorSelectionCriteria._(JSObject _) + implements JSObject { external factory AuthenticatorSelectionCriteria({ String authenticatorAttachment, String residentKey, bool requireResidentKey, String userVerification, }); -} -extension AuthenticatorSelectionCriteriaExtension - on AuthenticatorSelectionCriteria { external set authenticatorAttachment(String value); external String get authenticatorAttachment; external set residentKey(String value); @@ -465,11 +355,8 @@ extension AuthenticatorSelectionCriteriaExtension external set userVerification(String value); external String get userVerification; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialRequestOptions { +extension type PublicKeyCredentialRequestOptions._(JSObject _) + implements JSObject { external factory PublicKeyCredentialRequestOptions({ required BufferSource challenge, int timeout, @@ -481,10 +368,7 @@ class PublicKeyCredentialRequestOptions { JSArray attestationFormats, AuthenticationExtensionsClientInputs extensions, }); -} -extension PublicKeyCredentialRequestOptionsExtension - on PublicKeyCredentialRequestOptions { external set challenge(BufferSource value); external BufferSource get challenge; external set timeout(int value); @@ -504,11 +388,8 @@ extension PublicKeyCredentialRequestOptionsExtension external set extensions(AuthenticationExtensionsClientInputs value); external AuthenticationExtensionsClientInputs get extensions; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsClientInputs { +extension type AuthenticationExtensionsClientInputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsClientInputs({ String credentialProtectionPolicy, bool enforceCredentialProtectionPolicy, @@ -526,10 +407,7 @@ class AuthenticationExtensionsClientInputs { bool uvm, AuthenticationExtensionsDevicePublicKeyInputs devicePubKey, }); -} -extension AuthenticationExtensionsClientInputsExtension - on AuthenticationExtensionsClientInputs { external set credentialProtectionPolicy(String value); external String get credentialProtectionPolicy; external set enforceCredentialProtectionPolicy(bool value); @@ -562,11 +440,8 @@ extension AuthenticationExtensionsClientInputsExtension AuthenticationExtensionsDevicePublicKeyInputs value); external AuthenticationExtensionsDevicePublicKeyInputs get devicePubKey; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsClientOutputs { +extension type AuthenticationExtensionsClientOutputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsClientOutputs({ bool hmacCreateSecret, HMACGetSecretOutput hmacGetSecret, @@ -578,10 +453,7 @@ class AuthenticationExtensionsClientOutputs { UvmEntries uvm, AuthenticationExtensionsDevicePublicKeyOutputs devicePubKey, }); -} -extension AuthenticationExtensionsClientOutputsExtension - on AuthenticationExtensionsClientOutputs { external set hmacCreateSecret(bool value); external bool get hmacCreateSecret; external set hmacGetSecret(HMACGetSecretOutput value); @@ -602,11 +474,7 @@ extension AuthenticationExtensionsClientOutputsExtension AuthenticationExtensionsDevicePublicKeyOutputs value); external AuthenticationExtensionsDevicePublicKeyOutputs get devicePubKey; } - -@JS() -@staticInterop -@anonymous -class CollectedClientData { +extension type CollectedClientData._(JSObject _) implements JSObject { external factory CollectedClientData({ required String type, required String challenge, @@ -614,9 +482,7 @@ class CollectedClientData { String topOrigin, bool crossOrigin, }); -} -extension CollectedClientDataExtension on CollectedClientData { external set type(String value); external String get type; external set challenge(String value); @@ -628,37 +494,24 @@ extension CollectedClientDataExtension on CollectedClientData { external set crossOrigin(bool value); external bool get crossOrigin; } - -@JS() -@staticInterop -@anonymous -class TokenBinding { +extension type TokenBinding._(JSObject _) implements JSObject { external factory TokenBinding({ required String status, String id, }); -} -extension TokenBindingExtension on TokenBinding { external set status(String value); external String get status; external set id(String value); external String get id; } - -@JS() -@staticInterop -@anonymous -class PublicKeyCredentialDescriptor { +extension type PublicKeyCredentialDescriptor._(JSObject _) implements JSObject { external factory PublicKeyCredentialDescriptor({ required String type, required BufferSource id, JSArray transports, }); -} -extension PublicKeyCredentialDescriptorExtension - on PublicKeyCredentialDescriptor { external set type(String value); external String get type; external set id(BufferSource value); @@ -666,86 +519,56 @@ extension PublicKeyCredentialDescriptorExtension external set transports(JSArray value); external JSArray get transports; } - -@JS() -@staticInterop -@anonymous -class CredentialPropertiesOutput { +extension type CredentialPropertiesOutput._(JSObject _) implements JSObject { external factory CredentialPropertiesOutput({bool rk}); -} -extension CredentialPropertiesOutputExtension on CredentialPropertiesOutput { external set rk(bool value); external bool get rk; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsPRFValues { +extension type AuthenticationExtensionsPRFValues._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsPRFValues({ required BufferSource first, BufferSource second, }); -} -extension AuthenticationExtensionsPRFValuesExtension - on AuthenticationExtensionsPRFValues { external set first(BufferSource value); external BufferSource get first; external set second(BufferSource value); external BufferSource get second; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsPRFInputs { +extension type AuthenticationExtensionsPRFInputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsPRFInputs({ AuthenticationExtensionsPRFValues eval, JSAny evalByCredential, }); -} -extension AuthenticationExtensionsPRFInputsExtension - on AuthenticationExtensionsPRFInputs { external set eval(AuthenticationExtensionsPRFValues value); external AuthenticationExtensionsPRFValues get eval; external set evalByCredential(JSAny value); external JSAny get evalByCredential; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsPRFOutputs { +extension type AuthenticationExtensionsPRFOutputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsPRFOutputs({ bool enabled, AuthenticationExtensionsPRFValues results, }); -} -extension AuthenticationExtensionsPRFOutputsExtension - on AuthenticationExtensionsPRFOutputs { external set enabled(bool value); external bool get enabled; external set results(AuthenticationExtensionsPRFValues value); external AuthenticationExtensionsPRFValues get results; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsLargeBlobInputs { +extension type AuthenticationExtensionsLargeBlobInputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsLargeBlobInputs({ String support, bool read, BufferSource write, }); -} -extension AuthenticationExtensionsLargeBlobInputsExtension - on AuthenticationExtensionsLargeBlobInputs { external set support(String value); external String get support; external set read(bool value); @@ -753,20 +576,14 @@ extension AuthenticationExtensionsLargeBlobInputsExtension external set write(BufferSource value); external BufferSource get write; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsLargeBlobOutputs { +extension type AuthenticationExtensionsLargeBlobOutputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsLargeBlobOutputs({ bool supported, JSArrayBuffer blob, bool written, }); -} -extension AuthenticationExtensionsLargeBlobOutputsExtension - on AuthenticationExtensionsLargeBlobOutputs { external set supported(bool value); external bool get supported; external set blob(JSArrayBuffer value); @@ -774,35 +591,23 @@ extension AuthenticationExtensionsLargeBlobOutputsExtension external set written(bool value); external bool get written; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsDevicePublicKeyInputs { +extension type AuthenticationExtensionsDevicePublicKeyInputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsDevicePublicKeyInputs({ String attestation, JSArray attestationFormats, }); -} -extension AuthenticationExtensionsDevicePublicKeyInputsExtension - on AuthenticationExtensionsDevicePublicKeyInputs { external set attestation(String value); external String get attestation; external set attestationFormats(JSArray value); external JSArray get attestationFormats; } - -@JS() -@staticInterop -@anonymous -class AuthenticationExtensionsDevicePublicKeyOutputs { +extension type AuthenticationExtensionsDevicePublicKeyOutputs._(JSObject _) + implements JSObject { external factory AuthenticationExtensionsDevicePublicKeyOutputs( {JSArrayBuffer signature}); -} -extension AuthenticationExtensionsDevicePublicKeyOutputsExtension - on AuthenticationExtensionsDevicePublicKeyOutputs { external set signature(JSArrayBuffer value); external JSArrayBuffer get signature; } diff --git a/lib/src/dom/webcodecs.dart b/lib/src/dom/webcodecs.dart index d88b2ba9..e02678fa 100644 --- a/lib/src/dom/webcodecs.dart +++ b/lib/src/dom/webcodecs.dart @@ -37,16 +37,10 @@ typedef VideoPixelFormat = String; typedef VideoColorPrimaries = String; typedef VideoTransferCharacteristics = String; typedef VideoMatrixCoefficients = String; - -@JS('AudioDecoder') -@staticInterop -class AudioDecoder implements EventTarget { +extension type AudioDecoder._(JSObject _) implements EventTarget, JSObject { external factory AudioDecoder(AudioDecoderInit init); external static JSPromise isConfigSupported(AudioDecoderConfig config); -} - -extension AudioDecoderExtension on AudioDecoder { external void configure(AudioDecoderConfig config); external void decode(EncodedAudioChunk chunk); external JSPromise flush(); @@ -57,33 +51,21 @@ extension AudioDecoderExtension on AudioDecoder { external set ondequeue(EventHandler value); external EventHandler get ondequeue; } - -@JS() -@staticInterop -@anonymous -class AudioDecoderInit { +extension type AudioDecoderInit._(JSObject _) implements JSObject { external factory AudioDecoderInit({ required AudioDataOutputCallback output, required WebCodecsErrorCallback error, }); -} -extension AudioDecoderInitExtension on AudioDecoderInit { external set output(AudioDataOutputCallback value); external AudioDataOutputCallback get output; external set error(WebCodecsErrorCallback value); external WebCodecsErrorCallback get error; } - -@JS('VideoDecoder') -@staticInterop -class VideoDecoder implements EventTarget { +extension type VideoDecoder._(JSObject _) implements EventTarget, JSObject { external factory VideoDecoder(VideoDecoderInit init); external static JSPromise isConfigSupported(VideoDecoderConfig config); -} - -extension VideoDecoderExtension on VideoDecoder { external void configure(VideoDecoderConfig config); external void decode(EncodedVideoChunk chunk); external JSPromise flush(); @@ -94,33 +76,21 @@ extension VideoDecoderExtension on VideoDecoder { external set ondequeue(EventHandler value); external EventHandler get ondequeue; } - -@JS() -@staticInterop -@anonymous -class VideoDecoderInit { +extension type VideoDecoderInit._(JSObject _) implements JSObject { external factory VideoDecoderInit({ required VideoFrameOutputCallback output, required WebCodecsErrorCallback error, }); -} -extension VideoDecoderInitExtension on VideoDecoderInit { external set output(VideoFrameOutputCallback value); external VideoFrameOutputCallback get output; external set error(WebCodecsErrorCallback value); external WebCodecsErrorCallback get error; } - -@JS('AudioEncoder') -@staticInterop -class AudioEncoder implements EventTarget { +extension type AudioEncoder._(JSObject _) implements EventTarget, JSObject { external factory AudioEncoder(AudioEncoderInit init); external static JSPromise isConfigSupported(AudioEncoderConfig config); -} - -extension AudioEncoderExtension on AudioEncoder { external void configure(AudioEncoderConfig config); external void encode(AudioData data); external JSPromise flush(); @@ -131,46 +101,28 @@ extension AudioEncoderExtension on AudioEncoder { external set ondequeue(EventHandler value); external EventHandler get ondequeue; } - -@JS() -@staticInterop -@anonymous -class AudioEncoderInit { +extension type AudioEncoderInit._(JSObject _) implements JSObject { external factory AudioEncoderInit({ required EncodedAudioChunkOutputCallback output, required WebCodecsErrorCallback error, }); -} -extension AudioEncoderInitExtension on AudioEncoderInit { external set output(EncodedAudioChunkOutputCallback value); external EncodedAudioChunkOutputCallback get output; external set error(WebCodecsErrorCallback value); external WebCodecsErrorCallback get error; } - -@JS() -@staticInterop -@anonymous -class EncodedAudioChunkMetadata { +extension type EncodedAudioChunkMetadata._(JSObject _) implements JSObject { external factory EncodedAudioChunkMetadata( {AudioDecoderConfig decoderConfig}); -} -extension EncodedAudioChunkMetadataExtension on EncodedAudioChunkMetadata { external set decoderConfig(AudioDecoderConfig value); external AudioDecoderConfig get decoderConfig; } - -@JS('VideoEncoder') -@staticInterop -class VideoEncoder implements EventTarget { +extension type VideoEncoder._(JSObject _) implements EventTarget, JSObject { external factory VideoEncoder(VideoEncoderInit init); external static JSPromise isConfigSupported(VideoEncoderConfig config); -} - -extension VideoEncoderExtension on VideoEncoder { external void configure(VideoEncoderConfig config); external void encode( VideoFrame frame, [ @@ -184,36 +136,24 @@ extension VideoEncoderExtension on VideoEncoder { external set ondequeue(EventHandler value); external EventHandler get ondequeue; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderInit { +extension type VideoEncoderInit._(JSObject _) implements JSObject { external factory VideoEncoderInit({ required EncodedVideoChunkOutputCallback output, required WebCodecsErrorCallback error, }); -} -extension VideoEncoderInitExtension on VideoEncoderInit { external set output(EncodedVideoChunkOutputCallback value); external EncodedVideoChunkOutputCallback get output; external set error(WebCodecsErrorCallback value); external WebCodecsErrorCallback get error; } - -@JS() -@staticInterop -@anonymous -class EncodedVideoChunkMetadata { +extension type EncodedVideoChunkMetadata._(JSObject _) implements JSObject { external factory EncodedVideoChunkMetadata({ VideoDecoderConfig decoderConfig, SvcOutputMetadata svc, BufferSource alphaSideData, }); -} -extension EncodedVideoChunkMetadataExtension on EncodedVideoChunkMetadata { external set decoderConfig(VideoDecoderConfig value); external VideoDecoderConfig get decoderConfig; external set svc(SvcOutputMetadata value); @@ -221,100 +161,64 @@ extension EncodedVideoChunkMetadataExtension on EncodedVideoChunkMetadata { external set alphaSideData(BufferSource value); external BufferSource get alphaSideData; } - -@JS() -@staticInterop -@anonymous -class SvcOutputMetadata { +extension type SvcOutputMetadata._(JSObject _) implements JSObject { external factory SvcOutputMetadata({int temporalLayerId}); -} -extension SvcOutputMetadataExtension on SvcOutputMetadata { external set temporalLayerId(int value); external int get temporalLayerId; } - -@JS() -@staticInterop -@anonymous -class AudioDecoderSupport { +extension type AudioDecoderSupport._(JSObject _) implements JSObject { external factory AudioDecoderSupport({ bool supported, AudioDecoderConfig config, }); -} -extension AudioDecoderSupportExtension on AudioDecoderSupport { external set supported(bool value); external bool get supported; external set config(AudioDecoderConfig value); external AudioDecoderConfig get config; } - -@JS() -@staticInterop -@anonymous -class VideoDecoderSupport { +extension type VideoDecoderSupport._(JSObject _) implements JSObject { external factory VideoDecoderSupport({ bool supported, VideoDecoderConfig config, }); -} -extension VideoDecoderSupportExtension on VideoDecoderSupport { external set supported(bool value); external bool get supported; external set config(VideoDecoderConfig value); external VideoDecoderConfig get config; } - -@JS() -@staticInterop -@anonymous -class AudioEncoderSupport { +extension type AudioEncoderSupport._(JSObject _) implements JSObject { external factory AudioEncoderSupport({ bool supported, AudioEncoderConfig config, }); -} -extension AudioEncoderSupportExtension on AudioEncoderSupport { external set supported(bool value); external bool get supported; external set config(AudioEncoderConfig value); external AudioEncoderConfig get config; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderSupport { +extension type VideoEncoderSupport._(JSObject _) implements JSObject { external factory VideoEncoderSupport({ bool supported, VideoEncoderConfig config, }); -} -extension VideoEncoderSupportExtension on VideoEncoderSupport { external set supported(bool value); external bool get supported; external set config(VideoEncoderConfig value); external VideoEncoderConfig get config; } - -@JS() -@staticInterop -@anonymous -class AudioDecoderConfig { +extension type AudioDecoderConfig._(JSObject _) implements JSObject { external factory AudioDecoderConfig({ required String codec, required int sampleRate, required int numberOfChannels, BufferSource description, }); -} -extension AudioDecoderConfigExtension on AudioDecoderConfig { external set codec(String value); external String get codec; external set sampleRate(int value); @@ -324,11 +228,7 @@ extension AudioDecoderConfigExtension on AudioDecoderConfig { external set description(BufferSource value); external BufferSource get description; } - -@JS() -@staticInterop -@anonymous -class VideoDecoderConfig { +extension type VideoDecoderConfig._(JSObject _) implements JSObject { external factory VideoDecoderConfig({ required String codec, AllowSharedBufferSource description, @@ -340,9 +240,7 @@ class VideoDecoderConfig { HardwareAcceleration hardwareAcceleration, bool optimizeForLatency, }); -} -extension VideoDecoderConfigExtension on VideoDecoderConfig { external set codec(String value); external String get codec; external set description(AllowSharedBufferSource value); @@ -362,11 +260,7 @@ extension VideoDecoderConfigExtension on VideoDecoderConfig { external set optimizeForLatency(bool value); external bool get optimizeForLatency; } - -@JS() -@staticInterop -@anonymous -class AudioEncoderConfig { +extension type AudioEncoderConfig._(JSObject _) implements JSObject { external factory AudioEncoderConfig({ AacEncoderConfig aac, FlacEncoderConfig flac, @@ -377,9 +271,7 @@ class AudioEncoderConfig { int bitrate, BitrateMode bitrateMode, }); -} -extension AudioEncoderConfigExtension on AudioEncoderConfig { external set aac(AacEncoderConfig value); external AacEncoderConfig get aac; external set flac(FlacEncoderConfig value); @@ -397,11 +289,7 @@ extension AudioEncoderConfigExtension on AudioEncoderConfig { external set bitrateMode(BitrateMode value); external BitrateMode get bitrateMode; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderConfig { +extension type VideoEncoderConfig._(JSObject _) implements JSObject { external factory VideoEncoderConfig({ AV1EncoderConfig av1, AvcEncoderConfig avc, @@ -419,9 +307,7 @@ class VideoEncoderConfig { VideoEncoderBitrateMode bitrateMode, LatencyMode latencyMode, }); -} -extension VideoEncoderConfigExtension on VideoEncoderConfig { external set av1(AV1EncoderConfig value); external AV1EncoderConfig get av1; external set avc(AvcEncoderConfig value); @@ -453,11 +339,7 @@ extension VideoEncoderConfigExtension on VideoEncoderConfig { external set latencyMode(LatencyMode value); external LatencyMode get latencyMode; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderEncodeOptions { +extension type VideoEncoderEncodeOptions._(JSObject _) implements JSObject { external factory VideoEncoderEncodeOptions({ VideoEncoderEncodeOptionsForAv1 av1, VideoEncoderEncodeOptionsForAvc avc, @@ -465,9 +347,7 @@ class VideoEncoderEncodeOptions { VideoEncoderEncodeOptionsForVp9 vp9, bool keyFrame, }); -} -extension VideoEncoderEncodeOptionsExtension on VideoEncoderEncodeOptions { external set av1(VideoEncoderEncodeOptionsForAv1 value); external VideoEncoderEncodeOptionsForAv1 get av1; external set avc(VideoEncoderEncodeOptionsForAvc value); @@ -479,34 +359,23 @@ extension VideoEncoderEncodeOptionsExtension on VideoEncoderEncodeOptions { external set keyFrame(bool value); external bool get keyFrame; } - -@JS('EncodedAudioChunk') -@staticInterop -class EncodedAudioChunk { +extension type EncodedAudioChunk._(JSObject _) implements JSObject { external factory EncodedAudioChunk(EncodedAudioChunkInit init); -} -extension EncodedAudioChunkExtension on EncodedAudioChunk { external void copyTo(AllowSharedBufferSource destination); external EncodedAudioChunkType get type; external int get timestamp; external int? get duration; external int get byteLength; } - -@JS() -@staticInterop -@anonymous -class EncodedAudioChunkInit { +extension type EncodedAudioChunkInit._(JSObject _) implements JSObject { external factory EncodedAudioChunkInit({ required EncodedAudioChunkType type, required int timestamp, int duration, required BufferSource data, }); -} -extension EncodedAudioChunkInitExtension on EncodedAudioChunkInit { external set type(EncodedAudioChunkType value); external EncodedAudioChunkType get type; external set timestamp(int value); @@ -516,34 +385,23 @@ extension EncodedAudioChunkInitExtension on EncodedAudioChunkInit { external set data(BufferSource value); external BufferSource get data; } - -@JS('EncodedVideoChunk') -@staticInterop -class EncodedVideoChunk { +extension type EncodedVideoChunk._(JSObject _) implements JSObject { external factory EncodedVideoChunk(EncodedVideoChunkInit init); -} -extension EncodedVideoChunkExtension on EncodedVideoChunk { external void copyTo(AllowSharedBufferSource destination); external EncodedVideoChunkType get type; external int get timestamp; external int? get duration; external int get byteLength; } - -@JS() -@staticInterop -@anonymous -class EncodedVideoChunkInit { +extension type EncodedVideoChunkInit._(JSObject _) implements JSObject { external factory EncodedVideoChunkInit({ required EncodedVideoChunkType type, required int timestamp, int duration, required AllowSharedBufferSource data, }); -} -extension EncodedVideoChunkInitExtension on EncodedVideoChunkInit { external set type(EncodedVideoChunkType value); external EncodedVideoChunkType get type; external set timestamp(int value); @@ -553,14 +411,9 @@ extension EncodedVideoChunkInitExtension on EncodedVideoChunkInit { external set data(AllowSharedBufferSource value); external AllowSharedBufferSource get data; } - -@JS('AudioData') -@staticInterop -class AudioData { +extension type AudioData._(JSObject _) implements JSObject { external factory AudioData(AudioDataInit init); -} -extension AudioDataExtension on AudioData { external int allocationSize(AudioDataCopyToOptions options); external void copyTo( AllowSharedBufferSource destination, @@ -575,11 +428,7 @@ extension AudioDataExtension on AudioData { external int get duration; external int get timestamp; } - -@JS() -@staticInterop -@anonymous -class AudioDataInit { +extension type AudioDataInit._(JSObject _) implements JSObject { external factory AudioDataInit({ required AudioSampleFormat format, required num sampleRate, @@ -589,9 +438,7 @@ class AudioDataInit { required BufferSource data, JSArray transfer, }); -} -extension AudioDataInitExtension on AudioDataInit { external set format(AudioSampleFormat value); external AudioSampleFormat get format; external set sampleRate(num value); @@ -607,20 +454,14 @@ extension AudioDataInitExtension on AudioDataInit { external set transfer(JSArray value); external JSArray get transfer; } - -@JS() -@staticInterop -@anonymous -class AudioDataCopyToOptions { +extension type AudioDataCopyToOptions._(JSObject _) implements JSObject { external factory AudioDataCopyToOptions({ required int planeIndex, int frameOffset, int frameCount, AudioSampleFormat format, }); -} -extension AudioDataCopyToOptionsExtension on AudioDataCopyToOptions { external set planeIndex(int value); external int get planeIndex; external set frameOffset(int value); @@ -630,17 +471,12 @@ extension AudioDataCopyToOptionsExtension on AudioDataCopyToOptions { external set format(AudioSampleFormat value); external AudioSampleFormat get format; } - -@JS('VideoFrame') -@staticInterop -class VideoFrame { +extension type VideoFrame._(JSObject _) implements JSObject { external factory VideoFrame( JSObject dataOrImage, [ JSObject init, ]); -} -extension VideoFrameExtension on VideoFrame { external VideoFrameMetadata metadata(); external int allocationSize([VideoFrameCopyToOptions options]); external JSPromise copyTo( @@ -660,11 +496,7 @@ extension VideoFrameExtension on VideoFrame { external int get timestamp; external VideoColorSpace get colorSpace; } - -@JS() -@staticInterop -@anonymous -class VideoFrameInit { +extension type VideoFrameInit._(JSObject _) implements JSObject { external factory VideoFrameInit({ int duration, int timestamp, @@ -674,9 +506,7 @@ class VideoFrameInit { int displayHeight, VideoFrameMetadata metadata, }); -} -extension VideoFrameInitExtension on VideoFrameInit { external set duration(int value); external int get duration; external set timestamp(int value); @@ -692,11 +522,7 @@ extension VideoFrameInitExtension on VideoFrameInit { external set metadata(VideoFrameMetadata value); external VideoFrameMetadata get metadata; } - -@JS() -@staticInterop -@anonymous -class VideoFrameBufferInit { +extension type VideoFrameBufferInit._(JSObject _) implements JSObject { external factory VideoFrameBufferInit({ required VideoPixelFormat format, required int codedWidth, @@ -710,9 +536,7 @@ class VideoFrameBufferInit { VideoColorSpaceInit colorSpace, JSArray transfer, }); -} -extension VideoFrameBufferInitExtension on VideoFrameBufferInit { external set format(VideoPixelFormat value); external VideoPixelFormat get format; external set codedWidth(int value); @@ -736,75 +560,48 @@ extension VideoFrameBufferInitExtension on VideoFrameBufferInit { external set transfer(JSArray value); external JSArray get transfer; } - -@JS() -@staticInterop -@anonymous -class VideoFrameMetadata { +extension type VideoFrameMetadata._(JSObject _) implements JSObject { external factory VideoFrameMetadata(); } - -@JS() -@staticInterop -@anonymous -class VideoFrameCopyToOptions { +extension type VideoFrameCopyToOptions._(JSObject _) implements JSObject { external factory VideoFrameCopyToOptions({ DOMRectInit rect, JSArray layout, }); -} -extension VideoFrameCopyToOptionsExtension on VideoFrameCopyToOptions { external set rect(DOMRectInit value); external DOMRectInit get rect; external set layout(JSArray value); external JSArray get layout; } - -@JS() -@staticInterop -@anonymous -class PlaneLayout { +extension type PlaneLayout._(JSObject _) implements JSObject { external factory PlaneLayout({ required int offset, required int stride, }); -} -extension PlaneLayoutExtension on PlaneLayout { external set offset(int value); external int get offset; external set stride(int value); external int get stride; } - -@JS('VideoColorSpace') -@staticInterop -class VideoColorSpace { +extension type VideoColorSpace._(JSObject _) implements JSObject { external factory VideoColorSpace([VideoColorSpaceInit init]); -} -extension VideoColorSpaceExtension on VideoColorSpace { external VideoColorSpaceInit toJSON(); external VideoColorPrimaries? get primaries; external VideoTransferCharacteristics? get transfer; external VideoMatrixCoefficients? get matrix; external bool? get fullRange; } - -@JS() -@staticInterop -@anonymous -class VideoColorSpaceInit { +extension type VideoColorSpaceInit._(JSObject _) implements JSObject { external factory VideoColorSpaceInit({ VideoColorPrimaries? primaries, VideoTransferCharacteristics? transfer, VideoMatrixCoefficients? matrix, bool? fullRange, }); -} -extension VideoColorSpaceInitExtension on VideoColorSpaceInit { external set primaries(VideoColorPrimaries? value); external VideoColorPrimaries? get primaries; external set transfer(VideoTransferCharacteristics? value); @@ -814,16 +611,10 @@ extension VideoColorSpaceInitExtension on VideoColorSpaceInit { external set fullRange(bool? value); external bool? get fullRange; } - -@JS('ImageDecoder') -@staticInterop -class ImageDecoder { +extension type ImageDecoder._(JSObject _) implements JSObject { external factory ImageDecoder(ImageDecoderInit init); external static JSPromise isTypeSupported(String type); -} - -extension ImageDecoderExtension on ImageDecoder { external JSPromise decode([ImageDecodeOptions options]); external void reset(); external void close(); @@ -832,11 +623,7 @@ extension ImageDecoderExtension on ImageDecoder { external JSPromise get completed; external ImageTrackList get tracks; } - -@JS() -@staticInterop -@anonymous -class ImageDecoderInit { +extension type ImageDecoderInit._(JSObject _) implements JSObject { external factory ImageDecoderInit({ required String type, required ImageBufferSource data, @@ -846,9 +633,7 @@ class ImageDecoderInit { bool preferAnimation, JSArray transfer, }); -} -extension ImageDecoderInitExtension on ImageDecoderInit { external set type(String value); external String get type; external set data(ImageBufferSource value); @@ -864,57 +649,35 @@ extension ImageDecoderInitExtension on ImageDecoderInit { external set transfer(JSArray value); external JSArray get transfer; } - -@JS() -@staticInterop -@anonymous -class ImageDecodeOptions { +extension type ImageDecodeOptions._(JSObject _) implements JSObject { external factory ImageDecodeOptions({ int frameIndex, bool completeFramesOnly, }); -} -extension ImageDecodeOptionsExtension on ImageDecodeOptions { external set frameIndex(int value); external int get frameIndex; external set completeFramesOnly(bool value); external bool get completeFramesOnly; } - -@JS() -@staticInterop -@anonymous -class ImageDecodeResult { +extension type ImageDecodeResult._(JSObject _) implements JSObject { external factory ImageDecodeResult({ required VideoFrame image, required bool complete, }); -} -extension ImageDecodeResultExtension on ImageDecodeResult { external set image(VideoFrame value); external VideoFrame get image; external set complete(bool value); external bool get complete; } - -@JS('ImageTrackList') -@staticInterop -class ImageTrackList {} - -extension ImageTrackListExtension on ImageTrackList { +extension type ImageTrackList._(JSObject _) implements JSObject { external JSPromise get ready; external int get length; external int get selectedIndex; external ImageTrack? get selectedTrack; } - -@JS('ImageTrack') -@staticInterop -class ImageTrack {} - -extension ImageTrackExtension on ImageTrack { +extension type ImageTrack._(JSObject _) implements JSObject { external bool get animated; external int get frameCount; external num get repetitionCount; diff --git a/lib/src/dom/webcodecs_aac_codec_registration.dart b/lib/src/dom/webcodecs_aac_codec_registration.dart index d0872bb3..fb43bda5 100644 --- a/lib/src/dom/webcodecs_aac_codec_registration.dart +++ b/lib/src/dom/webcodecs_aac_codec_registration.dart @@ -7,15 +7,9 @@ import 'dart:js_interop'; typedef AacBitstreamFormat = String; - -@JS() -@staticInterop -@anonymous -class AacEncoderConfig { +extension type AacEncoderConfig._(JSObject _) implements JSObject { external factory AacEncoderConfig({AacBitstreamFormat format}); -} -extension AacEncoderConfigExtension on AacEncoderConfig { external set format(AacBitstreamFormat value); external AacBitstreamFormat get format; } diff --git a/lib/src/dom/webcodecs_av1_codec_registration.dart b/lib/src/dom/webcodecs_av1_codec_registration.dart index 923481eb..cd458d86 100644 --- a/lib/src/dom/webcodecs_av1_codec_registration.dart +++ b/lib/src/dom/webcodecs_av1_codec_registration.dart @@ -6,27 +6,16 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class AV1EncoderConfig { +extension type AV1EncoderConfig._(JSObject _) implements JSObject { external factory AV1EncoderConfig({bool forceScreenContentTools}); -} -extension AV1EncoderConfigExtension on AV1EncoderConfig { external set forceScreenContentTools(bool value); external bool get forceScreenContentTools; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderEncodeOptionsForAv1 { +extension type VideoEncoderEncodeOptionsForAv1._(JSObject _) + implements JSObject { external factory VideoEncoderEncodeOptionsForAv1({int? quantizer}); -} -extension VideoEncoderEncodeOptionsForAv1Extension - on VideoEncoderEncodeOptionsForAv1 { external set quantizer(int? value); external int? get quantizer; } diff --git a/lib/src/dom/webcodecs_avc_codec_registration.dart b/lib/src/dom/webcodecs_avc_codec_registration.dart index 1c4eece4..56c5a22b 100644 --- a/lib/src/dom/webcodecs_avc_codec_registration.dart +++ b/lib/src/dom/webcodecs_avc_codec_registration.dart @@ -7,28 +7,16 @@ import 'dart:js_interop'; typedef AvcBitstreamFormat = String; - -@JS() -@staticInterop -@anonymous -class AvcEncoderConfig { +extension type AvcEncoderConfig._(JSObject _) implements JSObject { external factory AvcEncoderConfig({AvcBitstreamFormat format}); -} -extension AvcEncoderConfigExtension on AvcEncoderConfig { external set format(AvcBitstreamFormat value); external AvcBitstreamFormat get format; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderEncodeOptionsForAvc { +extension type VideoEncoderEncodeOptionsForAvc._(JSObject _) + implements JSObject { external factory VideoEncoderEncodeOptionsForAvc({int? quantizer}); -} -extension VideoEncoderEncodeOptionsForAvcExtension - on VideoEncoderEncodeOptionsForAvc { external set quantizer(int? value); external int? get quantizer; } diff --git a/lib/src/dom/webcodecs_flac_codec_registration.dart b/lib/src/dom/webcodecs_flac_codec_registration.dart index 7b518cf1..f06d488c 100644 --- a/lib/src/dom/webcodecs_flac_codec_registration.dart +++ b/lib/src/dom/webcodecs_flac_codec_registration.dart @@ -6,17 +6,12 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class FlacEncoderConfig { +extension type FlacEncoderConfig._(JSObject _) implements JSObject { external factory FlacEncoderConfig({ int blockSize, int compressLevel, }); -} -extension FlacEncoderConfigExtension on FlacEncoderConfig { external set blockSize(int value); external int get blockSize; external set compressLevel(int value); diff --git a/lib/src/dom/webcodecs_hevc_codec_registration.dart b/lib/src/dom/webcodecs_hevc_codec_registration.dart index 800758d8..872c6b65 100644 --- a/lib/src/dom/webcodecs_hevc_codec_registration.dart +++ b/lib/src/dom/webcodecs_hevc_codec_registration.dart @@ -7,28 +7,16 @@ import 'dart:js_interop'; typedef HevcBitstreamFormat = String; - -@JS() -@staticInterop -@anonymous -class HevcEncoderConfig { +extension type HevcEncoderConfig._(JSObject _) implements JSObject { external factory HevcEncoderConfig({HevcBitstreamFormat format}); -} -extension HevcEncoderConfigExtension on HevcEncoderConfig { external set format(HevcBitstreamFormat value); external HevcBitstreamFormat get format; } - -@JS() -@staticInterop -@anonymous -class VideoEncoderEncodeOptionsForHevc { +extension type VideoEncoderEncodeOptionsForHevc._(JSObject _) + implements JSObject { external factory VideoEncoderEncodeOptionsForHevc({int? quantizer}); -} -extension VideoEncoderEncodeOptionsForHevcExtension - on VideoEncoderEncodeOptionsForHevc { external set quantizer(int? value); external int? get quantizer; } diff --git a/lib/src/dom/webcodecs_opus_codec_registration.dart b/lib/src/dom/webcodecs_opus_codec_registration.dart index 91857ed8..a576ed1f 100644 --- a/lib/src/dom/webcodecs_opus_codec_registration.dart +++ b/lib/src/dom/webcodecs_opus_codec_registration.dart @@ -7,11 +7,7 @@ import 'dart:js_interop'; typedef OpusBitstreamFormat = String; - -@JS() -@staticInterop -@anonymous -class OpusEncoderConfig { +extension type OpusEncoderConfig._(JSObject _) implements JSObject { external factory OpusEncoderConfig({ OpusBitstreamFormat format, int frameDuration, @@ -20,9 +16,7 @@ class OpusEncoderConfig { bool useinbandfec, bool usedtx, }); -} -extension OpusEncoderConfigExtension on OpusEncoderConfig { external set format(OpusBitstreamFormat value); external OpusBitstreamFormat get format; external set frameDuration(int value); diff --git a/lib/src/dom/webcodecs_vp9_codec_registration.dart b/lib/src/dom/webcodecs_vp9_codec_registration.dart index fc145678..dc23773e 100644 --- a/lib/src/dom/webcodecs_vp9_codec_registration.dart +++ b/lib/src/dom/webcodecs_vp9_codec_registration.dart @@ -6,15 +6,10 @@ import 'dart:js_interop'; -@JS() -@staticInterop -@anonymous -class VideoEncoderEncodeOptionsForVp9 { +extension type VideoEncoderEncodeOptionsForVp9._(JSObject _) + implements JSObject { external factory VideoEncoderEncodeOptionsForVp9({int? quantizer}); -} -extension VideoEncoderEncodeOptionsForVp9Extension - on VideoEncoderEncodeOptionsForVp9 { external set quantizer(int? value); external int? get quantizer; } diff --git a/lib/src/dom/webcrypto_secure_curves.dart b/lib/src/dom/webcrypto_secure_curves.dart index 9a8f3e0c..232c1264 100644 --- a/lib/src/dom/webcrypto_secure_curves.dart +++ b/lib/src/dom/webcrypto_secure_curves.dart @@ -9,14 +9,9 @@ import 'dart:js_interop'; import 'webcryptoapi.dart'; import 'webidl.dart'; -@JS() -@staticInterop -@anonymous -class Ed448Params implements Algorithm { +extension type Ed448Params._(JSObject _) implements Algorithm, JSObject { external factory Ed448Params({BufferSource context}); -} -extension Ed448ParamsExtension on Ed448Params { external set context(BufferSource value); external BufferSource get context; } diff --git a/lib/src/dom/webcryptoapi.dart b/lib/src/dom/webcryptoapi.dart index 1e743c54..dd8852ed 100644 --- a/lib/src/dom/webcryptoapi.dart +++ b/lib/src/dom/webcryptoapi.dart @@ -15,57 +15,30 @@ typedef NamedCurve = String; typedef KeyType = String; typedef KeyUsage = String; typedef KeyFormat = String; - -@JS('Crypto') -@staticInterop -class Crypto {} - -extension CryptoExtension on Crypto { +extension type Crypto._(JSObject _) implements JSObject { external ArrayBufferView getRandomValues(ArrayBufferView array); external String randomUUID(); external SubtleCrypto get subtle; } - -@JS() -@staticInterop -@anonymous -class Algorithm { +extension type Algorithm._(JSObject _) implements JSObject { external factory Algorithm({required String name}); -} -extension AlgorithmExtension on Algorithm { external set name(String value); external String get name; } - -@JS() -@staticInterop -@anonymous -class KeyAlgorithm { +extension type KeyAlgorithm._(JSObject _) implements JSObject { external factory KeyAlgorithm({required String name}); -} -extension KeyAlgorithmExtension on KeyAlgorithm { external set name(String value); external String get name; } - -@JS('CryptoKey') -@staticInterop -class CryptoKey {} - -extension CryptoKeyExtension on CryptoKey { +extension type CryptoKey._(JSObject _) implements JSObject { external KeyType get type; external bool get extractable; external JSObject get algorithm; external JSObject get usages; } - -@JS('SubtleCrypto') -@staticInterop -class SubtleCrypto {} - -extension SubtleCryptoExtension on SubtleCrypto { +extension type SubtleCrypto._(JSObject _) implements JSObject { external JSPromise encrypt( AlgorithmIdentifier algorithm, CryptoKey key, @@ -135,19 +108,13 @@ extension SubtleCryptoExtension on SubtleCrypto { JSArray keyUsages, ); } - -@JS() -@staticInterop -@anonymous -class RsaOtherPrimesInfo { +extension type RsaOtherPrimesInfo._(JSObject _) implements JSObject { external factory RsaOtherPrimesInfo({ String r, String d, String t, }); -} -extension RsaOtherPrimesInfoExtension on RsaOtherPrimesInfo { external set r(String value); external String get r; external set d(String value); @@ -155,11 +122,7 @@ extension RsaOtherPrimesInfoExtension on RsaOtherPrimesInfo { external set t(String value); external String get t; } - -@JS() -@staticInterop -@anonymous -class JsonWebKey { +extension type JsonWebKey._(JSObject _) implements JSObject { external factory JsonWebKey({ String kty, String use, @@ -180,9 +143,7 @@ class JsonWebKey { JSArray oth, String k, }); -} -extension JsonWebKeyExtension on JsonWebKey { external set kty(String value); external String get kty; external set use(String value); @@ -220,257 +181,148 @@ extension JsonWebKeyExtension on JsonWebKey { external set k(String value); external String get k; } - -@JS() -@staticInterop -@anonymous -class CryptoKeyPair { +extension type CryptoKeyPair._(JSObject _) implements JSObject { external factory CryptoKeyPair({ CryptoKey publicKey, CryptoKey privateKey, }); -} -extension CryptoKeyPairExtension on CryptoKeyPair { external set publicKey(CryptoKey value); external CryptoKey get publicKey; external set privateKey(CryptoKey value); external CryptoKey get privateKey; } - -@JS() -@staticInterop -@anonymous -class RsaKeyGenParams implements Algorithm { +extension type RsaKeyGenParams._(JSObject _) implements Algorithm, JSObject { external factory RsaKeyGenParams({ required int modulusLength, required BigInteger publicExponent, }); -} -extension RsaKeyGenParamsExtension on RsaKeyGenParams { external set modulusLength(int value); external int get modulusLength; external set publicExponent(BigInteger value); external BigInteger get publicExponent; } - -@JS() -@staticInterop -@anonymous -class RsaHashedKeyGenParams implements RsaKeyGenParams { +extension type RsaHashedKeyGenParams._(JSObject _) + implements RsaKeyGenParams, JSObject { external factory RsaHashedKeyGenParams( {required HashAlgorithmIdentifier hash}); -} -extension RsaHashedKeyGenParamsExtension on RsaHashedKeyGenParams { external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; } - -@JS() -@staticInterop -@anonymous -class RsaKeyAlgorithm implements KeyAlgorithm { +extension type RsaKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { external factory RsaKeyAlgorithm({ required int modulusLength, required BigInteger publicExponent, }); -} -extension RsaKeyAlgorithmExtension on RsaKeyAlgorithm { external set modulusLength(int value); external int get modulusLength; external set publicExponent(BigInteger value); external BigInteger get publicExponent; } - -@JS() -@staticInterop -@anonymous -class RsaHashedKeyAlgorithm implements RsaKeyAlgorithm { +extension type RsaHashedKeyAlgorithm._(JSObject _) + implements RsaKeyAlgorithm, JSObject { external factory RsaHashedKeyAlgorithm({required KeyAlgorithm hash}); -} -extension RsaHashedKeyAlgorithmExtension on RsaHashedKeyAlgorithm { external set hash(KeyAlgorithm value); external KeyAlgorithm get hash; } - -@JS() -@staticInterop -@anonymous -class RsaHashedImportParams implements Algorithm { +extension type RsaHashedImportParams._(JSObject _) + implements Algorithm, JSObject { external factory RsaHashedImportParams( {required HashAlgorithmIdentifier hash}); -} -extension RsaHashedImportParamsExtension on RsaHashedImportParams { external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; } - -@JS() -@staticInterop -@anonymous -class RsaPssParams implements Algorithm { +extension type RsaPssParams._(JSObject _) implements Algorithm, JSObject { external factory RsaPssParams({required int saltLength}); -} -extension RsaPssParamsExtension on RsaPssParams { external set saltLength(int value); external int get saltLength; } - -@JS() -@staticInterop -@anonymous -class RsaOaepParams implements Algorithm { +extension type RsaOaepParams._(JSObject _) implements Algorithm, JSObject { external factory RsaOaepParams({BufferSource label}); -} -extension RsaOaepParamsExtension on RsaOaepParams { external set label(BufferSource value); external BufferSource get label; } - -@JS() -@staticInterop -@anonymous -class EcdsaParams implements Algorithm { +extension type EcdsaParams._(JSObject _) implements Algorithm, JSObject { external factory EcdsaParams({required HashAlgorithmIdentifier hash}); -} -extension EcdsaParamsExtension on EcdsaParams { external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; } - -@JS() -@staticInterop -@anonymous -class EcKeyGenParams implements Algorithm { +extension type EcKeyGenParams._(JSObject _) implements Algorithm, JSObject { external factory EcKeyGenParams({required NamedCurve namedCurve}); -} -extension EcKeyGenParamsExtension on EcKeyGenParams { external set namedCurve(NamedCurve value); external NamedCurve get namedCurve; } - -@JS() -@staticInterop -@anonymous -class EcKeyAlgorithm implements KeyAlgorithm { +extension type EcKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { external factory EcKeyAlgorithm({required NamedCurve namedCurve}); -} -extension EcKeyAlgorithmExtension on EcKeyAlgorithm { external set namedCurve(NamedCurve value); external NamedCurve get namedCurve; } - -@JS() -@staticInterop -@anonymous -class EcKeyImportParams implements Algorithm { +extension type EcKeyImportParams._(JSObject _) implements Algorithm, JSObject { external factory EcKeyImportParams({required NamedCurve namedCurve}); -} -extension EcKeyImportParamsExtension on EcKeyImportParams { external set namedCurve(NamedCurve value); external NamedCurve get namedCurve; } - -@JS() -@staticInterop -@anonymous -class EcdhKeyDeriveParams implements Algorithm { +extension type EcdhKeyDeriveParams._(JSObject _) + implements Algorithm, JSObject { external factory EcdhKeyDeriveParams({required CryptoKey public}); -} -extension EcdhKeyDeriveParamsExtension on EcdhKeyDeriveParams { external set public(CryptoKey value); external CryptoKey get public; } - -@JS() -@staticInterop -@anonymous -class AesCtrParams implements Algorithm { +extension type AesCtrParams._(JSObject _) implements Algorithm, JSObject { external factory AesCtrParams({ required BufferSource counter, required int length, }); -} -extension AesCtrParamsExtension on AesCtrParams { external set counter(BufferSource value); external BufferSource get counter; external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class AesKeyAlgorithm implements KeyAlgorithm { +extension type AesKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { external factory AesKeyAlgorithm({required int length}); -} -extension AesKeyAlgorithmExtension on AesKeyAlgorithm { external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class AesKeyGenParams implements Algorithm { +extension type AesKeyGenParams._(JSObject _) implements Algorithm, JSObject { external factory AesKeyGenParams({required int length}); -} -extension AesKeyGenParamsExtension on AesKeyGenParams { external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class AesDerivedKeyParams implements Algorithm { +extension type AesDerivedKeyParams._(JSObject _) + implements Algorithm, JSObject { external factory AesDerivedKeyParams({required int length}); -} -extension AesDerivedKeyParamsExtension on AesDerivedKeyParams { external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class AesCbcParams implements Algorithm { +extension type AesCbcParams._(JSObject _) implements Algorithm, JSObject { external factory AesCbcParams({required BufferSource iv}); -} -extension AesCbcParamsExtension on AesCbcParams { external set iv(BufferSource value); external BufferSource get iv; } - -@JS() -@staticInterop -@anonymous -class AesGcmParams implements Algorithm { +extension type AesGcmParams._(JSObject _) implements Algorithm, JSObject { external factory AesGcmParams({ required BufferSource iv, BufferSource additionalData, int tagLength, }); -} -extension AesGcmParamsExtension on AesGcmParams { external set iv(BufferSource value); external BufferSource get iv; external set additionalData(BufferSource value); @@ -478,70 +330,47 @@ extension AesGcmParamsExtension on AesGcmParams { external set tagLength(int value); external int get tagLength; } - -@JS() -@staticInterop -@anonymous -class HmacImportParams implements Algorithm { +extension type HmacImportParams._(JSObject _) implements Algorithm, JSObject { external factory HmacImportParams({ required HashAlgorithmIdentifier hash, int length, }); -} -extension HmacImportParamsExtension on HmacImportParams { external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class HmacKeyAlgorithm implements KeyAlgorithm { +extension type HmacKeyAlgorithm._(JSObject _) + implements KeyAlgorithm, JSObject { external factory HmacKeyAlgorithm({ required KeyAlgorithm hash, required int length, }); -} -extension HmacKeyAlgorithmExtension on HmacKeyAlgorithm { external set hash(KeyAlgorithm value); external KeyAlgorithm get hash; external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class HmacKeyGenParams implements Algorithm { +extension type HmacKeyGenParams._(JSObject _) implements Algorithm, JSObject { external factory HmacKeyGenParams({ required HashAlgorithmIdentifier hash, int length, }); -} -extension HmacKeyGenParamsExtension on HmacKeyGenParams { external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; external set length(int value); external int get length; } - -@JS() -@staticInterop -@anonymous -class HkdfParams implements Algorithm { +extension type HkdfParams._(JSObject _) implements Algorithm, JSObject { external factory HkdfParams({ required HashAlgorithmIdentifier hash, required BufferSource salt, required BufferSource info, }); -} -extension HkdfParamsExtension on HkdfParams { external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; external set salt(BufferSource value); @@ -549,19 +378,13 @@ extension HkdfParamsExtension on HkdfParams { external set info(BufferSource value); external BufferSource get info; } - -@JS() -@staticInterop -@anonymous -class Pbkdf2Params implements Algorithm { +extension type Pbkdf2Params._(JSObject _) implements Algorithm, JSObject { external factory Pbkdf2Params({ required BufferSource salt, required int iterations, required HashAlgorithmIdentifier hash, }); -} -extension Pbkdf2ParamsExtension on Pbkdf2Params { external set salt(BufferSource value); external BufferSource get salt; external set iterations(int value); diff --git a/lib/src/dom/webgl1.dart b/lib/src/dom/webgl1.dart index e6042c37..4d5e951c 100644 --- a/lib/src/dom/webgl1.dart +++ b/lib/src/dom/webgl1.dart @@ -28,11 +28,7 @@ typedef TexImageSource = JSObject; typedef Float32List = JSObject; typedef Int32List = JSObject; typedef WebGLPowerPreference = String; - -@JS() -@staticInterop -@anonymous -class WebGLContextAttributes { +extension type WebGLContextAttributes._(JSObject _) implements JSObject { external factory WebGLContextAttributes({ bool alpha, bool depth, @@ -45,9 +41,7 @@ class WebGLContextAttributes { bool desynchronized, bool xrCompatible, }); -} -extension WebGLContextAttributesExtension on WebGLContextAttributes { external set alpha(bool value); external bool get alpha; external set depth(bool value); @@ -69,62 +63,27 @@ extension WebGLContextAttributesExtension on WebGLContextAttributes { external set xrCompatible(bool value); external bool get xrCompatible; } - -@JS('WebGLObject') -@staticInterop -class WebGLObject {} - -@JS('WebGLBuffer') -@staticInterop -class WebGLBuffer implements WebGLObject {} - -@JS('WebGLFramebuffer') -@staticInterop -class WebGLFramebuffer implements WebGLObject {} - -@JS('WebGLProgram') -@staticInterop -class WebGLProgram implements WebGLObject {} - -@JS('WebGLRenderbuffer') -@staticInterop -class WebGLRenderbuffer implements WebGLObject {} - -@JS('WebGLShader') -@staticInterop -class WebGLShader implements WebGLObject {} - -@JS('WebGLTexture') -@staticInterop -class WebGLTexture implements WebGLObject {} - -@JS('WebGLUniformLocation') -@staticInterop -class WebGLUniformLocation {} - -@JS('WebGLActiveInfo') -@staticInterop -class WebGLActiveInfo {} - -extension WebGLActiveInfoExtension on WebGLActiveInfo { +extension type WebGLObject._(JSObject _) implements JSObject {} +extension type WebGLBuffer._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLFramebuffer._(JSObject _) + implements WebGLObject, JSObject {} +extension type WebGLProgram._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLRenderbuffer._(JSObject _) + implements WebGLObject, JSObject {} +extension type WebGLShader._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLTexture._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLUniformLocation._(JSObject _) implements JSObject {} +extension type WebGLActiveInfo._(JSObject _) implements JSObject { external GLint get size; external GLenum get type; external String get name; } - -@JS('WebGLShaderPrecisionFormat') -@staticInterop -class WebGLShaderPrecisionFormat {} - -extension WebGLShaderPrecisionFormatExtension on WebGLShaderPrecisionFormat { +extension type WebGLShaderPrecisionFormat._(JSObject _) implements JSObject { external GLint get rangeMin; external GLint get rangeMax; external GLint get precision; } - -@JS('WebGLRenderingContext') -@staticInterop -class WebGLRenderingContext { +extension type WebGLRenderingContext._(JSObject _) implements JSObject { external static GLenum get DEPTH_BUFFER_BIT; external static GLenum get STENCIL_BUFFER_BIT; external static GLenum get COLOR_BUFFER_BIT; @@ -421,9 +380,6 @@ class WebGLRenderingContext { external static GLenum get CONTEXT_LOST_WEBGL; external static GLenum get UNPACK_COLORSPACE_CONVERSION_WEBGL; external static GLenum get BROWSER_DEFAULT_WEBGL; -} - -extension WebGLRenderingContextExtension on WebGLRenderingContext { external WebGLContextAttributes? getContextAttributes(); external bool isContextLost(); external JSArray? getSupportedExtensions(); @@ -922,28 +878,18 @@ extension WebGLRenderingContextExtension on WebGLRenderingContext { external set unpackColorSpace(PredefinedColorSpace value); external PredefinedColorSpace get unpackColorSpace; } - -@JS('WebGLContextEvent') -@staticInterop -class WebGLContextEvent implements Event { +extension type WebGLContextEvent._(JSObject _) implements Event, JSObject { external factory WebGLContextEvent( String type, [ WebGLContextEventInit eventInit, ]); -} -extension WebGLContextEventExtension on WebGLContextEvent { external String get statusMessage; } - -@JS() -@staticInterop -@anonymous -class WebGLContextEventInit implements EventInit { +extension type WebGLContextEventInit._(JSObject _) + implements EventInit, JSObject { external factory WebGLContextEventInit({String statusMessage}); -} -extension WebGLContextEventInitExtension on WebGLContextEventInit { external set statusMessage(String value); external String get statusMessage; } diff --git a/lib/src/dom/webgl2.dart b/lib/src/dom/webgl2.dart index cab29f29..424e3f28 100644 --- a/lib/src/dom/webgl2.dart +++ b/lib/src/dom/webgl2.dart @@ -13,30 +13,14 @@ import 'webidl.dart'; typedef GLint64 = int; typedef GLuint64 = int; typedef Uint32List = JSObject; - -@JS('WebGLQuery') -@staticInterop -class WebGLQuery implements WebGLObject {} - -@JS('WebGLSampler') -@staticInterop -class WebGLSampler implements WebGLObject {} - -@JS('WebGLSync') -@staticInterop -class WebGLSync implements WebGLObject {} - -@JS('WebGLTransformFeedback') -@staticInterop -class WebGLTransformFeedback implements WebGLObject {} - -@JS('WebGLVertexArrayObject') -@staticInterop -class WebGLVertexArrayObject implements WebGLObject {} - -@JS('WebGL2RenderingContext') -@staticInterop -class WebGL2RenderingContext { +extension type WebGLQuery._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLSampler._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLSync._(JSObject _) implements WebGLObject, JSObject {} +extension type WebGLTransformFeedback._(JSObject _) + implements WebGLObject, JSObject {} +extension type WebGLVertexArrayObject._(JSObject _) + implements WebGLObject, JSObject {} +extension type WebGL2RenderingContext._(JSObject _) implements JSObject { external static GLenum get DEPTH_BUFFER_BIT; external static GLenum get STENCIL_BUFFER_BIT; external static GLenum get COLOR_BUFFER_BIT; @@ -596,9 +580,6 @@ class WebGL2RenderingContext { external static GLenum get TEXTURE_IMMUTABLE_LEVELS; external static GLint64 get TIMEOUT_IGNORED; external static GLenum get MAX_CLIENT_WAIT_TIMEOUT_WEBGL; -} - -extension WebGL2RenderingContextExtension on WebGL2RenderingContext { external WebGLContextAttributes? getContextAttributes(); external bool isContextLost(); external JSArray? getSupportedExtensions(); diff --git a/lib/src/dom/webgl_blend_equation_advanced_coherent.dart b/lib/src/dom/webgl_blend_equation_advanced_coherent.dart index 38392408..b97e2e67 100644 --- a/lib/src/dom/webgl_blend_equation_advanced_coherent.dart +++ b/lib/src/dom/webgl_blend_equation_advanced_coherent.dart @@ -8,9 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_blend_equation_advanced_coherent') -@staticInterop -class WEBGL_blend_equation_advanced_coherent { +extension type WEBGL_blend_equation_advanced_coherent._(JSObject _) + implements JSObject { external static GLenum get MULTIPLY; external static GLenum get SCREEN; external static GLenum get OVERLAY; diff --git a/lib/src/dom/webgl_clip_cull_distance.dart b/lib/src/dom/webgl_clip_cull_distance.dart index 40a634e1..169fa063 100644 --- a/lib/src/dom/webgl_clip_cull_distance.dart +++ b/lib/src/dom/webgl_clip_cull_distance.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_clip_cull_distance') -@staticInterop -class WEBGL_clip_cull_distance { +extension type WEBGL_clip_cull_distance._(JSObject _) implements JSObject { external static GLenum get MAX_CLIP_DISTANCES_WEBGL; external static GLenum get MAX_CULL_DISTANCES_WEBGL; external static GLenum get MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL; diff --git a/lib/src/dom/webgl_color_buffer_float.dart b/lib/src/dom/webgl_color_buffer_float.dart index 6d30ec52..196ef9ff 100644 --- a/lib/src/dom/webgl_color_buffer_float.dart +++ b/lib/src/dom/webgl_color_buffer_float.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_color_buffer_float') -@staticInterop -class WEBGL_color_buffer_float { +extension type WEBGL_color_buffer_float._(JSObject _) implements JSObject { external static GLenum get RGBA32F_EXT; external static GLenum get FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT; external static GLenum get UNSIGNED_NORMALIZED_EXT; diff --git a/lib/src/dom/webgl_compressed_texture_astc.dart b/lib/src/dom/webgl_compressed_texture_astc.dart index d81be9f9..d1b832cf 100644 --- a/lib/src/dom/webgl_compressed_texture_astc.dart +++ b/lib/src/dom/webgl_compressed_texture_astc.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_compressed_texture_astc') -@staticInterop -class WEBGL_compressed_texture_astc { +extension type WEBGL_compressed_texture_astc._(JSObject _) implements JSObject { external static GLenum get COMPRESSED_RGBA_ASTC_4x4_KHR; external static GLenum get COMPRESSED_RGBA_ASTC_5x4_KHR; external static GLenum get COMPRESSED_RGBA_ASTC_5x5_KHR; @@ -39,8 +37,5 @@ class WEBGL_compressed_texture_astc { external static GLenum get COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; external static GLenum get COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; external static GLenum get COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; -} - -extension WEBGLCompressedTextureAstcExtension on WEBGL_compressed_texture_astc { external JSArray getSupportedProfiles(); } diff --git a/lib/src/dom/webgl_compressed_texture_etc.dart b/lib/src/dom/webgl_compressed_texture_etc.dart index 8f644686..f9b3c849 100644 --- a/lib/src/dom/webgl_compressed_texture_etc.dart +++ b/lib/src/dom/webgl_compressed_texture_etc.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_compressed_texture_etc') -@staticInterop -class WEBGL_compressed_texture_etc { +extension type WEBGL_compressed_texture_etc._(JSObject _) implements JSObject { external static GLenum get COMPRESSED_R11_EAC; external static GLenum get COMPRESSED_SIGNED_R11_EAC; external static GLenum get COMPRESSED_RG11_EAC; diff --git a/lib/src/dom/webgl_compressed_texture_etc1.dart b/lib/src/dom/webgl_compressed_texture_etc1.dart index a65fb88d..6f49eb45 100644 --- a/lib/src/dom/webgl_compressed_texture_etc1.dart +++ b/lib/src/dom/webgl_compressed_texture_etc1.dart @@ -8,8 +8,6 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_compressed_texture_etc1') -@staticInterop -class WEBGL_compressed_texture_etc1 { +extension type WEBGL_compressed_texture_etc1._(JSObject _) implements JSObject { external static GLenum get COMPRESSED_RGB_ETC1_WEBGL; } diff --git a/lib/src/dom/webgl_compressed_texture_pvrtc.dart b/lib/src/dom/webgl_compressed_texture_pvrtc.dart index 584d6949..02196807 100644 --- a/lib/src/dom/webgl_compressed_texture_pvrtc.dart +++ b/lib/src/dom/webgl_compressed_texture_pvrtc.dart @@ -8,9 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_compressed_texture_pvrtc') -@staticInterop -class WEBGL_compressed_texture_pvrtc { +extension type WEBGL_compressed_texture_pvrtc._(JSObject _) + implements JSObject { external static GLenum get COMPRESSED_RGB_PVRTC_4BPPV1_IMG; external static GLenum get COMPRESSED_RGB_PVRTC_2BPPV1_IMG; external static GLenum get COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; diff --git a/lib/src/dom/webgl_compressed_texture_s3tc.dart b/lib/src/dom/webgl_compressed_texture_s3tc.dart index 9be447cb..0cc3d4a7 100644 --- a/lib/src/dom/webgl_compressed_texture_s3tc.dart +++ b/lib/src/dom/webgl_compressed_texture_s3tc.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_compressed_texture_s3tc') -@staticInterop -class WEBGL_compressed_texture_s3tc { +extension type WEBGL_compressed_texture_s3tc._(JSObject _) implements JSObject { external static GLenum get COMPRESSED_RGB_S3TC_DXT1_EXT; external static GLenum get COMPRESSED_RGBA_S3TC_DXT1_EXT; external static GLenum get COMPRESSED_RGBA_S3TC_DXT3_EXT; diff --git a/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart b/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart index 240a41dd..726b2577 100644 --- a/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart +++ b/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart @@ -8,9 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_compressed_texture_s3tc_srgb') -@staticInterop -class WEBGL_compressed_texture_s3tc_srgb { +extension type WEBGL_compressed_texture_s3tc_srgb._(JSObject _) + implements JSObject { external static GLenum get COMPRESSED_SRGB_S3TC_DXT1_EXT; external static GLenum get COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; external static GLenum get COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; diff --git a/lib/src/dom/webgl_debug_renderer_info.dart b/lib/src/dom/webgl_debug_renderer_info.dart index 2f6371b8..a9c81f4a 100644 --- a/lib/src/dom/webgl_debug_renderer_info.dart +++ b/lib/src/dom/webgl_debug_renderer_info.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_debug_renderer_info') -@staticInterop -class WEBGL_debug_renderer_info { +extension type WEBGL_debug_renderer_info._(JSObject _) implements JSObject { external static GLenum get UNMASKED_VENDOR_WEBGL; external static GLenum get UNMASKED_RENDERER_WEBGL; } diff --git a/lib/src/dom/webgl_debug_shaders.dart b/lib/src/dom/webgl_debug_shaders.dart index e6c51e4a..39e80841 100644 --- a/lib/src/dom/webgl_debug_shaders.dart +++ b/lib/src/dom/webgl_debug_shaders.dart @@ -8,10 +8,6 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_debug_shaders') -@staticInterop -class WEBGL_debug_shaders {} - -extension WEBGLDebugShadersExtension on WEBGL_debug_shaders { +extension type WEBGL_debug_shaders._(JSObject _) implements JSObject { external String getTranslatedShaderSource(WebGLShader shader); } diff --git a/lib/src/dom/webgl_depth_texture.dart b/lib/src/dom/webgl_depth_texture.dart index 1e5a214b..432dadef 100644 --- a/lib/src/dom/webgl_depth_texture.dart +++ b/lib/src/dom/webgl_depth_texture.dart @@ -8,8 +8,6 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_depth_texture') -@staticInterop -class WEBGL_depth_texture { +extension type WEBGL_depth_texture._(JSObject _) implements JSObject { external static GLenum get UNSIGNED_INT_24_8_WEBGL; } diff --git a/lib/src/dom/webgl_draw_buffers.dart b/lib/src/dom/webgl_draw_buffers.dart index f66b7511..c61d7ba5 100644 --- a/lib/src/dom/webgl_draw_buffers.dart +++ b/lib/src/dom/webgl_draw_buffers.dart @@ -8,9 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_draw_buffers') -@staticInterop -class WEBGL_draw_buffers { +extension type WEBGL_draw_buffers._(JSObject _) implements JSObject { external static GLenum get COLOR_ATTACHMENT0_WEBGL; external static GLenum get COLOR_ATTACHMENT1_WEBGL; external static GLenum get COLOR_ATTACHMENT2_WEBGL; @@ -45,8 +43,5 @@ class WEBGL_draw_buffers { external static GLenum get DRAW_BUFFER15_WEBGL; external static GLenum get MAX_COLOR_ATTACHMENTS_WEBGL; external static GLenum get MAX_DRAW_BUFFERS_WEBGL; -} - -extension WEBGLDrawBuffersExtension on WEBGL_draw_buffers { external void drawBuffersWEBGL(JSArray buffers); } diff --git a/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart b/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart index b6d8ec22..5ae05046 100644 --- a/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart +++ b/lib/src/dom/webgl_draw_instanced_base_vertex_base_instance.dart @@ -8,12 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_draw_instanced_base_vertex_base_instance') -@staticInterop -class WEBGL_draw_instanced_base_vertex_base_instance {} - -extension WEBGLDrawInstancedBaseVertexBaseInstanceExtension - on WEBGL_draw_instanced_base_vertex_base_instance { +extension type WEBGL_draw_instanced_base_vertex_base_instance._(JSObject _) + implements JSObject { external void drawArraysInstancedBaseInstanceWEBGL( GLenum mode, GLint first, diff --git a/lib/src/dom/webgl_lose_context.dart b/lib/src/dom/webgl_lose_context.dart index f158c7b4..046ecb10 100644 --- a/lib/src/dom/webgl_lose_context.dart +++ b/lib/src/dom/webgl_lose_context.dart @@ -6,11 +6,7 @@ import 'dart:js_interop'; -@JS('WEBGL_lose_context') -@staticInterop -class WEBGL_lose_context {} - -extension WEBGLLoseContextExtension on WEBGL_lose_context { +extension type WEBGL_lose_context._(JSObject _) implements JSObject { external void loseContext(); external void restoreContext(); } diff --git a/lib/src/dom/webgl_multi_draw.dart b/lib/src/dom/webgl_multi_draw.dart index badf2c06..159beb69 100644 --- a/lib/src/dom/webgl_multi_draw.dart +++ b/lib/src/dom/webgl_multi_draw.dart @@ -8,11 +8,7 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_multi_draw') -@staticInterop -class WEBGL_multi_draw {} - -extension WEBGLMultiDrawExtension on WEBGL_multi_draw { +extension type WEBGL_multi_draw._(JSObject _) implements JSObject { external void multiDrawArraysWEBGL( GLenum mode, JSObject firstsList, diff --git a/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart b/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart index 0b26361b..4cd7bd4f 100644 --- a/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart +++ b/lib/src/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart @@ -8,12 +8,8 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_multi_draw_instanced_base_vertex_base_instance') -@staticInterop -class WEBGL_multi_draw_instanced_base_vertex_base_instance {} - -extension WEBGLMultiDrawInstancedBaseVertexBaseInstanceExtension - on WEBGL_multi_draw_instanced_base_vertex_base_instance { +extension type WEBGL_multi_draw_instanced_base_vertex_base_instance._( + JSObject _) implements JSObject { external void multiDrawArraysInstancedBaseInstanceWEBGL( GLenum mode, JSObject firstsList, diff --git a/lib/src/dom/webgl_provoking_vertex.dart b/lib/src/dom/webgl_provoking_vertex.dart index ea772669..003379d2 100644 --- a/lib/src/dom/webgl_provoking_vertex.dart +++ b/lib/src/dom/webgl_provoking_vertex.dart @@ -8,14 +8,9 @@ import 'dart:js_interop'; import 'webgl1.dart'; -@JS('WEBGL_provoking_vertex') -@staticInterop -class WEBGL_provoking_vertex { +extension type WEBGL_provoking_vertex._(JSObject _) implements JSObject { external static GLenum get FIRST_VERTEX_CONVENTION_WEBGL; external static GLenum get LAST_VERTEX_CONVENTION_WEBGL; external static GLenum get PROVOKING_VERTEX_WEBGL; -} - -extension WEBGLProvokingVertexExtension on WEBGL_provoking_vertex { external void provokingVertexWEBGL(GLenum provokeMode); } diff --git a/lib/src/dom/webgpu.dart b/lib/src/dom/webgpu.dart index 9d8323fa..9372546f 100644 --- a/lib/src/dom/webgpu.dart +++ b/lib/src/dom/webgpu.dart @@ -68,24 +68,13 @@ typedef GPUQueryType = String; typedef GPUCanvasAlphaMode = String; typedef GPUDeviceLostReason = String; typedef GPUErrorFilter = String; - -@JS() -@staticInterop -@anonymous -class GPUObjectDescriptorBase { +extension type GPUObjectDescriptorBase._(JSObject _) implements JSObject { external factory GPUObjectDescriptorBase({String label}); -} -extension GPUObjectDescriptorBaseExtension on GPUObjectDescriptorBase { external set label(String value); external String get label; } - -@JS('GPUSupportedLimits') -@staticInterop -class GPUSupportedLimits {} - -extension GPUSupportedLimitsExtension on GPUSupportedLimits { +extension type GPUSupportedLimits._(JSObject _) implements JSObject { external int get maxTextureDimension1D; external int get maxTextureDimension2D; external int get maxTextureDimension3D; @@ -119,81 +108,45 @@ extension GPUSupportedLimitsExtension on GPUSupportedLimits { external int get maxComputeWorkgroupSizeZ; external int get maxComputeWorkgroupsPerDimension; } - -@JS('GPUSupportedFeatures') -@staticInterop -class GPUSupportedFeatures {} - -extension GPUSupportedFeaturesExtension on GPUSupportedFeatures {} - -@JS('WGSLLanguageFeatures') -@staticInterop -class WGSLLanguageFeatures {} - -extension WGSLLanguageFeaturesExtension on WGSLLanguageFeatures {} - -@JS('GPUAdapterInfo') -@staticInterop -class GPUAdapterInfo {} - -extension GPUAdapterInfoExtension on GPUAdapterInfo { +extension type GPUSupportedFeatures._(JSObject _) implements JSObject {} +extension type WGSLLanguageFeatures._(JSObject _) implements JSObject {} +extension type GPUAdapterInfo._(JSObject _) implements JSObject { external String get vendor; external String get architecture; external String get device; external String get description; } - -@JS('GPU') -@staticInterop -class GPU {} - -extension GPUExtension on GPU { +extension type GPU._(JSObject _) implements JSObject { external JSPromise requestAdapter([GPURequestAdapterOptions options]); external GPUTextureFormat getPreferredCanvasFormat(); external WGSLLanguageFeatures get wgslLanguageFeatures; } - -@JS() -@staticInterop -@anonymous -class GPURequestAdapterOptions { +extension type GPURequestAdapterOptions._(JSObject _) implements JSObject { external factory GPURequestAdapterOptions({ GPUPowerPreference powerPreference, bool forceFallbackAdapter, }); -} -extension GPURequestAdapterOptionsExtension on GPURequestAdapterOptions { external set powerPreference(GPUPowerPreference value); external GPUPowerPreference get powerPreference; external set forceFallbackAdapter(bool value); external bool get forceFallbackAdapter; } - -@JS('GPUAdapter') -@staticInterop -class GPUAdapter {} - -extension GPUAdapterExtension on GPUAdapter { +extension type GPUAdapter._(JSObject _) implements JSObject { external JSPromise requestDevice([GPUDeviceDescriptor descriptor]); external JSPromise requestAdapterInfo([JSArray unmaskHints]); external GPUSupportedFeatures get features; external GPUSupportedLimits get limits; external bool get isFallbackAdapter; } - -@JS() -@staticInterop -@anonymous -class GPUDeviceDescriptor implements GPUObjectDescriptorBase { +extension type GPUDeviceDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUDeviceDescriptor({ JSArray requiredFeatures, JSAny requiredLimits, GPUQueueDescriptor defaultQueue, }); -} -extension GPUDeviceDescriptorExtension on GPUDeviceDescriptor { external set requiredFeatures(JSArray value); external JSArray get requiredFeatures; external set requiredLimits(JSAny value); @@ -201,12 +154,7 @@ extension GPUDeviceDescriptorExtension on GPUDeviceDescriptor { external set defaultQueue(GPUQueueDescriptor value); external GPUQueueDescriptor get defaultQueue; } - -@JS('GPUDevice') -@staticInterop -class GPUDevice implements EventTarget {} - -extension GPUDeviceExtension on GPUDevice { +extension type GPUDevice._(JSObject _) implements EventTarget, JSObject { external void destroy(); external GPUBuffer createBuffer(GPUBufferDescriptor descriptor); external GPUTexture createTexture(GPUTextureDescriptor descriptor); @@ -244,12 +192,7 @@ extension GPUDeviceExtension on GPUDevice { external set label(String value); external String get label; } - -@JS('GPUBuffer') -@staticInterop -class GPUBuffer {} - -extension GPUBufferExtension on GPUBuffer { +extension type GPUBuffer._(JSObject _) implements JSObject { external JSPromise mapAsync( GPUMapModeFlags mode, [ GPUSize64 offset, @@ -267,19 +210,14 @@ extension GPUBufferExtension on GPUBuffer { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUBufferDescriptor implements GPUObjectDescriptorBase { +extension type GPUBufferDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUBufferDescriptor({ required GPUSize64 size, required GPUBufferUsageFlags usage, bool mappedAtCreation, }); -} -extension GPUBufferDescriptorExtension on GPUBufferDescriptor { external set size(GPUSize64 value); external GPUSize64 get size; external set usage(GPUBufferUsageFlags value); @@ -287,13 +225,10 @@ extension GPUBufferDescriptorExtension on GPUBufferDescriptor { external set mappedAtCreation(bool value); external bool get mappedAtCreation; } - @JS() external $GPUBufferUsage get GPUBufferUsage; - @JS('GPUBufferUsage') -@staticInterop -abstract class $GPUBufferUsage { +extension type $GPUBufferUsage._(JSObject _) implements JSObject { external static GPUFlagsConstant get MAP_READ; external static GPUFlagsConstant get MAP_WRITE; external static GPUFlagsConstant get COPY_SRC; @@ -305,22 +240,14 @@ abstract class $GPUBufferUsage { external static GPUFlagsConstant get INDIRECT; external static GPUFlagsConstant get QUERY_RESOLVE; } - @JS() external $GPUMapMode get GPUMapMode; - @JS('GPUMapMode') -@staticInterop -abstract class $GPUMapMode { +extension type $GPUMapMode._(JSObject _) implements JSObject { external static GPUFlagsConstant get READ; external static GPUFlagsConstant get WRITE; } - -@JS('GPUTexture') -@staticInterop -class GPUTexture {} - -extension GPUTextureExtension on GPUTexture { +extension type GPUTexture._(JSObject _) implements JSObject { external GPUTextureView createView([GPUTextureViewDescriptor descriptor]); external void destroy(); external GPUIntegerCoordinateOut get width; @@ -334,11 +261,8 @@ extension GPUTextureExtension on GPUTexture { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUTextureDescriptor implements GPUObjectDescriptorBase { +extension type GPUTextureDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUTextureDescriptor({ required GPUExtent3D size, GPUIntegerCoordinate mipLevelCount, @@ -348,9 +272,7 @@ class GPUTextureDescriptor implements GPUObjectDescriptorBase { required GPUTextureUsageFlags usage, JSArray viewFormats, }); -} -extension GPUTextureDescriptorExtension on GPUTextureDescriptor { external set size(GPUExtent3D value); external GPUExtent3D get size; external set mipLevelCount(GPUIntegerCoordinate value); @@ -366,33 +288,22 @@ extension GPUTextureDescriptorExtension on GPUTextureDescriptor { external set viewFormats(JSArray value); external JSArray get viewFormats; } - @JS() external $GPUTextureUsage get GPUTextureUsage; - @JS('GPUTextureUsage') -@staticInterop -abstract class $GPUTextureUsage { +extension type $GPUTextureUsage._(JSObject _) implements JSObject { external static GPUFlagsConstant get COPY_SRC; external static GPUFlagsConstant get COPY_DST; external static GPUFlagsConstant get TEXTURE_BINDING; external static GPUFlagsConstant get STORAGE_BINDING; external static GPUFlagsConstant get RENDER_ATTACHMENT; } - -@JS('GPUTextureView') -@staticInterop -class GPUTextureView {} - -extension GPUTextureViewExtension on GPUTextureView { +extension type GPUTextureView._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUTextureViewDescriptor implements GPUObjectDescriptorBase { +extension type GPUTextureViewDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUTextureViewDescriptor({ GPUTextureFormat format, GPUTextureViewDimension dimension, @@ -402,9 +313,7 @@ class GPUTextureViewDescriptor implements GPUObjectDescriptorBase { GPUIntegerCoordinate baseArrayLayer, GPUIntegerCoordinate arrayLayerCount, }); -} -extension GPUTextureViewDescriptorExtension on GPUTextureViewDescriptor { external set format(GPUTextureFormat value); external GPUTextureFormat get format; external set dimension(GPUTextureViewDimension value); @@ -420,47 +329,28 @@ extension GPUTextureViewDescriptorExtension on GPUTextureViewDescriptor { external set arrayLayerCount(GPUIntegerCoordinate value); external GPUIntegerCoordinate get arrayLayerCount; } - -@JS('GPUExternalTexture') -@staticInterop -class GPUExternalTexture {} - -extension GPUExternalTextureExtension on GPUExternalTexture { +extension type GPUExternalTexture._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUExternalTextureDescriptor implements GPUObjectDescriptorBase { +extension type GPUExternalTextureDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUExternalTextureDescriptor({ required JSObject source, PredefinedColorSpace colorSpace, }); -} -extension GPUExternalTextureDescriptorExtension - on GPUExternalTextureDescriptor { external set source(JSObject value); external JSObject get source; external set colorSpace(PredefinedColorSpace value); external PredefinedColorSpace get colorSpace; } - -@JS('GPUSampler') -@staticInterop -class GPUSampler {} - -extension GPUSamplerExtension on GPUSampler { +extension type GPUSampler._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUSamplerDescriptor implements GPUObjectDescriptorBase { +extension type GPUSamplerDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUSamplerDescriptor({ GPUAddressMode addressModeU, GPUAddressMode addressModeV, @@ -473,9 +363,7 @@ class GPUSamplerDescriptor implements GPUObjectDescriptorBase { GPUCompareFunction compare, int maxAnisotropy, }); -} -extension GPUSamplerDescriptorExtension on GPUSamplerDescriptor { external set addressModeU(GPUAddressMode value); external GPUAddressMode get addressModeU; external set addressModeV(GPUAddressMode value); @@ -497,33 +385,18 @@ extension GPUSamplerDescriptorExtension on GPUSamplerDescriptor { external set maxAnisotropy(int value); external int get maxAnisotropy; } - -@JS('GPUBindGroupLayout') -@staticInterop -class GPUBindGroupLayout {} - -extension GPUBindGroupLayoutExtension on GPUBindGroupLayout { +extension type GPUBindGroupLayout._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUBindGroupLayoutDescriptor implements GPUObjectDescriptorBase { +extension type GPUBindGroupLayoutDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUBindGroupLayoutDescriptor({required JSArray entries}); -} -extension GPUBindGroupLayoutDescriptorExtension - on GPUBindGroupLayoutDescriptor { external set entries(JSArray value); external JSArray get entries; } - -@JS() -@staticInterop -@anonymous -class GPUBindGroupLayoutEntry { +extension type GPUBindGroupLayoutEntry._(JSObject _) implements JSObject { external factory GPUBindGroupLayoutEntry({ required GPUIndex32 binding, required GPUShaderStageFlags visibility, @@ -533,9 +406,7 @@ class GPUBindGroupLayoutEntry { GPUStorageTextureBindingLayout storageTexture, GPUExternalTextureBindingLayout externalTexture, }); -} -extension GPUBindGroupLayoutEntryExtension on GPUBindGroupLayoutEntry { external set binding(GPUIndex32 value); external GPUIndex32 get binding; external set visibility(GPUShaderStageFlags value); @@ -551,30 +422,21 @@ extension GPUBindGroupLayoutEntryExtension on GPUBindGroupLayoutEntry { external set externalTexture(GPUExternalTextureBindingLayout value); external GPUExternalTextureBindingLayout get externalTexture; } - @JS() external $GPUShaderStage get GPUShaderStage; - @JS('GPUShaderStage') -@staticInterop -abstract class $GPUShaderStage { +extension type $GPUShaderStage._(JSObject _) implements JSObject { external static GPUFlagsConstant get VERTEX; external static GPUFlagsConstant get FRAGMENT; external static GPUFlagsConstant get COMPUTE; } - -@JS() -@staticInterop -@anonymous -class GPUBufferBindingLayout { +extension type GPUBufferBindingLayout._(JSObject _) implements JSObject { external factory GPUBufferBindingLayout({ GPUBufferBindingType type, bool hasDynamicOffset, GPUSize64 minBindingSize, }); -} -extension GPUBufferBindingLayoutExtension on GPUBufferBindingLayout { external set type(GPUBufferBindingType value); external GPUBufferBindingType get type; external set hasDynamicOffset(bool value); @@ -582,31 +444,19 @@ extension GPUBufferBindingLayoutExtension on GPUBufferBindingLayout { external set minBindingSize(GPUSize64 value); external GPUSize64 get minBindingSize; } - -@JS() -@staticInterop -@anonymous -class GPUSamplerBindingLayout { +extension type GPUSamplerBindingLayout._(JSObject _) implements JSObject { external factory GPUSamplerBindingLayout({GPUSamplerBindingType type}); -} -extension GPUSamplerBindingLayoutExtension on GPUSamplerBindingLayout { external set type(GPUSamplerBindingType value); external GPUSamplerBindingType get type; } - -@JS() -@staticInterop -@anonymous -class GPUTextureBindingLayout { +extension type GPUTextureBindingLayout._(JSObject _) implements JSObject { external factory GPUTextureBindingLayout({ GPUTextureSampleType sampleType, GPUTextureViewDimension viewDimension, bool multisampled, }); -} -extension GPUTextureBindingLayoutExtension on GPUTextureBindingLayout { external set sampleType(GPUTextureSampleType value); external GPUTextureSampleType get sampleType; external set viewDimension(GPUTextureViewDimension value); @@ -614,20 +464,14 @@ extension GPUTextureBindingLayoutExtension on GPUTextureBindingLayout { external set multisampled(bool value); external bool get multisampled; } - -@JS() -@staticInterop -@anonymous -class GPUStorageTextureBindingLayout { +extension type GPUStorageTextureBindingLayout._(JSObject _) + implements JSObject { external factory GPUStorageTextureBindingLayout({ GPUStorageTextureAccess access, required GPUTextureFormat format, GPUTextureViewDimension viewDimension, }); -} -extension GPUStorageTextureBindingLayoutExtension - on GPUStorageTextureBindingLayout { external set access(GPUStorageTextureAccess value); external GPUStorageTextureAccess get access; external set format(GPUTextureFormat value); @@ -635,69 +479,44 @@ extension GPUStorageTextureBindingLayoutExtension external set viewDimension(GPUTextureViewDimension value); external GPUTextureViewDimension get viewDimension; } - -@JS() -@staticInterop -@anonymous -class GPUExternalTextureBindingLayout { +extension type GPUExternalTextureBindingLayout._(JSObject _) + implements JSObject { external factory GPUExternalTextureBindingLayout(); } - -@JS('GPUBindGroup') -@staticInterop -class GPUBindGroup {} - -extension GPUBindGroupExtension on GPUBindGroup { +extension type GPUBindGroup._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUBindGroupDescriptor implements GPUObjectDescriptorBase { +extension type GPUBindGroupDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUBindGroupDescriptor({ required GPUBindGroupLayout layout, required JSArray entries, }); -} -extension GPUBindGroupDescriptorExtension on GPUBindGroupDescriptor { external set layout(GPUBindGroupLayout value); external GPUBindGroupLayout get layout; external set entries(JSArray value); external JSArray get entries; } - -@JS() -@staticInterop -@anonymous -class GPUBindGroupEntry { +extension type GPUBindGroupEntry._(JSObject _) implements JSObject { external factory GPUBindGroupEntry({ required GPUIndex32 binding, required GPUBindingResource resource, }); -} -extension GPUBindGroupEntryExtension on GPUBindGroupEntry { external set binding(GPUIndex32 value); external GPUIndex32 get binding; external set resource(GPUBindingResource value); external GPUBindingResource get resource; } - -@JS() -@staticInterop -@anonymous -class GPUBufferBinding { +extension type GPUBufferBinding._(JSObject _) implements JSObject { external factory GPUBufferBinding({ required GPUBuffer buffer, GPUSize64 offset, GPUSize64 size, }); -} -extension GPUBufferBindingExtension on GPUBufferBinding { external set buffer(GPUBuffer value); external GPUBuffer get buffer; external set offset(GPUSize64 value); @@ -705,51 +524,31 @@ extension GPUBufferBindingExtension on GPUBufferBinding { external set size(GPUSize64 value); external GPUSize64 get size; } - -@JS('GPUPipelineLayout') -@staticInterop -class GPUPipelineLayout {} - -extension GPUPipelineLayoutExtension on GPUPipelineLayout { +extension type GPUPipelineLayout._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUPipelineLayoutDescriptor implements GPUObjectDescriptorBase { +extension type GPUPipelineLayoutDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUPipelineLayoutDescriptor( {required JSArray bindGroupLayouts}); -} -extension GPUPipelineLayoutDescriptorExtension on GPUPipelineLayoutDescriptor { external set bindGroupLayouts(JSArray value); external JSArray get bindGroupLayouts; } - -@JS('GPUShaderModule') -@staticInterop -class GPUShaderModule {} - -extension GPUShaderModuleExtension on GPUShaderModule { +extension type GPUShaderModule._(JSObject _) implements JSObject { external JSPromise getCompilationInfo(); external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUShaderModuleDescriptor implements GPUObjectDescriptorBase { +extension type GPUShaderModuleDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUShaderModuleDescriptor({ required String code, JSObject sourceMap, JSAny hints, }); -} -extension GPUShaderModuleDescriptorExtension on GPUShaderModuleDescriptor { external set code(String value); external String get code; external set sourceMap(JSObject value); @@ -757,25 +556,14 @@ extension GPUShaderModuleDescriptorExtension on GPUShaderModuleDescriptor { external set hints(JSAny value); external JSAny get hints; } - -@JS() -@staticInterop -@anonymous -class GPUShaderModuleCompilationHint { +extension type GPUShaderModuleCompilationHint._(JSObject _) + implements JSObject { external factory GPUShaderModuleCompilationHint({JSAny layout}); -} -extension GPUShaderModuleCompilationHintExtension - on GPUShaderModuleCompilationHint { external set layout(JSAny value); external JSAny get layout; } - -@JS('GPUCompilationMessage') -@staticInterop -class GPUCompilationMessage {} - -extension GPUCompilationMessageExtension on GPUCompilationMessage { +extension type GPUCompilationMessage._(JSObject _) implements JSObject { external String get message; external GPUCompilationMessageType get type; external int get lineNum; @@ -783,65 +571,39 @@ extension GPUCompilationMessageExtension on GPUCompilationMessage { external int get offset; external int get length; } - -@JS('GPUCompilationInfo') -@staticInterop -class GPUCompilationInfo {} - -extension GPUCompilationInfoExtension on GPUCompilationInfo { +extension type GPUCompilationInfo._(JSObject _) implements JSObject { external JSArray get messages; } - -@JS('GPUPipelineError') -@staticInterop -class GPUPipelineError implements DOMException { +extension type GPUPipelineError._(JSObject _) + implements DOMException, JSObject { external factory GPUPipelineError( GPUPipelineErrorInit options, [ String message, ]); -} -extension GPUPipelineErrorExtension on GPUPipelineError { external GPUPipelineErrorReason get reason; } - -@JS() -@staticInterop -@anonymous -class GPUPipelineErrorInit { +extension type GPUPipelineErrorInit._(JSObject _) implements JSObject { external factory GPUPipelineErrorInit( {required GPUPipelineErrorReason reason}); -} -extension GPUPipelineErrorInitExtension on GPUPipelineErrorInit { external set reason(GPUPipelineErrorReason value); external GPUPipelineErrorReason get reason; } - -@JS() -@staticInterop -@anonymous -class GPUPipelineDescriptorBase implements GPUObjectDescriptorBase { +extension type GPUPipelineDescriptorBase._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUPipelineDescriptorBase({required JSAny layout}); -} -extension GPUPipelineDescriptorBaseExtension on GPUPipelineDescriptorBase { external set layout(JSAny value); external JSAny get layout; } - -@JS() -@staticInterop -@anonymous -class GPUProgrammableStage { +extension type GPUProgrammableStage._(JSObject _) implements JSObject { external factory GPUProgrammableStage({ required GPUShaderModule module, required String entryPoint, JSAny constants, }); -} -extension GPUProgrammableStageExtension on GPUProgrammableStage { external set module(GPUShaderModule value); external GPUShaderModule get module; external set entryPoint(String value); @@ -849,45 +611,26 @@ extension GPUProgrammableStageExtension on GPUProgrammableStage { external set constants(JSAny value); external JSAny get constants; } - -@JS('GPUComputePipeline') -@staticInterop -class GPUComputePipeline {} - -extension GPUComputePipelineExtension on GPUComputePipeline { +extension type GPUComputePipeline._(JSObject _) implements JSObject { external GPUBindGroupLayout getBindGroupLayout(int index); external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUComputePipelineDescriptor implements GPUPipelineDescriptorBase { +extension type GPUComputePipelineDescriptor._(JSObject _) + implements GPUPipelineDescriptorBase, JSObject { external factory GPUComputePipelineDescriptor( {required GPUProgrammableStage compute}); -} -extension GPUComputePipelineDescriptorExtension - on GPUComputePipelineDescriptor { external set compute(GPUProgrammableStage value); external GPUProgrammableStage get compute; } - -@JS('GPURenderPipeline') -@staticInterop -class GPURenderPipeline {} - -extension GPURenderPipelineExtension on GPURenderPipeline { +extension type GPURenderPipeline._(JSObject _) implements JSObject { external GPUBindGroupLayout getBindGroupLayout(int index); external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPURenderPipelineDescriptor implements GPUPipelineDescriptorBase { +extension type GPURenderPipelineDescriptor._(JSObject _) + implements GPUPipelineDescriptorBase, JSObject { external factory GPURenderPipelineDescriptor({ required GPUVertexState vertex, GPUPrimitiveState primitive, @@ -895,9 +638,7 @@ class GPURenderPipelineDescriptor implements GPUPipelineDescriptorBase { GPUMultisampleState multisample, GPUFragmentState fragment, }); -} -extension GPURenderPipelineDescriptorExtension on GPURenderPipelineDescriptor { external set vertex(GPUVertexState value); external GPUVertexState get vertex; external set primitive(GPUPrimitiveState value); @@ -909,11 +650,7 @@ extension GPURenderPipelineDescriptorExtension on GPURenderPipelineDescriptor { external set fragment(GPUFragmentState value); external GPUFragmentState get fragment; } - -@JS() -@staticInterop -@anonymous -class GPUPrimitiveState { +extension type GPUPrimitiveState._(JSObject _) implements JSObject { external factory GPUPrimitiveState({ GPUPrimitiveTopology topology, GPUIndexFormat stripIndexFormat, @@ -921,9 +658,7 @@ class GPUPrimitiveState { GPUCullMode cullMode, bool unclippedDepth, }); -} -extension GPUPrimitiveStateExtension on GPUPrimitiveState { external set topology(GPUPrimitiveTopology value); external GPUPrimitiveTopology get topology; external set stripIndexFormat(GPUIndexFormat value); @@ -935,19 +670,13 @@ extension GPUPrimitiveStateExtension on GPUPrimitiveState { external set unclippedDepth(bool value); external bool get unclippedDepth; } - -@JS() -@staticInterop -@anonymous -class GPUMultisampleState { +extension type GPUMultisampleState._(JSObject _) implements JSObject { external factory GPUMultisampleState({ GPUSize32 count, GPUSampleMask mask, bool alphaToCoverageEnabled, }); -} -extension GPUMultisampleStateExtension on GPUMultisampleState { external set count(GPUSize32 value); external GPUSize32 get count; external set mask(GPUSampleMask value); @@ -955,31 +684,20 @@ extension GPUMultisampleStateExtension on GPUMultisampleState { external set alphaToCoverageEnabled(bool value); external bool get alphaToCoverageEnabled; } - -@JS() -@staticInterop -@anonymous -class GPUFragmentState implements GPUProgrammableStage { +extension type GPUFragmentState._(JSObject _) + implements GPUProgrammableStage, JSObject { external factory GPUFragmentState({required JSArray targets}); -} -extension GPUFragmentStateExtension on GPUFragmentState { external set targets(JSArray value); external JSArray get targets; } - -@JS() -@staticInterop -@anonymous -class GPUColorTargetState { +extension type GPUColorTargetState._(JSObject _) implements JSObject { external factory GPUColorTargetState({ required GPUTextureFormat format, GPUBlendState blend, GPUColorWriteFlags writeMask, }); -} -extension GPUColorTargetStateExtension on GPUColorTargetState { external set format(GPUTextureFormat value); external GPUTextureFormat get format; external set blend(GPUBlendState value); @@ -987,49 +705,34 @@ extension GPUColorTargetStateExtension on GPUColorTargetState { external set writeMask(GPUColorWriteFlags value); external GPUColorWriteFlags get writeMask; } - -@JS() -@staticInterop -@anonymous -class GPUBlendState { +extension type GPUBlendState._(JSObject _) implements JSObject { external factory GPUBlendState({ required GPUBlendComponent color, required GPUBlendComponent alpha, }); -} -extension GPUBlendStateExtension on GPUBlendState { external set color(GPUBlendComponent value); external GPUBlendComponent get color; external set alpha(GPUBlendComponent value); external GPUBlendComponent get alpha; } - @JS() external $GPUColorWrite get GPUColorWrite; - @JS('GPUColorWrite') -@staticInterop -abstract class $GPUColorWrite { +extension type $GPUColorWrite._(JSObject _) implements JSObject { external static GPUFlagsConstant get RED; external static GPUFlagsConstant get GREEN; external static GPUFlagsConstant get BLUE; external static GPUFlagsConstant get ALPHA; external static GPUFlagsConstant get ALL; } - -@JS() -@staticInterop -@anonymous -class GPUBlendComponent { +extension type GPUBlendComponent._(JSObject _) implements JSObject { external factory GPUBlendComponent({ GPUBlendOperation operation, GPUBlendFactor srcFactor, GPUBlendFactor dstFactor, }); -} -extension GPUBlendComponentExtension on GPUBlendComponent { external set operation(GPUBlendOperation value); external GPUBlendOperation get operation; external set srcFactor(GPUBlendFactor value); @@ -1037,11 +740,7 @@ extension GPUBlendComponentExtension on GPUBlendComponent { external set dstFactor(GPUBlendFactor value); external GPUBlendFactor get dstFactor; } - -@JS() -@staticInterop -@anonymous -class GPUDepthStencilState { +extension type GPUDepthStencilState._(JSObject _) implements JSObject { external factory GPUDepthStencilState({ required GPUTextureFormat format, required bool depthWriteEnabled, @@ -1054,9 +753,7 @@ class GPUDepthStencilState { num depthBiasSlopeScale, num depthBiasClamp, }); -} -extension GPUDepthStencilStateExtension on GPUDepthStencilState { external set format(GPUTextureFormat value); external GPUTextureFormat get format; external set depthWriteEnabled(bool value); @@ -1078,20 +775,14 @@ extension GPUDepthStencilStateExtension on GPUDepthStencilState { external set depthBiasClamp(num value); external num get depthBiasClamp; } - -@JS() -@staticInterop -@anonymous -class GPUStencilFaceState { +extension type GPUStencilFaceState._(JSObject _) implements JSObject { external factory GPUStencilFaceState({ GPUCompareFunction compare, GPUStencilOperation failOp, GPUStencilOperation depthFailOp, GPUStencilOperation passOp, }); -} -extension GPUStencilFaceStateExtension on GPUStencilFaceState { external set compare(GPUCompareFunction value); external GPUCompareFunction get compare; external set failOp(GPUStencilOperation value); @@ -1101,31 +792,20 @@ extension GPUStencilFaceStateExtension on GPUStencilFaceState { external set passOp(GPUStencilOperation value); external GPUStencilOperation get passOp; } - -@JS() -@staticInterop -@anonymous -class GPUVertexState implements GPUProgrammableStage { +extension type GPUVertexState._(JSObject _) + implements GPUProgrammableStage, JSObject { external factory GPUVertexState({JSArray buffers}); -} -extension GPUVertexStateExtension on GPUVertexState { external set buffers(JSArray value); external JSArray get buffers; } - -@JS() -@staticInterop -@anonymous -class GPUVertexBufferLayout { +extension type GPUVertexBufferLayout._(JSObject _) implements JSObject { external factory GPUVertexBufferLayout({ required GPUSize64 arrayStride, GPUVertexStepMode stepMode, required JSArray attributes, }); -} -extension GPUVertexBufferLayoutExtension on GPUVertexBufferLayout { external set arrayStride(GPUSize64 value); external GPUSize64 get arrayStride; external set stepMode(GPUVertexStepMode value); @@ -1133,19 +813,13 @@ extension GPUVertexBufferLayoutExtension on GPUVertexBufferLayout { external set attributes(JSArray value); external JSArray get attributes; } - -@JS() -@staticInterop -@anonymous -class GPUVertexAttribute { +extension type GPUVertexAttribute._(JSObject _) implements JSObject { external factory GPUVertexAttribute({ required GPUVertexFormat format, required GPUSize64 offset, required GPUIndex32 shaderLocation, }); -} -extension GPUVertexAttributeExtension on GPUVertexAttribute { external set format(GPUVertexFormat value); external GPUVertexFormat get format; external set offset(GPUSize64 value); @@ -1153,19 +827,13 @@ extension GPUVertexAttributeExtension on GPUVertexAttribute { external set shaderLocation(GPUIndex32 value); external GPUIndex32 get shaderLocation; } - -@JS() -@staticInterop -@anonymous -class GPUImageDataLayout { +extension type GPUImageDataLayout._(JSObject _) implements JSObject { external factory GPUImageDataLayout({ GPUSize64 offset, GPUSize32 bytesPerRow, GPUSize32 rowsPerImage, }); -} -extension GPUImageDataLayoutExtension on GPUImageDataLayout { external set offset(GPUSize64 value); external GPUSize64 get offset; external set bytesPerRow(GPUSize32 value); @@ -1173,32 +841,21 @@ extension GPUImageDataLayoutExtension on GPUImageDataLayout { external set rowsPerImage(GPUSize32 value); external GPUSize32 get rowsPerImage; } - -@JS() -@staticInterop -@anonymous -class GPUImageCopyBuffer implements GPUImageDataLayout { +extension type GPUImageCopyBuffer._(JSObject _) + implements GPUImageDataLayout, JSObject { external factory GPUImageCopyBuffer({required GPUBuffer buffer}); -} -extension GPUImageCopyBufferExtension on GPUImageCopyBuffer { external set buffer(GPUBuffer value); external GPUBuffer get buffer; } - -@JS() -@staticInterop -@anonymous -class GPUImageCopyTexture { +extension type GPUImageCopyTexture._(JSObject _) implements JSObject { external factory GPUImageCopyTexture({ required GPUTexture texture, GPUIntegerCoordinate mipLevel, GPUOrigin3D origin, GPUTextureAspect aspect, }); -} -extension GPUImageCopyTextureExtension on GPUImageCopyTexture { external set texture(GPUTexture value); external GPUTexture get texture; external set mipLevel(GPUIntegerCoordinate value); @@ -1208,36 +865,25 @@ extension GPUImageCopyTextureExtension on GPUImageCopyTexture { external set aspect(GPUTextureAspect value); external GPUTextureAspect get aspect; } - -@JS() -@staticInterop -@anonymous -class GPUImageCopyTextureTagged implements GPUImageCopyTexture { +extension type GPUImageCopyTextureTagged._(JSObject _) + implements GPUImageCopyTexture, JSObject { external factory GPUImageCopyTextureTagged({ PredefinedColorSpace colorSpace, bool premultipliedAlpha, }); -} -extension GPUImageCopyTextureTaggedExtension on GPUImageCopyTextureTagged { external set colorSpace(PredefinedColorSpace value); external PredefinedColorSpace get colorSpace; external set premultipliedAlpha(bool value); external bool get premultipliedAlpha; } - -@JS() -@staticInterop -@anonymous -class GPUImageCopyExternalImage { +extension type GPUImageCopyExternalImage._(JSObject _) implements JSObject { external factory GPUImageCopyExternalImage({ required GPUImageCopyExternalImageSource source, GPUOrigin2D origin, bool flipY, }); -} -extension GPUImageCopyExternalImageExtension on GPUImageCopyExternalImage { external set source(GPUImageCopyExternalImageSource value); external GPUImageCopyExternalImageSource get source; external set origin(GPUOrigin2D value); @@ -1245,28 +891,15 @@ extension GPUImageCopyExternalImageExtension on GPUImageCopyExternalImage { external set flipY(bool value); external bool get flipY; } - -@JS('GPUCommandBuffer') -@staticInterop -class GPUCommandBuffer {} - -extension GPUCommandBufferExtension on GPUCommandBuffer { +extension type GPUCommandBuffer._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUCommandBufferDescriptor implements GPUObjectDescriptorBase { +extension type GPUCommandBufferDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUCommandBufferDescriptor(); } - -@JS('GPUCommandEncoder') -@staticInterop -class GPUCommandEncoder {} - -extension GPUCommandEncoderExtension on GPUCommandEncoder { +extension type GPUCommandEncoder._(JSObject _) implements JSObject { external GPURenderPassEncoder beginRenderPass( GPURenderPassDescriptor descriptor); external GPUComputePassEncoder beginComputePass( @@ -1316,19 +949,11 @@ extension GPUCommandEncoderExtension on GPUCommandEncoder { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUCommandEncoderDescriptor implements GPUObjectDescriptorBase { +extension type GPUCommandEncoderDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUCommandEncoderDescriptor(); } - -@JS('GPUComputePassEncoder') -@staticInterop -class GPUComputePassEncoder {} - -extension GPUComputePassEncoderExtension on GPUComputePassEncoder { +extension type GPUComputePassEncoder._(JSObject _) implements JSObject { external void setPipeline(GPUComputePipeline pipeline); external void dispatchWorkgroups( GPUSize32 workgroupCountX, [ @@ -1353,20 +978,13 @@ extension GPUComputePassEncoderExtension on GPUComputePassEncoder { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUComputePassTimestampWrites { +extension type GPUComputePassTimestampWrites._(JSObject _) implements JSObject { external factory GPUComputePassTimestampWrites({ required GPUQuerySet querySet, GPUSize32 beginningOfPassWriteIndex, GPUSize32 endOfPassWriteIndex, }); -} -extension GPUComputePassTimestampWritesExtension - on GPUComputePassTimestampWrites { external set querySet(GPUQuerySet value); external GPUQuerySet get querySet; external set beginningOfPassWriteIndex(GPUSize32 value); @@ -1374,25 +992,15 @@ extension GPUComputePassTimestampWritesExtension external set endOfPassWriteIndex(GPUSize32 value); external GPUSize32 get endOfPassWriteIndex; } - -@JS() -@staticInterop -@anonymous -class GPUComputePassDescriptor implements GPUObjectDescriptorBase { +extension type GPUComputePassDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUComputePassDescriptor( {GPUComputePassTimestampWrites timestampWrites}); -} -extension GPUComputePassDescriptorExtension on GPUComputePassDescriptor { external set timestampWrites(GPUComputePassTimestampWrites value); external GPUComputePassTimestampWrites get timestampWrites; } - -@JS('GPURenderPassEncoder') -@staticInterop -class GPURenderPassEncoder {} - -extension GPURenderPassEncoderExtension on GPURenderPassEncoder { +extension type GPURenderPassEncoder._(JSObject _) implements JSObject { external void setViewport( num x, num y, @@ -1460,20 +1068,13 @@ extension GPURenderPassEncoderExtension on GPURenderPassEncoder { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPURenderPassTimestampWrites { +extension type GPURenderPassTimestampWrites._(JSObject _) implements JSObject { external factory GPURenderPassTimestampWrites({ required GPUQuerySet querySet, GPUSize32 beginningOfPassWriteIndex, GPUSize32 endOfPassWriteIndex, }); -} -extension GPURenderPassTimestampWritesExtension - on GPURenderPassTimestampWrites { external set querySet(GPUQuerySet value); external GPUQuerySet get querySet; external set beginningOfPassWriteIndex(GPUSize32 value); @@ -1481,11 +1082,8 @@ extension GPURenderPassTimestampWritesExtension external set endOfPassWriteIndex(GPUSize32 value); external GPUSize32 get endOfPassWriteIndex; } - -@JS() -@staticInterop -@anonymous -class GPURenderPassDescriptor implements GPUObjectDescriptorBase { +extension type GPURenderPassDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPURenderPassDescriptor({ required JSArray colorAttachments, GPURenderPassDepthStencilAttachment depthStencilAttachment, @@ -1493,9 +1091,7 @@ class GPURenderPassDescriptor implements GPUObjectDescriptorBase { GPURenderPassTimestampWrites timestampWrites, GPUSize64 maxDrawCount, }); -} -extension GPURenderPassDescriptorExtension on GPURenderPassDescriptor { external set colorAttachments(JSArray value); external JSArray get colorAttachments; external set depthStencilAttachment( @@ -1508,11 +1104,7 @@ extension GPURenderPassDescriptorExtension on GPURenderPassDescriptor { external set maxDrawCount(GPUSize64 value); external GPUSize64 get maxDrawCount; } - -@JS() -@staticInterop -@anonymous -class GPURenderPassColorAttachment { +extension type GPURenderPassColorAttachment._(JSObject _) implements JSObject { external factory GPURenderPassColorAttachment({ required GPUTextureView view, GPUTextureView resolveTarget, @@ -1520,10 +1112,7 @@ class GPURenderPassColorAttachment { required GPULoadOp loadOp, required GPUStoreOp storeOp, }); -} -extension GPURenderPassColorAttachmentExtension - on GPURenderPassColorAttachment { external set view(GPUTextureView value); external GPUTextureView get view; external set resolveTarget(GPUTextureView value); @@ -1535,11 +1124,8 @@ extension GPURenderPassColorAttachmentExtension external set storeOp(GPUStoreOp value); external GPUStoreOp get storeOp; } - -@JS() -@staticInterop -@anonymous -class GPURenderPassDepthStencilAttachment { +extension type GPURenderPassDepthStencilAttachment._(JSObject _) + implements JSObject { external factory GPURenderPassDepthStencilAttachment({ required GPUTextureView view, num depthClearValue, @@ -1551,10 +1137,7 @@ class GPURenderPassDepthStencilAttachment { GPUStoreOp stencilStoreOp, bool stencilReadOnly, }); -} -extension GPURenderPassDepthStencilAttachmentExtension - on GPURenderPassDepthStencilAttachment { external set view(GPUTextureView value); external GPUTextureView get view; external set depthClearValue(num value); @@ -1574,19 +1157,14 @@ extension GPURenderPassDepthStencilAttachmentExtension external set stencilReadOnly(bool value); external bool get stencilReadOnly; } - -@JS() -@staticInterop -@anonymous -class GPURenderPassLayout implements GPUObjectDescriptorBase { +extension type GPURenderPassLayout._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPURenderPassLayout({ required JSArray colorFormats, GPUTextureFormat depthStencilFormat, GPUSize32 sampleCount, }); -} -extension GPURenderPassLayoutExtension on GPURenderPassLayout { external set colorFormats(JSArray value); external JSArray get colorFormats; external set depthStencilFormat(GPUTextureFormat value); @@ -1594,28 +1172,15 @@ extension GPURenderPassLayoutExtension on GPURenderPassLayout { external set sampleCount(GPUSize32 value); external GPUSize32 get sampleCount; } - -@JS('GPURenderBundle') -@staticInterop -class GPURenderBundle {} - -extension GPURenderBundleExtension on GPURenderBundle { +extension type GPURenderBundle._(JSObject _) implements JSObject { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPURenderBundleDescriptor implements GPUObjectDescriptorBase { +extension type GPURenderBundleDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPURenderBundleDescriptor(); } - -@JS('GPURenderBundleEncoder') -@staticInterop -class GPURenderBundleEncoder {} - -extension GPURenderBundleEncoderExtension on GPURenderBundleEncoder { +extension type GPURenderBundleEncoder._(JSObject _) implements JSObject { external GPURenderBundle finish([GPURenderBundleDescriptor descriptor]); external void pushDebugGroup(String groupLabel); external void popDebugGroup(); @@ -1664,37 +1229,23 @@ extension GPURenderBundleEncoderExtension on GPURenderBundleEncoder { external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPURenderBundleEncoderDescriptor implements GPURenderPassLayout { +extension type GPURenderBundleEncoderDescriptor._(JSObject _) + implements GPURenderPassLayout, JSObject { external factory GPURenderBundleEncoderDescriptor({ bool depthReadOnly, bool stencilReadOnly, }); -} -extension GPURenderBundleEncoderDescriptorExtension - on GPURenderBundleEncoderDescriptor { external set depthReadOnly(bool value); external bool get depthReadOnly; external set stencilReadOnly(bool value); external bool get stencilReadOnly; } - -@JS() -@staticInterop -@anonymous -class GPUQueueDescriptor implements GPUObjectDescriptorBase { +extension type GPUQueueDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUQueueDescriptor(); } - -@JS('GPUQueue') -@staticInterop -class GPUQueue {} - -extension GPUQueueExtension on GPUQueue { +extension type GPUQueue._(JSObject _) implements JSObject { external void submit(JSArray commandBuffers); external JSPromise onSubmittedWorkDone(); external void writeBuffer( @@ -1718,51 +1269,32 @@ extension GPUQueueExtension on GPUQueue { external set label(String value); external String get label; } - -@JS('GPUQuerySet') -@staticInterop -class GPUQuerySet {} - -extension GPUQuerySetExtension on GPUQuerySet { +extension type GPUQuerySet._(JSObject _) implements JSObject { external void destroy(); external GPUQueryType get type; external GPUSize32Out get count; external set label(String value); external String get label; } - -@JS() -@staticInterop -@anonymous -class GPUQuerySetDescriptor implements GPUObjectDescriptorBase { +extension type GPUQuerySetDescriptor._(JSObject _) + implements GPUObjectDescriptorBase, JSObject { external factory GPUQuerySetDescriptor({ required GPUQueryType type, required GPUSize32 count, }); -} -extension GPUQuerySetDescriptorExtension on GPUQuerySetDescriptor { external set type(GPUQueryType value); external GPUQueryType get type; external set count(GPUSize32 value); external GPUSize32 get count; } - -@JS('GPUCanvasContext') -@staticInterop -class GPUCanvasContext {} - -extension GPUCanvasContextExtension on GPUCanvasContext { +extension type GPUCanvasContext._(JSObject _) implements JSObject { external void configure(GPUCanvasConfiguration configuration); external void unconfigure(); external GPUTexture getCurrentTexture(); external JSObject get canvas; } - -@JS() -@staticInterop -@anonymous -class GPUCanvasConfiguration { +extension type GPUCanvasConfiguration._(JSObject _) implements JSObject { external factory GPUCanvasConfiguration({ required GPUDevice device, required GPUTextureFormat format, @@ -1771,9 +1303,7 @@ class GPUCanvasConfiguration { PredefinedColorSpace colorSpace, GPUCanvasAlphaMode alphaMode, }); -} -extension GPUCanvasConfigurationExtension on GPUCanvasConfiguration { external set device(GPUDevice value); external GPUDevice get device; external set format(GPUTextureFormat value); @@ -1787,80 +1317,46 @@ extension GPUCanvasConfigurationExtension on GPUCanvasConfiguration { external set alphaMode(GPUCanvasAlphaMode value); external GPUCanvasAlphaMode get alphaMode; } - -@JS('GPUDeviceLostInfo') -@staticInterop -class GPUDeviceLostInfo {} - -extension GPUDeviceLostInfoExtension on GPUDeviceLostInfo { +extension type GPUDeviceLostInfo._(JSObject _) implements JSObject { external GPUDeviceLostReason get reason; external String get message; } - -@JS('GPUError') -@staticInterop -class GPUError {} - -extension GPUErrorExtension on GPUError { +extension type GPUError._(JSObject _) implements JSObject { external String get message; } - -@JS('GPUValidationError') -@staticInterop -class GPUValidationError implements GPUError { +extension type GPUValidationError._(JSObject _) implements GPUError, JSObject { external factory GPUValidationError(String message); } - -@JS('GPUOutOfMemoryError') -@staticInterop -class GPUOutOfMemoryError implements GPUError { +extension type GPUOutOfMemoryError._(JSObject _) implements GPUError, JSObject { external factory GPUOutOfMemoryError(String message); } - -@JS('GPUInternalError') -@staticInterop -class GPUInternalError implements GPUError { +extension type GPUInternalError._(JSObject _) implements GPUError, JSObject { external factory GPUInternalError(String message); } - -@JS('GPUUncapturedErrorEvent') -@staticInterop -class GPUUncapturedErrorEvent implements Event { +extension type GPUUncapturedErrorEvent._(JSObject _) + implements Event, JSObject { external factory GPUUncapturedErrorEvent( String type, GPUUncapturedErrorEventInit gpuUncapturedErrorEventInitDict, ); -} -extension GPUUncapturedErrorEventExtension on GPUUncapturedErrorEvent { external GPUError get error; } - -@JS() -@staticInterop -@anonymous -class GPUUncapturedErrorEventInit implements EventInit { +extension type GPUUncapturedErrorEventInit._(JSObject _) + implements EventInit, JSObject { external factory GPUUncapturedErrorEventInit({required GPUError error}); -} -extension GPUUncapturedErrorEventInitExtension on GPUUncapturedErrorEventInit { external set error(GPUError value); external GPUError get error; } - -@JS() -@staticInterop -@anonymous -class GPUColorDict { +extension type GPUColorDict._(JSObject _) implements JSObject { external factory GPUColorDict({ required num r, required num g, required num b, required num a, }); -} -extension GPUColorDictExtension on GPUColorDict { external set r(num value); external num get r; external set g(num value); @@ -1870,36 +1366,24 @@ extension GPUColorDictExtension on GPUColorDict { external set a(num value); external num get a; } - -@JS() -@staticInterop -@anonymous -class GPUOrigin2DDict { +extension type GPUOrigin2DDict._(JSObject _) implements JSObject { external factory GPUOrigin2DDict({ GPUIntegerCoordinate x, GPUIntegerCoordinate y, }); -} -extension GPUOrigin2DDictExtension on GPUOrigin2DDict { external set x(GPUIntegerCoordinate value); external GPUIntegerCoordinate get x; external set y(GPUIntegerCoordinate value); external GPUIntegerCoordinate get y; } - -@JS() -@staticInterop -@anonymous -class GPUOrigin3DDict { +extension type GPUOrigin3DDict._(JSObject _) implements JSObject { external factory GPUOrigin3DDict({ GPUIntegerCoordinate x, GPUIntegerCoordinate y, GPUIntegerCoordinate z, }); -} -extension GPUOrigin3DDictExtension on GPUOrigin3DDict { external set x(GPUIntegerCoordinate value); external GPUIntegerCoordinate get x; external set y(GPUIntegerCoordinate value); @@ -1907,19 +1391,13 @@ extension GPUOrigin3DDictExtension on GPUOrigin3DDict { external set z(GPUIntegerCoordinate value); external GPUIntegerCoordinate get z; } - -@JS() -@staticInterop -@anonymous -class GPUExtent3DDict { +extension type GPUExtent3DDict._(JSObject _) implements JSObject { external factory GPUExtent3DDict({ required GPUIntegerCoordinate width, GPUIntegerCoordinate height, GPUIntegerCoordinate depthOrArrayLayers, }); -} -extension GPUExtent3DDictExtension on GPUExtent3DDict { external set width(GPUIntegerCoordinate value); external GPUIntegerCoordinate get width; external set height(GPUIntegerCoordinate value); diff --git a/lib/src/dom/webhid.dart b/lib/src/dom/webhid.dart index 73819f35..aab93868 100644 --- a/lib/src/dom/webhid.dart +++ b/lib/src/dom/webhid.dart @@ -11,12 +11,7 @@ import 'html.dart'; import 'webidl.dart'; typedef HIDUnitSystem = String; - -@JS('HID') -@staticInterop -class HID implements EventTarget {} - -extension HIDExtension on HID { +extension type HID._(JSObject _) implements EventTarget, JSObject { external JSPromise getDevices(); external JSPromise requestDevice(HIDDeviceRequestOptions options); external set onconnect(EventHandler value); @@ -24,37 +19,25 @@ extension HIDExtension on HID { external set ondisconnect(EventHandler value); external EventHandler get ondisconnect; } - -@JS() -@staticInterop -@anonymous -class HIDDeviceRequestOptions { +extension type HIDDeviceRequestOptions._(JSObject _) implements JSObject { external factory HIDDeviceRequestOptions({ required JSArray filters, JSArray exclusionFilters, }); -} -extension HIDDeviceRequestOptionsExtension on HIDDeviceRequestOptions { external set filters(JSArray value); external JSArray get filters; external set exclusionFilters(JSArray value); external JSArray get exclusionFilters; } - -@JS() -@staticInterop -@anonymous -class HIDDeviceFilter { +extension type HIDDeviceFilter._(JSObject _) implements JSObject { external factory HIDDeviceFilter({ int vendorId, int productId, int usagePage, int usage, }); -} -extension HIDDeviceFilterExtension on HIDDeviceFilter { external set vendorId(int value); external int get vendorId; external set productId(int value); @@ -64,12 +47,7 @@ extension HIDDeviceFilterExtension on HIDDeviceFilter { external set usage(int value); external int get usage; } - -@JS('HIDDevice') -@staticInterop -class HIDDevice implements EventTarget {} - -extension HIDDeviceExtension on HIDDevice { +extension type HIDDevice._(JSObject _) implements EventTarget, JSObject { external JSPromise open(); external JSPromise close(); external JSPromise forget(); @@ -90,59 +68,39 @@ extension HIDDeviceExtension on HIDDevice { external String get productName; external JSArray get collections; } - -@JS('HIDConnectionEvent') -@staticInterop -class HIDConnectionEvent implements Event { +extension type HIDConnectionEvent._(JSObject _) implements Event, JSObject { external factory HIDConnectionEvent( String type, HIDConnectionEventInit eventInitDict, ); -} -extension HIDConnectionEventExtension on HIDConnectionEvent { external HIDDevice get device; } - -@JS() -@staticInterop -@anonymous -class HIDConnectionEventInit implements EventInit { +extension type HIDConnectionEventInit._(JSObject _) + implements EventInit, JSObject { external factory HIDConnectionEventInit({required HIDDevice device}); -} -extension HIDConnectionEventInitExtension on HIDConnectionEventInit { external set device(HIDDevice value); external HIDDevice get device; } - -@JS('HIDInputReportEvent') -@staticInterop -class HIDInputReportEvent implements Event { +extension type HIDInputReportEvent._(JSObject _) implements Event, JSObject { external factory HIDInputReportEvent( String type, HIDInputReportEventInit eventInitDict, ); -} -extension HIDInputReportEventExtension on HIDInputReportEvent { external HIDDevice get device; external int get reportId; external JSDataView get data; } - -@JS() -@staticInterop -@anonymous -class HIDInputReportEventInit implements EventInit { +extension type HIDInputReportEventInit._(JSObject _) + implements EventInit, JSObject { external factory HIDInputReportEventInit({ required HIDDevice device, required int reportId, required JSDataView data, }); -} -extension HIDInputReportEventInitExtension on HIDInputReportEventInit { external set device(HIDDevice value); external HIDDevice get device; external set reportId(int value); @@ -150,11 +108,7 @@ extension HIDInputReportEventInitExtension on HIDInputReportEventInit { external set data(JSDataView value); external JSDataView get data; } - -@JS() -@staticInterop -@anonymous -class HIDCollectionInfo { +extension type HIDCollectionInfo._(JSObject _) implements JSObject { external factory HIDCollectionInfo({ int usagePage, int usage, @@ -164,9 +118,7 @@ class HIDCollectionInfo { JSArray outputReports, JSArray featureReports, }); -} -extension HIDCollectionInfoExtension on HIDCollectionInfo { external set usagePage(int value); external int get usagePage; external set usage(int value); @@ -182,28 +134,18 @@ extension HIDCollectionInfoExtension on HIDCollectionInfo { external set featureReports(JSArray value); external JSArray get featureReports; } - -@JS() -@staticInterop -@anonymous -class HIDReportInfo { +extension type HIDReportInfo._(JSObject _) implements JSObject { external factory HIDReportInfo({ int reportId, JSArray items, }); -} -extension HIDReportInfoExtension on HIDReportInfo { external set reportId(int value); external int get reportId; external set items(JSArray value); external JSArray get items; } - -@JS() -@staticInterop -@anonymous -class HIDReportItem { +extension type HIDReportItem._(JSObject _) implements JSObject { external factory HIDReportItem({ bool isAbsolute, bool isArray, @@ -234,9 +176,7 @@ class HIDReportItem { int physicalMaximum, JSArray strings, }); -} -extension HIDReportItemExtension on HIDReportItem { external set isAbsolute(bool value); external bool get isAbsolute; external set isArray(bool value); diff --git a/lib/src/dom/webidl.dart b/lib/src/dom/webidl.dart index 58c6091a..2496c4e9 100644 --- a/lib/src/dom/webidl.dart +++ b/lib/src/dom/webidl.dart @@ -10,10 +10,7 @@ typedef ArrayBufferView = JSObject; typedef BufferSource = JSObject; typedef AllowSharedBufferSource = JSObject; typedef VoidFunction = JSFunction; - -@JS('DOMException') -@staticInterop -class DOMException { +extension type DOMException._(JSObject _) implements JSObject { external factory DOMException([ String message, String name, @@ -44,9 +41,6 @@ class DOMException { external static int get TIMEOUT_ERR; external static int get INVALID_NODE_TYPE_ERR; external static int get DATA_CLONE_ERR; -} - -extension DOMExceptionExtension on DOMException { external String get name; external String get message; external int get code; diff --git a/lib/src/dom/webmidi.dart b/lib/src/dom/webmidi.dart index 14722e80..e37679cc 100644 --- a/lib/src/dom/webmidi.dart +++ b/lib/src/dom/webmidi.dart @@ -14,65 +14,34 @@ import 'permissions.dart'; typedef MIDIPortType = String; typedef MIDIPortDeviceState = String; typedef MIDIPortConnectionState = String; - -@JS() -@staticInterop -@anonymous -class MidiPermissionDescriptor implements PermissionDescriptor { +extension type MidiPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory MidiPermissionDescriptor({bool sysex}); -} -extension MidiPermissionDescriptorExtension on MidiPermissionDescriptor { external set sysex(bool value); external bool get sysex; } - -@JS() -@staticInterop -@anonymous -class MIDIOptions { +extension type MIDIOptions._(JSObject _) implements JSObject { external factory MIDIOptions({ bool sysex, bool software, }); -} -extension MIDIOptionsExtension on MIDIOptions { external set sysex(bool value); external bool get sysex; external set software(bool value); external bool get software; } - -@JS('MIDIInputMap') -@staticInterop -class MIDIInputMap {} - -extension MIDIInputMapExtension on MIDIInputMap {} - -@JS('MIDIOutputMap') -@staticInterop -class MIDIOutputMap {} - -extension MIDIOutputMapExtension on MIDIOutputMap {} - -@JS('MIDIAccess') -@staticInterop -class MIDIAccess implements EventTarget {} - -extension MIDIAccessExtension on MIDIAccess { +extension type MIDIInputMap._(JSObject _) implements JSObject {} +extension type MIDIOutputMap._(JSObject _) implements JSObject {} +extension type MIDIAccess._(JSObject _) implements EventTarget, JSObject { external MIDIInputMap get inputs; external MIDIOutputMap get outputs; external set onstatechange(EventHandler value); external EventHandler get onstatechange; external bool get sysexEnabled; } - -@JS('MIDIPort') -@staticInterop -class MIDIPort implements EventTarget {} - -extension MIDIPortExtension on MIDIPort { +extension type MIDIPort._(JSObject _) implements EventTarget, JSObject { external JSPromise open(); external JSPromise close(); external String get id; @@ -85,74 +54,44 @@ extension MIDIPortExtension on MIDIPort { external set onstatechange(EventHandler value); external EventHandler get onstatechange; } - -@JS('MIDIInput') -@staticInterop -class MIDIInput implements MIDIPort {} - -extension MIDIInputExtension on MIDIInput { +extension type MIDIInput._(JSObject _) implements MIDIPort, JSObject { external set onmidimessage(EventHandler value); external EventHandler get onmidimessage; } - -@JS('MIDIOutput') -@staticInterop -class MIDIOutput implements MIDIPort {} - -extension MIDIOutputExtension on MIDIOutput { +extension type MIDIOutput._(JSObject _) implements MIDIPort, JSObject { external void send( JSArray data, [ DOMHighResTimeStamp timestamp, ]); external void clear(); } - -@JS('MIDIMessageEvent') -@staticInterop -class MIDIMessageEvent implements Event { +extension type MIDIMessageEvent._(JSObject _) implements Event, JSObject { external factory MIDIMessageEvent( String type, [ MIDIMessageEventInit eventInitDict, ]); -} -extension MIDIMessageEventExtension on MIDIMessageEvent { external JSUint8Array get data; } - -@JS() -@staticInterop -@anonymous -class MIDIMessageEventInit implements EventInit { +extension type MIDIMessageEventInit._(JSObject _) + implements EventInit, JSObject { external factory MIDIMessageEventInit({JSUint8Array data}); -} -extension MIDIMessageEventInitExtension on MIDIMessageEventInit { external set data(JSUint8Array value); external JSUint8Array get data; } - -@JS('MIDIConnectionEvent') -@staticInterop -class MIDIConnectionEvent implements Event { +extension type MIDIConnectionEvent._(JSObject _) implements Event, JSObject { external factory MIDIConnectionEvent( String type, [ MIDIConnectionEventInit eventInitDict, ]); -} -extension MIDIConnectionEventExtension on MIDIConnectionEvent { external MIDIPort get port; } - -@JS() -@staticInterop -@anonymous -class MIDIConnectionEventInit implements EventInit { +extension type MIDIConnectionEventInit._(JSObject _) + implements EventInit, JSObject { external factory MIDIConnectionEventInit({MIDIPort port}); -} -extension MIDIConnectionEventInitExtension on MIDIConnectionEventInit { external set port(MIDIPort value); external MIDIPort get port; } diff --git a/lib/src/dom/webnn.dart b/lib/src/dom/webnn.dart index 6cbf9254..d6e5e9a3 100644 --- a/lib/src/dom/webnn.dart +++ b/lib/src/dom/webnn.dart @@ -26,67 +26,36 @@ typedef MLLstmWeightLayout = String; typedef MLPaddingMode = String; typedef MLRoundingType = String; typedef MLInterpolationMode = String; - -@JS() -@staticInterop -@anonymous -class MLContextOptions { +extension type MLContextOptions._(JSObject _) implements JSObject { external factory MLContextOptions({ MLDeviceType deviceType, MLPowerPreference powerPreference, }); -} -extension MLContextOptionsExtension on MLContextOptions { external set deviceType(MLDeviceType value); external MLDeviceType get deviceType; external set powerPreference(MLPowerPreference value); external MLPowerPreference get powerPreference; } - -@JS('ML') -@staticInterop -class ML {} - -extension MLExtension on ML { +extension type ML._(JSObject _) implements JSObject { external JSPromise createContext([JSObject gpuDeviceOrOptions]); external MLContext createContextSync([JSObject gpuDeviceOrOptions]); } - -@JS('MLGraph') -@staticInterop -class MLGraph {} - -@JS() -@staticInterop -@anonymous -class MLOperandDescriptor { +extension type MLGraph._(JSObject _) implements JSObject {} +extension type MLOperandDescriptor._(JSObject _) implements JSObject { external factory MLOperandDescriptor({ required MLOperandType type, JSArray dimensions, }); -} -extension MLOperandDescriptorExtension on MLOperandDescriptor { external set type(MLOperandType value); external MLOperandType get type; external set dimensions(JSArray value); external JSArray get dimensions; } - -@JS('MLOperand') -@staticInterop -class MLOperand {} - -@JS('MLActivation') -@staticInterop -class MLActivation {} - -@JS('MLContext') -@staticInterop -class MLContext {} - -extension MLContextExtension on MLContext { +extension type MLOperand._(JSObject _) implements JSObject {} +extension type MLActivation._(JSObject _) implements JSObject {} +extension type MLContext._(JSObject _) implements JSObject { external void computeSync( MLGraph graph, MLNamedArrayBufferViews inputs, @@ -99,29 +68,18 @@ extension MLContextExtension on MLContext { ); external MLCommandEncoder createCommandEncoder(); } - -@JS() -@staticInterop -@anonymous -class MLComputeResult { +extension type MLComputeResult._(JSObject _) implements JSObject { external factory MLComputeResult({ MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs, }); -} -extension MLComputeResultExtension on MLComputeResult { external set inputs(MLNamedArrayBufferViews value); external MLNamedArrayBufferViews get inputs; external set outputs(MLNamedArrayBufferViews value); external MLNamedArrayBufferViews get outputs; } - -@JS('MLCommandEncoder') -@staticInterop -class MLCommandEncoder {} - -extension MLCommandEncoderExtension on MLCommandEncoder { +extension type MLCommandEncoder._(JSObject _) implements JSObject { external void initializeGraph(MLGraph graph); external void dispatch( MLGraph graph, @@ -130,19 +88,13 @@ extension MLCommandEncoderExtension on MLCommandEncoder { ); external GPUCommandBuffer finish([GPUCommandBufferDescriptor descriptor]); } - -@JS() -@staticInterop -@anonymous -class MLBufferResourceView { +extension type MLBufferResourceView._(JSObject _) implements JSObject { external factory MLBufferResourceView({ required GPUBuffer resource, int offset, int size, }); -} -extension MLBufferResourceViewExtension on MLBufferResourceView { external set resource(GPUBuffer value); external GPUBuffer get resource; external set offset(int value); @@ -150,14 +102,9 @@ extension MLBufferResourceViewExtension on MLBufferResourceView { external set size(int value); external int get size; } - -@JS('MLGraphBuilder') -@staticInterop -class MLGraphBuilder { +extension type MLGraphBuilder._(JSObject _) implements JSObject { external factory MLGraphBuilder(MLContext context); -} -extension MLGraphBuilderExtension on MLGraphBuilder { external MLOperand input( String name, MLOperandDescriptor descriptor, @@ -390,11 +337,7 @@ extension MLGraphBuilderExtension on MLGraphBuilder { MLTransposeOptions options, ]); } - -@JS() -@staticInterop -@anonymous -class MLBatchNormalizationOptions { +extension type MLBatchNormalizationOptions._(JSObject _) implements JSObject { external factory MLBatchNormalizationOptions({ MLOperand scale, MLOperand bias, @@ -402,9 +345,7 @@ class MLBatchNormalizationOptions { num epsilon, MLActivation activation, }); -} -extension MLBatchNormalizationOptionsExtension on MLBatchNormalizationOptions { external set scale(MLOperand value); external MLOperand get scale; external set bias(MLOperand value); @@ -416,28 +357,18 @@ extension MLBatchNormalizationOptionsExtension on MLBatchNormalizationOptions { external set activation(MLActivation value); external MLActivation get activation; } - -@JS() -@staticInterop -@anonymous -class MLClampOptions { +extension type MLClampOptions._(JSObject _) implements JSObject { external factory MLClampOptions({ num minValue, num maxValue, }); -} -extension MLClampOptionsExtension on MLClampOptions { external set minValue(num value); external num get minValue; external set maxValue(num value); external num get maxValue; } - -@JS() -@staticInterop -@anonymous -class MLConv2dOptions { +extension type MLConv2dOptions._(JSObject _) implements JSObject { external factory MLConv2dOptions({ JSArray padding, JSArray strides, @@ -449,9 +380,7 @@ class MLConv2dOptions { MLOperand bias, MLActivation activation, }); -} -extension MLConv2dOptionsExtension on MLConv2dOptions { external set padding(JSArray value); external JSArray get padding; external set strides(JSArray value); @@ -471,11 +400,7 @@ extension MLConv2dOptionsExtension on MLConv2dOptions { external set activation(MLActivation value); external MLActivation get activation; } - -@JS() -@staticInterop -@anonymous -class MLConvTranspose2dOptions { +extension type MLConvTranspose2dOptions._(JSObject _) implements JSObject { external factory MLConvTranspose2dOptions({ JSArray padding, JSArray strides, @@ -489,9 +414,7 @@ class MLConvTranspose2dOptions { MLOperand bias, MLActivation activation, }); -} -extension MLConvTranspose2dOptionsExtension on MLConvTranspose2dOptions { external set padding(JSArray value); external JSArray get padding; external set strides(JSArray value); @@ -515,23 +438,13 @@ extension MLConvTranspose2dOptionsExtension on MLConvTranspose2dOptions { external set activation(MLActivation value); external MLActivation get activation; } - -@JS() -@staticInterop -@anonymous -class MLEluOptions { +extension type MLEluOptions._(JSObject _) implements JSObject { external factory MLEluOptions({num alpha}); -} -extension MLEluOptionsExtension on MLEluOptions { external set alpha(num value); external num get alpha; } - -@JS() -@staticInterop -@anonymous -class MLGemmOptions { +extension type MLGemmOptions._(JSObject _) implements JSObject { external factory MLGemmOptions({ MLOperand c, num alpha, @@ -539,9 +452,7 @@ class MLGemmOptions { bool aTranspose, bool bTranspose, }); -} -extension MLGemmOptionsExtension on MLGemmOptions { external set c(MLOperand value); external MLOperand get c; external set alpha(num value); @@ -553,11 +464,7 @@ extension MLGemmOptionsExtension on MLGemmOptions { external set bTranspose(bool value); external bool get bTranspose; } - -@JS() -@staticInterop -@anonymous -class MLGruOptions { +extension type MLGruOptions._(JSObject _) implements JSObject { external factory MLGruOptions({ MLOperand bias, MLOperand recurrentBias, @@ -568,9 +475,7 @@ class MLGruOptions { MLGruWeightLayout layout, JSArray activations, }); -} -extension MLGruOptionsExtension on MLGruOptions { external set bias(MLOperand value); external MLOperand get bias; external set recurrentBias(MLOperand value); @@ -588,11 +493,7 @@ extension MLGruOptionsExtension on MLGruOptions { external set activations(JSArray value); external JSArray get activations; } - -@JS() -@staticInterop -@anonymous -class MLGruCellOptions { +extension type MLGruCellOptions._(JSObject _) implements JSObject { external factory MLGruCellOptions({ MLOperand bias, MLOperand recurrentBias, @@ -600,9 +501,7 @@ class MLGruCellOptions { MLGruWeightLayout layout, JSArray activations, }); -} -extension MLGruCellOptionsExtension on MLGruCellOptions { external set bias(MLOperand value); external MLOperand get bias; external set recurrentBias(MLOperand value); @@ -614,38 +513,26 @@ extension MLGruCellOptionsExtension on MLGruCellOptions { external set activations(JSArray value); external JSArray get activations; } - -@JS() -@staticInterop -@anonymous -class MLHardSigmoidOptions { +extension type MLHardSigmoidOptions._(JSObject _) implements JSObject { external factory MLHardSigmoidOptions({ num alpha, num beta, }); -} -extension MLHardSigmoidOptionsExtension on MLHardSigmoidOptions { external set alpha(num value); external num get alpha; external set beta(num value); external num get beta; } - -@JS() -@staticInterop -@anonymous -class MLInstanceNormalizationOptions { +extension type MLInstanceNormalizationOptions._(JSObject _) + implements JSObject { external factory MLInstanceNormalizationOptions({ MLOperand scale, MLOperand bias, num epsilon, MLInputOperandLayout layout, }); -} -extension MLInstanceNormalizationOptionsExtension - on MLInstanceNormalizationOptions { external set scale(MLOperand value); external MLOperand get scale; external set bias(MLOperand value); @@ -655,40 +542,24 @@ extension MLInstanceNormalizationOptionsExtension external set layout(MLInputOperandLayout value); external MLInputOperandLayout get layout; } - -@JS() -@staticInterop -@anonymous -class MLLeakyReluOptions { +extension type MLLeakyReluOptions._(JSObject _) implements JSObject { external factory MLLeakyReluOptions({num alpha}); -} -extension MLLeakyReluOptionsExtension on MLLeakyReluOptions { external set alpha(num value); external num get alpha; } - -@JS() -@staticInterop -@anonymous -class MLLinearOptions { +extension type MLLinearOptions._(JSObject _) implements JSObject { external factory MLLinearOptions({ num alpha, num beta, }); -} -extension MLLinearOptionsExtension on MLLinearOptions { external set alpha(num value); external num get alpha; external set beta(num value); external num get beta; } - -@JS() -@staticInterop -@anonymous -class MLLstmOptions { +extension type MLLstmOptions._(JSObject _) implements JSObject { external factory MLLstmOptions({ MLOperand bias, MLOperand recurrentBias, @@ -700,9 +571,7 @@ class MLLstmOptions { MLLstmWeightLayout layout, JSArray activations, }); -} -extension MLLstmOptionsExtension on MLLstmOptions { external set bias(MLOperand value); external MLOperand get bias; external set recurrentBias(MLOperand value); @@ -722,11 +591,7 @@ extension MLLstmOptionsExtension on MLLstmOptions { external set activations(JSArray value); external JSArray get activations; } - -@JS() -@staticInterop -@anonymous -class MLLstmCellOptions { +extension type MLLstmCellOptions._(JSObject _) implements JSObject { external factory MLLstmCellOptions({ MLOperand bias, MLOperand recurrentBias, @@ -734,9 +599,7 @@ class MLLstmCellOptions { MLLstmWeightLayout layout, JSArray activations, }); -} -extension MLLstmCellOptionsExtension on MLLstmCellOptions { external set bias(MLOperand value); external MLOperand get bias; external set recurrentBias(MLOperand value); @@ -748,28 +611,18 @@ extension MLLstmCellOptionsExtension on MLLstmCellOptions { external set activations(JSArray value); external JSArray get activations; } - -@JS() -@staticInterop -@anonymous -class MLPadOptions { +extension type MLPadOptions._(JSObject _) implements JSObject { external factory MLPadOptions({ MLPaddingMode mode, num value, }); -} -extension MLPadOptionsExtension on MLPadOptions { external set mode(MLPaddingMode value); external MLPaddingMode get mode; external set value(num value); external num get value; } - -@JS() -@staticInterop -@anonymous -class MLPool2dOptions { +extension type MLPool2dOptions._(JSObject _) implements JSObject { external factory MLPool2dOptions({ JSArray windowDimensions, JSArray padding, @@ -780,9 +633,7 @@ class MLPool2dOptions { MLRoundingType roundingType, JSArray outputSizes, }); -} -extension MLPool2dOptionsExtension on MLPool2dOptions { external set windowDimensions(JSArray value); external JSArray get windowDimensions; external set padding(JSArray value); @@ -800,37 +651,25 @@ extension MLPool2dOptionsExtension on MLPool2dOptions { external set outputSizes(JSArray value); external JSArray get outputSizes; } - -@JS() -@staticInterop -@anonymous -class MLReduceOptions { +extension type MLReduceOptions._(JSObject _) implements JSObject { external factory MLReduceOptions({ JSArray axes, bool keepDimensions, }); -} -extension MLReduceOptionsExtension on MLReduceOptions { external set axes(JSArray value); external JSArray get axes; external set keepDimensions(bool value); external bool get keepDimensions; } - -@JS() -@staticInterop -@anonymous -class MLResample2dOptions { +extension type MLResample2dOptions._(JSObject _) implements JSObject { external factory MLResample2dOptions({ MLInterpolationMode mode, JSArray scales, JSArray sizes, JSArray axes, }); -} -extension MLResample2dOptionsExtension on MLResample2dOptions { external set mode(MLInterpolationMode value); external MLInterpolationMode get mode; external set scales(JSArray value); @@ -840,51 +679,27 @@ extension MLResample2dOptionsExtension on MLResample2dOptions { external set axes(JSArray value); external JSArray get axes; } - -@JS() -@staticInterop -@anonymous -class MLSoftplusOptions { +extension type MLSoftplusOptions._(JSObject _) implements JSObject { external factory MLSoftplusOptions({num steepness}); -} -extension MLSoftplusOptionsExtension on MLSoftplusOptions { external set steepness(num value); external num get steepness; } - -@JS() -@staticInterop -@anonymous -class MLSplitOptions { +extension type MLSplitOptions._(JSObject _) implements JSObject { external factory MLSplitOptions({int axis}); -} -extension MLSplitOptionsExtension on MLSplitOptions { external set axis(int value); external int get axis; } - -@JS() -@staticInterop -@anonymous -class MLSqueezeOptions { +extension type MLSqueezeOptions._(JSObject _) implements JSObject { external factory MLSqueezeOptions({JSArray axes}); -} -extension MLSqueezeOptionsExtension on MLSqueezeOptions { external set axes(JSArray value); external JSArray get axes; } - -@JS() -@staticInterop -@anonymous -class MLTransposeOptions { +extension type MLTransposeOptions._(JSObject _) implements JSObject { external factory MLTransposeOptions({JSArray permutation}); -} -extension MLTransposeOptionsExtension on MLTransposeOptions { external set permutation(JSArray value); external JSArray get permutation; } diff --git a/lib/src/dom/webrtc.dart b/lib/src/dom/webrtc.dart index 175a6f5b..4c52054c 100644 --- a/lib/src/dom/webrtc.dart +++ b/lib/src/dom/webrtc.dart @@ -43,11 +43,7 @@ typedef RTCIceComponent = String; typedef RTCSctpTransportState = String; typedef RTCDataChannelState = String; typedef RTCErrorDetailType = String; - -@JS() -@staticInterop -@anonymous -class RTCConfiguration { +extension type RTCConfiguration._(JSObject _) implements JSObject { external factory RTCConfiguration({ String peerIdentity, JSArray iceServers, @@ -57,9 +53,7 @@ class RTCConfiguration { JSArray certificates, int iceCandidatePoolSize, }); -} -extension RTCConfigurationExtension on RTCConfiguration { external set peerIdentity(String value); external String get peerIdentity; external set iceServers(JSArray value); @@ -75,19 +69,13 @@ extension RTCConfigurationExtension on RTCConfiguration { external set iceCandidatePoolSize(int value); external int get iceCandidatePoolSize; } - -@JS() -@staticInterop -@anonymous -class RTCIceServer { +extension type RTCIceServer._(JSObject _) implements JSObject { external factory RTCIceServer({ required JSAny urls, String username, String credential, }); -} -extension RTCIceServerExtension on RTCIceServer { external set urls(JSAny value); external JSAny get urls; external set username(String value); @@ -95,26 +83,17 @@ extension RTCIceServerExtension on RTCIceServer { external set credential(String value); external String get credential; } - -@JS() -@staticInterop -@anonymous -class RTCOfferAnswerOptions { +extension type RTCOfferAnswerOptions._(JSObject _) implements JSObject { external factory RTCOfferAnswerOptions(); } - -@JS() -@staticInterop -@anonymous -class RTCOfferOptions implements RTCOfferAnswerOptions { +extension type RTCOfferOptions._(JSObject _) + implements RTCOfferAnswerOptions, JSObject { external factory RTCOfferOptions({ bool iceRestart, bool offerToReceiveAudio, bool offerToReceiveVideo, }); -} -extension RTCOfferOptionsExtension on RTCOfferOptions { external set iceRestart(bool value); external bool get iceRestart; external set offerToReceiveAudio(bool value); @@ -122,24 +101,16 @@ extension RTCOfferOptionsExtension on RTCOfferOptions { external set offerToReceiveVideo(bool value); external bool get offerToReceiveVideo; } - -@JS() -@staticInterop -@anonymous -class RTCAnswerOptions implements RTCOfferAnswerOptions { +extension type RTCAnswerOptions._(JSObject _) + implements RTCOfferAnswerOptions, JSObject { external factory RTCAnswerOptions(); } - -@JS('RTCPeerConnection') -@staticInterop -class RTCPeerConnection implements EventTarget { +extension type RTCPeerConnection._(JSObject _) + implements EventTarget, JSObject { external factory RTCPeerConnection([RTCConfiguration configuration]); external static JSPromise generateCertificate( AlgorithmIdentifier keygenAlgorithm); -} - -extension RTCPeerConnectionExtension on RTCPeerConnection { external void setIdentityProvider( String provider, [ RTCIdentityProviderOptions options, @@ -224,62 +195,40 @@ extension RTCPeerConnectionExtension on RTCPeerConnection { external set ondatachannel(EventHandler value); external EventHandler get ondatachannel; } - -@JS('RTCSessionDescription') -@staticInterop -class RTCSessionDescription { +extension type RTCSessionDescription._(JSObject _) implements JSObject { external factory RTCSessionDescription( RTCSessionDescriptionInit descriptionInitDict); -} -extension RTCSessionDescriptionExtension on RTCSessionDescription { external JSObject toJSON(); external RTCSdpType get type; external String get sdp; } - -@JS() -@staticInterop -@anonymous -class RTCSessionDescriptionInit { +extension type RTCSessionDescriptionInit._(JSObject _) implements JSObject { external factory RTCSessionDescriptionInit({ required RTCSdpType type, String sdp, }); -} -extension RTCSessionDescriptionInitExtension on RTCSessionDescriptionInit { external set type(RTCSdpType value); external RTCSdpType get type; external set sdp(String value); external String get sdp; } - -@JS() -@staticInterop -@anonymous -class RTCLocalSessionDescriptionInit { +extension type RTCLocalSessionDescriptionInit._(JSObject _) + implements JSObject { external factory RTCLocalSessionDescriptionInit({ RTCSdpType type, String sdp, }); -} -extension RTCLocalSessionDescriptionInitExtension - on RTCLocalSessionDescriptionInit { external set type(RTCSdpType value); external RTCSdpType get type; external set sdp(String value); external String get sdp; } - -@JS('RTCIceCandidate') -@staticInterop -class RTCIceCandidate { +extension type RTCIceCandidate._(JSObject _) implements JSObject { external factory RTCIceCandidate([RTCIceCandidateInit candidateInitDict]); -} -extension RTCIceCandidateExtension on RTCIceCandidate { external RTCIceCandidateInit toJSON(); external String get candidate; external String? get sdpMid; @@ -298,20 +247,14 @@ extension RTCIceCandidateExtension on RTCIceCandidate { external RTCIceServerTransportProtocol? get relayProtocol; external String? get url; } - -@JS() -@staticInterop -@anonymous -class RTCIceCandidateInit { +extension type RTCIceCandidateInit._(JSObject _) implements JSObject { external factory RTCIceCandidateInit({ String candidate, String? sdpMid, int? sdpMLineIndex, String? usernameFragment, }); -} -extension RTCIceCandidateInitExtension on RTCIceCandidateInit { external set candidate(String value); external String get candidate; external set sdpMid(String? value); @@ -321,61 +264,43 @@ extension RTCIceCandidateInitExtension on RTCIceCandidateInit { external set usernameFragment(String? value); external String? get usernameFragment; } - -@JS('RTCPeerConnectionIceEvent') -@staticInterop -class RTCPeerConnectionIceEvent implements Event { +extension type RTCPeerConnectionIceEvent._(JSObject _) + implements Event, JSObject { external factory RTCPeerConnectionIceEvent( String type, [ RTCPeerConnectionIceEventInit eventInitDict, ]); -} -extension RTCPeerConnectionIceEventExtension on RTCPeerConnectionIceEvent { external RTCIceCandidate? get candidate; external String? get url; } - -@JS() -@staticInterop -@anonymous -class RTCPeerConnectionIceEventInit implements EventInit { +extension type RTCPeerConnectionIceEventInit._(JSObject _) + implements EventInit, JSObject { external factory RTCPeerConnectionIceEventInit({ RTCIceCandidate? candidate, String? url, }); -} -extension RTCPeerConnectionIceEventInitExtension - on RTCPeerConnectionIceEventInit { external set candidate(RTCIceCandidate? value); external RTCIceCandidate? get candidate; external set url(String? value); external String? get url; } - -@JS('RTCPeerConnectionIceErrorEvent') -@staticInterop -class RTCPeerConnectionIceErrorEvent implements Event { +extension type RTCPeerConnectionIceErrorEvent._(JSObject _) + implements Event, JSObject { external factory RTCPeerConnectionIceErrorEvent( String type, RTCPeerConnectionIceErrorEventInit eventInitDict, ); -} -extension RTCPeerConnectionIceErrorEventExtension - on RTCPeerConnectionIceErrorEvent { external String? get address; external int? get port; external String get url; external int get errorCode; external String get errorText; } - -@JS() -@staticInterop -@anonymous -class RTCPeerConnectionIceErrorEventInit implements EventInit { +extension type RTCPeerConnectionIceErrorEventInit._(JSObject _) + implements EventInit, JSObject { external factory RTCPeerConnectionIceErrorEventInit({ String? address, int? port, @@ -383,10 +308,7 @@ class RTCPeerConnectionIceErrorEventInit implements EventInit { required int errorCode, String errorText, }); -} -extension RTCPeerConnectionIceErrorEventInitExtension - on RTCPeerConnectionIceErrorEventInit { external set address(String? value); external String? get address; external set port(int? value); @@ -398,40 +320,23 @@ extension RTCPeerConnectionIceErrorEventInitExtension external set errorText(String value); external String get errorText; } - -@JS() -@staticInterop -@anonymous -class RTCCertificateExpiration { +extension type RTCCertificateExpiration._(JSObject _) implements JSObject { external factory RTCCertificateExpiration({int expires}); -} -extension RTCCertificateExpirationExtension on RTCCertificateExpiration { external set expires(int value); external int get expires; } - -@JS('RTCCertificate') -@staticInterop -class RTCCertificate {} - -extension RTCCertificateExtension on RTCCertificate { +extension type RTCCertificate._(JSObject _) implements JSObject { external JSArray getFingerprints(); external EpochTimeStamp get expires; } - -@JS() -@staticInterop -@anonymous -class RTCRtpTransceiverInit { +extension type RTCRtpTransceiverInit._(JSObject _) implements JSObject { external factory RTCRtpTransceiverInit({ RTCRtpTransceiverDirection direction, JSArray streams, JSArray sendEncodings, }); -} -extension RTCRtpTransceiverInitExtension on RTCRtpTransceiverInit { external set direction(RTCRtpTransceiverDirection value); external RTCRtpTransceiverDirection get direction; external set streams(JSArray value); @@ -439,14 +344,8 @@ extension RTCRtpTransceiverInitExtension on RTCRtpTransceiverInit { external set sendEncodings(JSArray value); external JSArray get sendEncodings; } - -@JS('RTCRtpSender') -@staticInterop -class RTCRtpSender { +extension type RTCRtpSender._(JSObject _) implements JSObject { external static RTCRtpCapabilities? getCapabilities(String kind); -} - -extension RTCRtpSenderExtension on RTCRtpSender { external JSPromise generateKeyFrame([JSArray rids]); external JSPromise setParameters( RTCRtpSendParameters parameters, [ @@ -462,19 +361,13 @@ extension RTCRtpSenderExtension on RTCRtpSender { external RTCDtlsTransport? get transport; external RTCDTMFSender? get dtmf; } - -@JS() -@staticInterop -@anonymous -class RTCRtpParameters { +extension type RTCRtpParameters._(JSObject _) implements JSObject { external factory RTCRtpParameters({ required JSArray headerExtensions, required RTCRtcpParameters rtcp, required JSArray codecs, }); -} -extension RTCRtpParametersExtension on RTCRtpParameters { external set headerExtensions(JSArray value); external JSArray get headerExtensions; external set rtcp(RTCRtcpParameters value); @@ -482,19 +375,14 @@ extension RTCRtpParametersExtension on RTCRtpParameters { external set codecs(JSArray value); external JSArray get codecs; } - -@JS() -@staticInterop -@anonymous -class RTCRtpSendParameters implements RTCRtpParameters { +extension type RTCRtpSendParameters._(JSObject _) + implements RTCRtpParameters, JSObject { external factory RTCRtpSendParameters({ RTCDegradationPreference degradationPreference, required String transactionId, required JSArray encodings, }); -} -extension RTCRtpSendParametersExtension on RTCRtpSendParameters { external set degradationPreference(RTCDegradationPreference value); external RTCDegradationPreference get degradationPreference; external set transactionId(String value); @@ -502,30 +390,18 @@ extension RTCRtpSendParametersExtension on RTCRtpSendParameters { external set encodings(JSArray value); external JSArray get encodings; } - -@JS() -@staticInterop -@anonymous -class RTCRtpReceiveParameters implements RTCRtpParameters { +extension type RTCRtpReceiveParameters._(JSObject _) + implements RTCRtpParameters, JSObject { external factory RTCRtpReceiveParameters(); } - -@JS() -@staticInterop -@anonymous -class RTCRtpCodingParameters { +extension type RTCRtpCodingParameters._(JSObject _) implements JSObject { external factory RTCRtpCodingParameters({String rid}); -} -extension RTCRtpCodingParametersExtension on RTCRtpCodingParameters { external set rid(String value); external String get rid; } - -@JS() -@staticInterop -@anonymous -class RTCRtpEncodingParameters implements RTCRtpCodingParameters { +extension type RTCRtpEncodingParameters._(JSObject _) + implements RTCRtpCodingParameters, JSObject { external factory RTCRtpEncodingParameters({ RTCPriorityType priority, RTCPriorityType networkPriority, @@ -535,9 +411,7 @@ class RTCRtpEncodingParameters implements RTCRtpCodingParameters { num maxFramerate, num scaleResolutionDownBy, }); -} -extension RTCRtpEncodingParametersExtension on RTCRtpEncodingParameters { external set priority(RTCPriorityType value); external RTCPriorityType get priority; external set networkPriority(RTCPriorityType value); @@ -553,37 +427,25 @@ extension RTCRtpEncodingParametersExtension on RTCRtpEncodingParameters { external set scaleResolutionDownBy(num value); external num get scaleResolutionDownBy; } - -@JS() -@staticInterop -@anonymous -class RTCRtcpParameters { +extension type RTCRtcpParameters._(JSObject _) implements JSObject { external factory RTCRtcpParameters({ String cname, bool reducedSize, }); -} -extension RTCRtcpParametersExtension on RTCRtcpParameters { external set cname(String value); external String get cname; external set reducedSize(bool value); external bool get reducedSize; } - -@JS() -@staticInterop -@anonymous -class RTCRtpHeaderExtensionParameters { +extension type RTCRtpHeaderExtensionParameters._(JSObject _) + implements JSObject { external factory RTCRtpHeaderExtensionParameters({ required String uri, required int id, bool encrypted, }); -} -extension RTCRtpHeaderExtensionParametersExtension - on RTCRtpHeaderExtensionParameters { external set uri(String value); external String get uri; external set id(int value); @@ -591,20 +453,14 @@ extension RTCRtpHeaderExtensionParametersExtension external set encrypted(bool value); external bool get encrypted; } - -@JS() -@staticInterop -@anonymous -class RTCRtpCodec { +extension type RTCRtpCodec._(JSObject _) implements JSObject { external factory RTCRtpCodec({ required String mimeType, required int clockRate, int channels, String sdpFmtpLine, }); -} -extension RTCRtpCodecExtension on RTCRtpCodec { external set mimeType(String value); external String get mimeType; external set clockRate(int value); @@ -614,70 +470,40 @@ extension RTCRtpCodecExtension on RTCRtpCodec { external set sdpFmtpLine(String value); external String get sdpFmtpLine; } - -@JS() -@staticInterop -@anonymous -class RTCRtpCodecParameters implements RTCRtpCodec { +extension type RTCRtpCodecParameters._(JSObject _) + implements RTCRtpCodec, JSObject { external factory RTCRtpCodecParameters({required int payloadType}); -} -extension RTCRtpCodecParametersExtension on RTCRtpCodecParameters { external set payloadType(int value); external int get payloadType; } - -@JS() -@staticInterop -@anonymous -class RTCRtpCapabilities { +extension type RTCRtpCapabilities._(JSObject _) implements JSObject { external factory RTCRtpCapabilities({ required JSArray codecs, required JSArray headerExtensions, }); -} -extension RTCRtpCapabilitiesExtension on RTCRtpCapabilities { external set codecs(JSArray value); external JSArray get codecs; external set headerExtensions(JSArray value); external JSArray get headerExtensions; } - -@JS() -@staticInterop -@anonymous -class RTCRtpCodecCapability implements RTCRtpCodec { +extension type RTCRtpCodecCapability._(JSObject _) + implements RTCRtpCodec, JSObject { external factory RTCRtpCodecCapability(); } - -@JS() -@staticInterop -@anonymous -class RTCRtpHeaderExtensionCapability { +extension type RTCRtpHeaderExtensionCapability._(JSObject _) + implements JSObject { external factory RTCRtpHeaderExtensionCapability({required String uri}); -} -extension RTCRtpHeaderExtensionCapabilityExtension - on RTCRtpHeaderExtensionCapability { external set uri(String value); external String get uri; } - -@JS() -@staticInterop -@anonymous -class RTCSetParameterOptions { +extension type RTCSetParameterOptions._(JSObject _) implements JSObject { external factory RTCSetParameterOptions(); } - -@JS('RTCRtpReceiver') -@staticInterop -class RTCRtpReceiver { +extension type RTCRtpReceiver._(JSObject _) implements JSObject { external static RTCRtpCapabilities? getCapabilities(String kind); -} - -extension RTCRtpReceiverExtension on RTCRtpReceiver { external RTCRtpReceiveParameters getParameters(); external JSArray getContributingSources(); external JSArray getSynchronizationSources(); @@ -687,20 +513,14 @@ extension RTCRtpReceiverExtension on RTCRtpReceiver { external MediaStreamTrack get track; external RTCDtlsTransport? get transport; } - -@JS() -@staticInterop -@anonymous -class RTCRtpContributingSource { +extension type RTCRtpContributingSource._(JSObject _) implements JSObject { external factory RTCRtpContributingSource({ required DOMHighResTimeStamp timestamp, required int source, num audioLevel, required int rtpTimestamp, }); -} -extension RTCRtpContributingSourceExtension on RTCRtpContributingSource { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set source(int value); @@ -710,19 +530,11 @@ extension RTCRtpContributingSourceExtension on RTCRtpContributingSource { external set rtpTimestamp(int value); external int get rtpTimestamp; } - -@JS() -@staticInterop -@anonymous -class RTCRtpSynchronizationSource implements RTCRtpContributingSource { +extension type RTCRtpSynchronizationSource._(JSObject _) + implements RTCRtpContributingSource, JSObject { external factory RTCRtpSynchronizationSource(); } - -@JS('RTCRtpTransceiver') -@staticInterop -class RTCRtpTransceiver {} - -extension RTCRtpTransceiverExtension on RTCRtpTransceiver { +extension type RTCRtpTransceiver._(JSObject _) implements JSObject { external void stop(); external void setCodecPreferences(JSArray codecs); external String? get mid; @@ -732,12 +544,7 @@ extension RTCRtpTransceiverExtension on RTCRtpTransceiver { external RTCRtpTransceiverDirection get direction; external RTCRtpTransceiverDirection? get currentDirection; } - -@JS('RTCDtlsTransport') -@staticInterop -class RTCDtlsTransport implements EventTarget {} - -extension RTCDtlsTransportExtension on RTCDtlsTransport { +extension type RTCDtlsTransport._(JSObject _) implements EventTarget, JSObject { external JSArray getRemoteCertificates(); external RTCIceTransport get iceTransport; external RTCDtlsTransportState get state; @@ -746,31 +553,20 @@ extension RTCDtlsTransportExtension on RTCDtlsTransport { external set onerror(EventHandler value); external EventHandler get onerror; } - -@JS() -@staticInterop -@anonymous -class RTCDtlsFingerprint { +extension type RTCDtlsFingerprint._(JSObject _) implements JSObject { external factory RTCDtlsFingerprint({ String algorithm, String value, }); -} -extension RTCDtlsFingerprintExtension on RTCDtlsFingerprint { external set algorithm(String value); external String get algorithm; external set value(String value); external String get value; } - -@JS('RTCIceTransport') -@staticInterop -class RTCIceTransport implements EventTarget { +extension type RTCIceTransport._(JSObject _) implements EventTarget, JSObject { external factory RTCIceTransport(); -} -extension RTCIceTransportExtension on RTCIceTransport { external void gather([RTCIceGatherOptions options]); external void start([ RTCIceParameters remoteParameters, @@ -798,19 +594,13 @@ extension RTCIceTransportExtension on RTCIceTransport { external set onselectedcandidatepairchange(EventHandler value); external EventHandler get onselectedcandidatepairchange; } - -@JS() -@staticInterop -@anonymous -class RTCIceParameters { +extension type RTCIceParameters._(JSObject _) implements JSObject { external factory RTCIceParameters({ bool iceLite, String usernameFragment, String password, }); -} -extension RTCIceParametersExtension on RTCIceParameters { external set iceLite(bool value); external bool get iceLite; external set usernameFragment(String value); @@ -818,53 +608,36 @@ extension RTCIceParametersExtension on RTCIceParameters { external set password(String value); external String get password; } - -@JS() -@staticInterop -@anonymous -class RTCIceCandidatePair { +extension type RTCIceCandidatePair._(JSObject _) implements JSObject { external factory RTCIceCandidatePair({ RTCIceCandidate local, RTCIceCandidate remote, }); -} -extension RTCIceCandidatePairExtension on RTCIceCandidatePair { external set local(RTCIceCandidate value); external RTCIceCandidate get local; external set remote(RTCIceCandidate value); external RTCIceCandidate get remote; } - -@JS('RTCTrackEvent') -@staticInterop -class RTCTrackEvent implements Event { +extension type RTCTrackEvent._(JSObject _) implements Event, JSObject { external factory RTCTrackEvent( String type, RTCTrackEventInit eventInitDict, ); -} -extension RTCTrackEventExtension on RTCTrackEvent { external RTCRtpReceiver get receiver; external MediaStreamTrack get track; external JSArray get streams; external RTCRtpTransceiver get transceiver; } - -@JS() -@staticInterop -@anonymous -class RTCTrackEventInit implements EventInit { +extension type RTCTrackEventInit._(JSObject _) implements EventInit, JSObject { external factory RTCTrackEventInit({ required RTCRtpReceiver receiver, required MediaStreamTrack track, JSArray streams, required RTCRtpTransceiver transceiver, }); -} -extension RTCTrackEventInitExtension on RTCTrackEventInit { external set receiver(RTCRtpReceiver value); external RTCRtpReceiver get receiver; external set track(MediaStreamTrack value); @@ -874,12 +647,7 @@ extension RTCTrackEventInitExtension on RTCTrackEventInit { external set transceiver(RTCRtpTransceiver value); external RTCRtpTransceiver get transceiver; } - -@JS('RTCSctpTransport') -@staticInterop -class RTCSctpTransport implements EventTarget {} - -extension RTCSctpTransportExtension on RTCSctpTransport { +extension type RTCSctpTransport._(JSObject _) implements EventTarget, JSObject { external RTCDtlsTransport get transport; external RTCSctpTransportState get state; external num get maxMessageSize; @@ -887,12 +655,7 @@ extension RTCSctpTransportExtension on RTCSctpTransport { external set onstatechange(EventHandler value); external EventHandler get onstatechange; } - -@JS('RTCDataChannel') -@staticInterop -class RTCDataChannel implements EventTarget {} - -extension RTCDataChannelExtension on RTCDataChannel { +extension type RTCDataChannel._(JSObject _) implements EventTarget, JSObject { external void close(); external void send(JSAny data); external RTCPriorityType get priority; @@ -922,11 +685,7 @@ extension RTCDataChannelExtension on RTCDataChannel { external set binaryType(BinaryType value); external BinaryType get binaryType; } - -@JS() -@staticInterop -@anonymous -class RTCDataChannelInit { +extension type RTCDataChannelInit._(JSObject _) implements JSObject { external factory RTCDataChannelInit({ RTCPriorityType priority, bool ordered, @@ -936,9 +695,7 @@ class RTCDataChannelInit { bool negotiated, int id, }); -} -extension RTCDataChannelInitExtension on RTCDataChannelInit { external set priority(RTCPriorityType value); external RTCPriorityType get priority; external set ordered(bool value); @@ -954,37 +711,22 @@ extension RTCDataChannelInitExtension on RTCDataChannelInit { external set id(int value); external int get id; } - -@JS('RTCDataChannelEvent') -@staticInterop -class RTCDataChannelEvent implements Event { +extension type RTCDataChannelEvent._(JSObject _) implements Event, JSObject { external factory RTCDataChannelEvent( String type, RTCDataChannelEventInit eventInitDict, ); -} -extension RTCDataChannelEventExtension on RTCDataChannelEvent { external RTCDataChannel get channel; } - -@JS() -@staticInterop -@anonymous -class RTCDataChannelEventInit implements EventInit { +extension type RTCDataChannelEventInit._(JSObject _) + implements EventInit, JSObject { external factory RTCDataChannelEventInit({required RTCDataChannel channel}); -} -extension RTCDataChannelEventInitExtension on RTCDataChannelEventInit { external set channel(RTCDataChannel value); external RTCDataChannel get channel; } - -@JS('RTCDTMFSender') -@staticInterop -class RTCDTMFSender implements EventTarget {} - -extension RTCDTMFSenderExtension on RTCDTMFSender { +extension type RTCDTMFSender._(JSObject _) implements EventTarget, JSObject { external void insertDTMF( String tones, [ int duration, @@ -995,50 +737,29 @@ extension RTCDTMFSenderExtension on RTCDTMFSender { external bool get canInsertDTMF; external String get toneBuffer; } - -@JS('RTCDTMFToneChangeEvent') -@staticInterop -class RTCDTMFToneChangeEvent implements Event { +extension type RTCDTMFToneChangeEvent._(JSObject _) implements Event, JSObject { external factory RTCDTMFToneChangeEvent( String type, [ RTCDTMFToneChangeEventInit eventInitDict, ]); -} -extension RTCDTMFToneChangeEventExtension on RTCDTMFToneChangeEvent { external String get tone; } - -@JS() -@staticInterop -@anonymous -class RTCDTMFToneChangeEventInit implements EventInit { +extension type RTCDTMFToneChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory RTCDTMFToneChangeEventInit({String tone}); -} -extension RTCDTMFToneChangeEventInitExtension on RTCDTMFToneChangeEventInit { external set tone(String value); external String get tone; } - -@JS('RTCStatsReport') -@staticInterop -class RTCStatsReport {} - -extension RTCStatsReportExtension on RTCStatsReport {} - -@JS() -@staticInterop -@anonymous -class RTCStats { +extension type RTCStatsReport._(JSObject _) implements JSObject {} +extension type RTCStats._(JSObject _) implements JSObject { external factory RTCStats({ required DOMHighResTimeStamp timestamp, required RTCStatsType type, required String id, }); -} -extension RTCStatsExtension on RTCStats { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set type(RTCStatsType value); @@ -1046,17 +767,12 @@ extension RTCStatsExtension on RTCStats { external set id(String value); external String get id; } - -@JS('RTCError') -@staticInterop -class RTCError implements DOMException { +extension type RTCError._(JSObject _) implements DOMException, JSObject { external factory RTCError( RTCErrorInit init, [ String message, ]); -} -extension RTCErrorExtension on RTCError { external int? get httpRequestStatusCode; external RTCErrorDetailType get errorDetail; external int? get sdpLineNumber; @@ -1064,11 +780,7 @@ extension RTCErrorExtension on RTCError { external int? get receivedAlert; external int? get sentAlert; } - -@JS() -@staticInterop -@anonymous -class RTCErrorInit { +extension type RTCErrorInit._(JSObject _) implements JSObject { external factory RTCErrorInit({ int httpRequestStatusCode, required RTCErrorDetailType errorDetail, @@ -1077,9 +789,7 @@ class RTCErrorInit { int receivedAlert, int sentAlert, }); -} -extension RTCErrorInitExtension on RTCErrorInit { external set httpRequestStatusCode(int value); external int get httpRequestStatusCode; external set errorDetail(RTCErrorDetailType value); @@ -1093,28 +803,17 @@ extension RTCErrorInitExtension on RTCErrorInit { external set sentAlert(int value); external int get sentAlert; } - -@JS('RTCErrorEvent') -@staticInterop -class RTCErrorEvent implements Event { +extension type RTCErrorEvent._(JSObject _) implements Event, JSObject { external factory RTCErrorEvent( String type, RTCErrorEventInit eventInitDict, ); -} -extension RTCErrorEventExtension on RTCErrorEvent { external RTCError get error; } - -@JS() -@staticInterop -@anonymous -class RTCErrorEventInit implements EventInit { +extension type RTCErrorEventInit._(JSObject _) implements EventInit, JSObject { external factory RTCErrorEventInit({required RTCError error}); -} -extension RTCErrorEventInitExtension on RTCErrorEventInit { external set error(RTCError value); external RTCError get error; } diff --git a/lib/src/dom/webrtc_encoded_transform.dart b/lib/src/dom/webrtc_encoded_transform.dart index 22f2a944..751a4e67 100644 --- a/lib/src/dom/webrtc_encoded_transform.dart +++ b/lib/src/dom/webrtc_encoded_transform.dart @@ -17,26 +17,15 @@ typedef CryptoKeyID = JSAny; typedef SFrameTransformRole = String; typedef SFrameTransformErrorEventType = String; typedef RTCEncodedVideoFrameType = String; - -@JS() -@staticInterop -@anonymous -class SFrameTransformOptions { +extension type SFrameTransformOptions._(JSObject _) implements JSObject { external factory SFrameTransformOptions({SFrameTransformRole role}); -} -extension SFrameTransformOptionsExtension on SFrameTransformOptions { external set role(SFrameTransformRole value); external SFrameTransformRole get role; } - -@JS('SFrameTransform') -@staticInterop -class SFrameTransform implements EventTarget { +extension type SFrameTransform._(JSObject _) implements EventTarget, JSObject { external factory SFrameTransform([SFrameTransformOptions options]); -} -extension SFrameTransformExtension on SFrameTransform { external JSPromise setEncryptionKey( CryptoKey key, [ CryptoKeyID keyID, @@ -46,35 +35,25 @@ extension SFrameTransformExtension on SFrameTransform { external ReadableStream get readable; external WritableStream get writable; } - -@JS('SFrameTransformErrorEvent') -@staticInterop -class SFrameTransformErrorEvent implements Event { +extension type SFrameTransformErrorEvent._(JSObject _) + implements Event, JSObject { external factory SFrameTransformErrorEvent( String type, SFrameTransformErrorEventInit eventInitDict, ); -} -extension SFrameTransformErrorEventExtension on SFrameTransformErrorEvent { external SFrameTransformErrorEventType get errorType; external CryptoKeyID? get keyID; external JSAny? get frame; } - -@JS() -@staticInterop -@anonymous -class SFrameTransformErrorEventInit implements EventInit { +extension type SFrameTransformErrorEventInit._(JSObject _) + implements EventInit, JSObject { external factory SFrameTransformErrorEventInit({ required SFrameTransformErrorEventType errorType, required JSAny? frame, CryptoKeyID? keyID, }); -} -extension SFrameTransformErrorEventInitExtension - on SFrameTransformErrorEventInit { external set errorType(SFrameTransformErrorEventType value); external SFrameTransformErrorEventType get errorType; external set frame(JSAny? value); @@ -82,11 +61,7 @@ extension SFrameTransformErrorEventInitExtension external set keyID(CryptoKeyID? value); external CryptoKeyID? get keyID; } - -@JS() -@staticInterop -@anonymous -class RTCEncodedVideoFrameMetadata { +extension type RTCEncodedVideoFrameMetadata._(JSObject _) implements JSObject { external factory RTCEncodedVideoFrameMetadata({ int frameId, JSArray dependencies, @@ -100,10 +75,7 @@ class RTCEncodedVideoFrameMetadata { int timestamp, int rtpTimestamp, }); -} -extension RTCEncodedVideoFrameMetadataExtension - on RTCEncodedVideoFrameMetadata { external set frameId(int value); external int get frameId; external set dependencies(JSArray value); @@ -127,22 +99,13 @@ extension RTCEncodedVideoFrameMetadataExtension external set rtpTimestamp(int value); external int get rtpTimestamp; } - -@JS('RTCEncodedVideoFrame') -@staticInterop -class RTCEncodedVideoFrame {} - -extension RTCEncodedVideoFrameExtension on RTCEncodedVideoFrame { +extension type RTCEncodedVideoFrame._(JSObject _) implements JSObject { external RTCEncodedVideoFrameMetadata getMetadata(); external RTCEncodedVideoFrameType get type; external set data(JSArrayBuffer value); external JSArrayBuffer get data; } - -@JS() -@staticInterop -@anonymous -class RTCEncodedAudioFrameMetadata { +extension type RTCEncodedAudioFrameMetadata._(JSObject _) implements JSObject { external factory RTCEncodedAudioFrameMetadata({ int synchronizationSource, int payloadType, @@ -150,10 +113,7 @@ class RTCEncodedAudioFrameMetadata { int sequenceNumber, int rtpTimestamp, }); -} -extension RTCEncodedAudioFrameMetadataExtension - on RTCEncodedAudioFrameMetadata { external set synchronizationSource(int value); external int get synchronizationSource; external set payloadType(int value); @@ -165,40 +125,22 @@ extension RTCEncodedAudioFrameMetadataExtension external set rtpTimestamp(int value); external int get rtpTimestamp; } - -@JS('RTCEncodedAudioFrame') -@staticInterop -class RTCEncodedAudioFrame {} - -extension RTCEncodedAudioFrameExtension on RTCEncodedAudioFrame { +extension type RTCEncodedAudioFrame._(JSObject _) implements JSObject { external RTCEncodedAudioFrameMetadata getMetadata(); external set data(JSArrayBuffer value); external JSArrayBuffer get data; } - -@JS('RTCTransformEvent') -@staticInterop -class RTCTransformEvent implements Event {} - -extension RTCTransformEventExtension on RTCTransformEvent { +extension type RTCTransformEvent._(JSObject _) implements Event, JSObject { external RTCRtpScriptTransformer get transformer; } - -@JS('RTCRtpScriptTransformer') -@staticInterop -class RTCRtpScriptTransformer {} - -extension RTCRtpScriptTransformerExtension on RTCRtpScriptTransformer { +extension type RTCRtpScriptTransformer._(JSObject _) implements JSObject { external JSPromise generateKeyFrame([String rid]); external JSPromise sendKeyFrameRequest(); external ReadableStream get readable; external WritableStream get writable; external JSAny? get options; } - -@JS('RTCRtpScriptTransform') -@staticInterop -class RTCRtpScriptTransform { +extension type RTCRtpScriptTransform._(JSObject _) implements JSObject { external factory RTCRtpScriptTransform( Worker worker, [ JSAny? options, diff --git a/lib/src/dom/webrtc_ice.dart b/lib/src/dom/webrtc_ice.dart index 6d89333e..9f41fd8a 100644 --- a/lib/src/dom/webrtc_ice.dart +++ b/lib/src/dom/webrtc_ice.dart @@ -8,17 +8,12 @@ import 'dart:js_interop'; import 'webrtc.dart'; -@JS() -@staticInterop -@anonymous -class RTCIceGatherOptions { +extension type RTCIceGatherOptions._(JSObject _) implements JSObject { external factory RTCIceGatherOptions({ RTCIceTransportPolicy gatherPolicy, JSArray iceServers, }); -} -extension RTCIceGatherOptionsExtension on RTCIceGatherOptions { external set gatherPolicy(RTCIceTransportPolicy value); external RTCIceTransportPolicy get gatherPolicy; external set iceServers(JSArray value); diff --git a/lib/src/dom/webrtc_identity.dart b/lib/src/dom/webrtc_identity.dart index 5824d626..1d862204 100644 --- a/lib/src/dom/webrtc_identity.dart +++ b/lib/src/dom/webrtc_identity.dart @@ -11,105 +11,64 @@ import 'html.dart'; typedef GenerateAssertionCallback = JSFunction; typedef ValidateAssertionCallback = JSFunction; typedef RTCErrorDetailTypeIdp = String; - -@JS('RTCIdentityProviderGlobalScope') -@staticInterop -class RTCIdentityProviderGlobalScope implements WorkerGlobalScope {} - -extension RTCIdentityProviderGlobalScopeExtension - on RTCIdentityProviderGlobalScope { +extension type RTCIdentityProviderGlobalScope._(JSObject _) + implements WorkerGlobalScope, JSObject { external RTCIdentityProviderRegistrar get rtcIdentityProvider; } - -@JS('RTCIdentityProviderRegistrar') -@staticInterop -class RTCIdentityProviderRegistrar {} - -extension RTCIdentityProviderRegistrarExtension - on RTCIdentityProviderRegistrar { +extension type RTCIdentityProviderRegistrar._(JSObject _) implements JSObject { external void register(RTCIdentityProvider idp); } - -@JS() -@staticInterop -@anonymous -class RTCIdentityProvider { +extension type RTCIdentityProvider._(JSObject _) implements JSObject { external factory RTCIdentityProvider({ required GenerateAssertionCallback generateAssertion, required ValidateAssertionCallback validateAssertion, }); -} -extension RTCIdentityProviderExtension on RTCIdentityProvider { external set generateAssertion(GenerateAssertionCallback value); external GenerateAssertionCallback get generateAssertion; external set validateAssertion(ValidateAssertionCallback value); external ValidateAssertionCallback get validateAssertion; } - -@JS() -@staticInterop -@anonymous -class RTCIdentityAssertionResult { +extension type RTCIdentityAssertionResult._(JSObject _) implements JSObject { external factory RTCIdentityAssertionResult({ required RTCIdentityProviderDetails idp, required String assertion, }); -} -extension RTCIdentityAssertionResultExtension on RTCIdentityAssertionResult { external set idp(RTCIdentityProviderDetails value); external RTCIdentityProviderDetails get idp; external set assertion(String value); external String get assertion; } - -@JS() -@staticInterop -@anonymous -class RTCIdentityProviderDetails { +extension type RTCIdentityProviderDetails._(JSObject _) implements JSObject { external factory RTCIdentityProviderDetails({ required String domain, String protocol, }); -} -extension RTCIdentityProviderDetailsExtension on RTCIdentityProviderDetails { external set domain(String value); external String get domain; external set protocol(String value); external String get protocol; } - -@JS() -@staticInterop -@anonymous -class RTCIdentityValidationResult { +extension type RTCIdentityValidationResult._(JSObject _) implements JSObject { external factory RTCIdentityValidationResult({ required String identity, required String contents, }); -} -extension RTCIdentityValidationResultExtension on RTCIdentityValidationResult { external set identity(String value); external String get identity; external set contents(String value); external String get contents; } - -@JS() -@staticInterop -@anonymous -class RTCIdentityProviderOptions { +extension type RTCIdentityProviderOptions._(JSObject _) implements JSObject { external factory RTCIdentityProviderOptions({ String protocol, String usernameHint, String peerIdentity, }); -} -extension RTCIdentityProviderOptionsExtension on RTCIdentityProviderOptions { external set protocol(String value); external String get protocol; external set usernameHint(String value); @@ -117,17 +76,12 @@ extension RTCIdentityProviderOptionsExtension on RTCIdentityProviderOptions { external set peerIdentity(String value); external String get peerIdentity; } - -@JS('RTCIdentityAssertion') -@staticInterop -class RTCIdentityAssertion { +extension type RTCIdentityAssertion._(JSObject _) implements JSObject { external factory RTCIdentityAssertion( String idp, String name, ); -} -extension RTCIdentityAssertionExtension on RTCIdentityAssertion { external set idp(String value); external String get idp; external set name(String value); diff --git a/lib/src/dom/webrtc_stats.dart b/lib/src/dom/webrtc_stats.dart index 5b5d3b49..7d58862b 100644 --- a/lib/src/dom/webrtc_stats.dart +++ b/lib/src/dom/webrtc_stats.dart @@ -13,20 +13,14 @@ typedef RTCStatsType = String; typedef RTCQualityLimitationReason = String; typedef RTCDtlsRole = String; typedef RTCStatsIceCandidatePairState = String; - -@JS() -@staticInterop -@anonymous -class RTCRtpStreamStats implements RTCStats { +extension type RTCRtpStreamStats._(JSObject _) implements RTCStats, JSObject { external factory RTCRtpStreamStats({ required int ssrc, required String kind, String transportId, String codecId, }); -} -extension RTCRtpStreamStatsExtension on RTCRtpStreamStats { external set ssrc(int value); external int get ssrc; external set kind(String value); @@ -36,11 +30,7 @@ extension RTCRtpStreamStatsExtension on RTCRtpStreamStats { external set codecId(String value); external String get codecId; } - -@JS() -@staticInterop -@anonymous -class RTCCodecStats implements RTCStats { +extension type RTCCodecStats._(JSObject _) implements RTCStats, JSObject { external factory RTCCodecStats({ required int payloadType, required String transportId, @@ -49,9 +39,7 @@ class RTCCodecStats implements RTCStats { int channels, String sdpFmtpLine, }); -} -extension RTCCodecStatsExtension on RTCCodecStats { external set payloadType(int value); external int get payloadType; external set transportId(String value); @@ -65,19 +53,14 @@ extension RTCCodecStatsExtension on RTCCodecStats { external set sdpFmtpLine(String value); external String get sdpFmtpLine; } - -@JS() -@staticInterop -@anonymous -class RTCReceivedRtpStreamStats implements RTCRtpStreamStats { +extension type RTCReceivedRtpStreamStats._(JSObject _) + implements RTCRtpStreamStats, JSObject { external factory RTCReceivedRtpStreamStats({ int packetsReceived, int packetsLost, num jitter, }); -} -extension RTCReceivedRtpStreamStatsExtension on RTCReceivedRtpStreamStats { external set packetsReceived(int value); external int get packetsReceived; external set packetsLost(int value); @@ -85,11 +68,8 @@ extension RTCReceivedRtpStreamStatsExtension on RTCReceivedRtpStreamStats { external set jitter(num value); external num get jitter; } - -@JS() -@staticInterop -@anonymous -class RTCInboundRtpStreamStats implements RTCReceivedRtpStreamStats { +extension type RTCInboundRtpStreamStats._(JSObject _) + implements RTCReceivedRtpStreamStats, JSObject { external factory RTCInboundRtpStreamStats({ required String trackIdentifier, String mid, @@ -145,9 +125,7 @@ class RTCInboundRtpStreamStats implements RTCReceivedRtpStreamStats { int rtxSsrc, int fecSsrc, }); -} -extension RTCInboundRtpStreamStatsExtension on RTCInboundRtpStreamStats { external set trackIdentifier(String value); external String get trackIdentifier; external set mid(String value); @@ -255,11 +233,8 @@ extension RTCInboundRtpStreamStatsExtension on RTCInboundRtpStreamStats { external set fecSsrc(int value); external int get fecSsrc; } - -@JS() -@staticInterop -@anonymous -class RTCRemoteInboundRtpStreamStats implements RTCReceivedRtpStreamStats { +extension type RTCRemoteInboundRtpStreamStats._(JSObject _) + implements RTCReceivedRtpStreamStats, JSObject { external factory RTCRemoteInboundRtpStreamStats({ String localId, num roundTripTime, @@ -267,10 +242,7 @@ class RTCRemoteInboundRtpStreamStats implements RTCReceivedRtpStreamStats { num fractionLost, int roundTripTimeMeasurements, }); -} -extension RTCRemoteInboundRtpStreamStatsExtension - on RTCRemoteInboundRtpStreamStats { external set localId(String value); external String get localId; external set roundTripTime(num value); @@ -282,28 +254,20 @@ extension RTCRemoteInboundRtpStreamStatsExtension external set roundTripTimeMeasurements(int value); external int get roundTripTimeMeasurements; } - -@JS() -@staticInterop -@anonymous -class RTCSentRtpStreamStats implements RTCRtpStreamStats { +extension type RTCSentRtpStreamStats._(JSObject _) + implements RTCRtpStreamStats, JSObject { external factory RTCSentRtpStreamStats({ int packetsSent, int bytesSent, }); -} -extension RTCSentRtpStreamStatsExtension on RTCSentRtpStreamStats { external set packetsSent(int value); external int get packetsSent; external set bytesSent(int value); external int get bytesSent; } - -@JS() -@staticInterop -@anonymous -class RTCOutboundRtpStreamStats implements RTCSentRtpStreamStats { +extension type RTCOutboundRtpStreamStats._(JSObject _) + implements RTCSentRtpStreamStats, JSObject { external factory RTCOutboundRtpStreamStats({ String mid, String mediaSourceId, @@ -336,9 +300,7 @@ class RTCOutboundRtpStreamStats implements RTCSentRtpStreamStats { bool active, String scalabilityMode, }); -} -extension RTCOutboundRtpStreamStatsExtension on RTCOutboundRtpStreamStats { external set mid(String value); external String get mid; external set mediaSourceId(String value); @@ -400,11 +362,8 @@ extension RTCOutboundRtpStreamStatsExtension on RTCOutboundRtpStreamStats { external set scalabilityMode(String value); external String get scalabilityMode; } - -@JS() -@staticInterop -@anonymous -class RTCRemoteOutboundRtpStreamStats implements RTCSentRtpStreamStats { +extension type RTCRemoteOutboundRtpStreamStats._(JSObject _) + implements RTCSentRtpStreamStats, JSObject { external factory RTCRemoteOutboundRtpStreamStats({ String localId, DOMHighResTimeStamp remoteTimestamp, @@ -413,10 +372,7 @@ class RTCRemoteOutboundRtpStreamStats implements RTCSentRtpStreamStats { num totalRoundTripTime, int roundTripTimeMeasurements, }); -} -extension RTCRemoteOutboundRtpStreamStatsExtension - on RTCRemoteOutboundRtpStreamStats { external set localId(String value); external String get localId; external set remoteTimestamp(DOMHighResTimeStamp value); @@ -430,28 +386,19 @@ extension RTCRemoteOutboundRtpStreamStatsExtension external set roundTripTimeMeasurements(int value); external int get roundTripTimeMeasurements; } - -@JS() -@staticInterop -@anonymous -class RTCMediaSourceStats implements RTCStats { +extension type RTCMediaSourceStats._(JSObject _) implements RTCStats, JSObject { external factory RTCMediaSourceStats({ required String trackIdentifier, required String kind, }); -} -extension RTCMediaSourceStatsExtension on RTCMediaSourceStats { external set trackIdentifier(String value); external String get trackIdentifier; external set kind(String value); external String get kind; } - -@JS() -@staticInterop -@anonymous -class RTCAudioSourceStats implements RTCMediaSourceStats { +extension type RTCAudioSourceStats._(JSObject _) + implements RTCMediaSourceStats, JSObject { external factory RTCAudioSourceStats({ num audioLevel, num totalAudioEnergy, @@ -463,9 +410,7 @@ class RTCAudioSourceStats implements RTCMediaSourceStats { num totalCaptureDelay, int totalSamplesCaptured, }); -} -extension RTCAudioSourceStatsExtension on RTCAudioSourceStats { external set audioLevel(num value); external num get audioLevel; external set totalAudioEnergy(num value); @@ -485,20 +430,15 @@ extension RTCAudioSourceStatsExtension on RTCAudioSourceStats { external set totalSamplesCaptured(int value); external int get totalSamplesCaptured; } - -@JS() -@staticInterop -@anonymous -class RTCVideoSourceStats implements RTCMediaSourceStats { +extension type RTCVideoSourceStats._(JSObject _) + implements RTCMediaSourceStats, JSObject { external factory RTCVideoSourceStats({ int width, int height, int frames, num framesPerSecond, }); -} -extension RTCVideoSourceStatsExtension on RTCVideoSourceStats { external set width(int value); external int get width; external set height(int value); @@ -508,11 +448,8 @@ extension RTCVideoSourceStatsExtension on RTCVideoSourceStats { external set framesPerSecond(num value); external num get framesPerSecond; } - -@JS() -@staticInterop -@anonymous -class RTCAudioPlayoutStats implements RTCStats { +extension type RTCAudioPlayoutStats._(JSObject _) + implements RTCStats, JSObject { external factory RTCAudioPlayoutStats({ required String kind, num synthesizedSamplesDuration, @@ -521,9 +458,7 @@ class RTCAudioPlayoutStats implements RTCStats { num totalPlayoutDelay, int totalSamplesCount, }); -} -extension RTCAudioPlayoutStatsExtension on RTCAudioPlayoutStats { external set kind(String value); external String get kind; external set synthesizedSamplesDuration(num value); @@ -537,28 +472,19 @@ extension RTCAudioPlayoutStatsExtension on RTCAudioPlayoutStats { external set totalSamplesCount(int value); external int get totalSamplesCount; } - -@JS() -@staticInterop -@anonymous -class RTCPeerConnectionStats implements RTCStats { +extension type RTCPeerConnectionStats._(JSObject _) + implements RTCStats, JSObject { external factory RTCPeerConnectionStats({ int dataChannelsOpened, int dataChannelsClosed, }); -} -extension RTCPeerConnectionStatsExtension on RTCPeerConnectionStats { external set dataChannelsOpened(int value); external int get dataChannelsOpened; external set dataChannelsClosed(int value); external int get dataChannelsClosed; } - -@JS() -@staticInterop -@anonymous -class RTCDataChannelStats implements RTCStats { +extension type RTCDataChannelStats._(JSObject _) implements RTCStats, JSObject { external factory RTCDataChannelStats({ String label, String protocol, @@ -569,9 +495,7 @@ class RTCDataChannelStats implements RTCStats { int messagesReceived, int bytesReceived, }); -} -extension RTCDataChannelStatsExtension on RTCDataChannelStats { external set label(String value); external String get label; external set protocol(String value); @@ -589,11 +513,7 @@ extension RTCDataChannelStatsExtension on RTCDataChannelStats { external set bytesReceived(int value); external int get bytesReceived; } - -@JS() -@staticInterop -@anonymous -class RTCTransportStats implements RTCStats { +extension type RTCTransportStats._(JSObject _) implements RTCStats, JSObject { external factory RTCTransportStats({ int packetsSent, int packetsReceived, @@ -612,9 +532,7 @@ class RTCTransportStats implements RTCStats { String srtpCipher, int selectedCandidatePairChanges, }); -} -extension RTCTransportStatsExtension on RTCTransportStats { external set packetsSent(int value); external int get packetsSent; external set packetsReceived(int value); @@ -648,11 +566,8 @@ extension RTCTransportStatsExtension on RTCTransportStats { external set selectedCandidatePairChanges(int value); external int get selectedCandidatePairChanges; } - -@JS() -@staticInterop -@anonymous -class RTCIceCandidateStats implements RTCStats { +extension type RTCIceCandidateStats._(JSObject _) + implements RTCStats, JSObject { external factory RTCIceCandidateStats({ required String transportId, String? address, @@ -668,9 +583,7 @@ class RTCIceCandidateStats implements RTCStats { String usernameFragment, RTCIceTcpCandidateType tcpType, }); -} -extension RTCIceCandidateStatsExtension on RTCIceCandidateStats { external set transportId(String value); external String get transportId; external set address(String? value); @@ -698,11 +611,8 @@ extension RTCIceCandidateStatsExtension on RTCIceCandidateStats { external set tcpType(RTCIceTcpCandidateType value); external RTCIceTcpCandidateType get tcpType; } - -@JS() -@staticInterop -@anonymous -class RTCIceCandidatePairStats implements RTCStats { +extension type RTCIceCandidatePairStats._(JSObject _) + implements RTCStats, JSObject { external factory RTCIceCandidatePairStats({ required String transportId, required String localCandidateId, @@ -727,9 +637,7 @@ class RTCIceCandidatePairStats implements RTCStats { int packetsDiscardedOnSend, int bytesDiscardedOnSend, }); -} -extension RTCIceCandidatePairStatsExtension on RTCIceCandidatePairStats { external set transportId(String value); external String get transportId; external set localCandidateId(String value); @@ -775,20 +683,14 @@ extension RTCIceCandidatePairStatsExtension on RTCIceCandidatePairStats { external set bytesDiscardedOnSend(int value); external int get bytesDiscardedOnSend; } - -@JS() -@staticInterop -@anonymous -class RTCCertificateStats implements RTCStats { +extension type RTCCertificateStats._(JSObject _) implements RTCStats, JSObject { external factory RTCCertificateStats({ required String fingerprint, required String fingerprintAlgorithm, required String base64Certificate, String issuerCertificateId, }); -} -extension RTCCertificateStatsExtension on RTCCertificateStats { external set fingerprint(String value); external String get fingerprint; external set fingerprintAlgorithm(String value); diff --git a/lib/src/dom/websockets.dart b/lib/src/dom/websockets.dart index 64016e19..19e3009f 100644 --- a/lib/src/dom/websockets.dart +++ b/lib/src/dom/websockets.dart @@ -10,10 +10,7 @@ import 'dom.dart'; import 'html.dart'; typedef BinaryType = String; - -@JS('WebSocket') -@staticInterop -class WebSocket implements EventTarget { +extension type WebSocket._(JSObject _) implements EventTarget, JSObject { external factory WebSocket( String url, [ JSAny protocols, @@ -23,9 +20,6 @@ class WebSocket implements EventTarget { external static int get OPEN; external static int get CLOSING; external static int get CLOSED; -} - -extension WebSocketExtension on WebSocket { external void close([ int code, String reason, @@ -47,34 +41,23 @@ extension WebSocketExtension on WebSocket { external set binaryType(BinaryType value); external BinaryType get binaryType; } - -@JS('CloseEvent') -@staticInterop -class CloseEvent implements Event { +extension type CloseEvent._(JSObject _) implements Event, JSObject { external factory CloseEvent( String type, [ CloseEventInit eventInitDict, ]); -} -extension CloseEventExtension on CloseEvent { external bool get wasClean; external int get code; external String get reason; } - -@JS() -@staticInterop -@anonymous -class CloseEventInit implements EventInit { +extension type CloseEventInit._(JSObject _) implements EventInit, JSObject { external factory CloseEventInit({ bool wasClean, int code, String reason, }); -} -extension CloseEventInitExtension on CloseEventInit { external set wasClean(bool value); external bool get wasClean; external set code(int value); diff --git a/lib/src/dom/webtransport.dart b/lib/src/dom/webtransport.dart index 382cb519..52fd7f8d 100644 --- a/lib/src/dom/webtransport.dart +++ b/lib/src/dom/webtransport.dart @@ -13,13 +13,8 @@ import 'webidl.dart'; typedef WebTransportReliabilityMode = String; typedef WebTransportCongestionControl = String; typedef WebTransportErrorSource = String; - -@JS('WebTransportDatagramDuplexStream') -@staticInterop -class WebTransportDatagramDuplexStream {} - -extension WebTransportDatagramDuplexStreamExtension - on WebTransportDatagramDuplexStream { +extension type WebTransportDatagramDuplexStream._(JSObject _) + implements JSObject { external ReadableStream get readable; external WritableStream get writable; external int get maxDatagramSize; @@ -32,17 +27,12 @@ extension WebTransportDatagramDuplexStreamExtension external set outgoingHighWaterMark(num value); external num get outgoingHighWaterMark; } - -@JS('WebTransport') -@staticInterop -class WebTransport { +extension type WebTransport._(JSObject _) implements JSObject { external factory WebTransport( String url, [ WebTransportOptions options, ]); -} -extension WebTransportExtension on WebTransport { external JSPromise getStats(); external void close([WebTransportCloseInfo closeInfo]); external JSPromise createBidirectionalStream( @@ -58,37 +48,25 @@ extension WebTransportExtension on WebTransport { external ReadableStream get incomingBidirectionalStreams; external ReadableStream get incomingUnidirectionalStreams; } - -@JS() -@staticInterop -@anonymous -class WebTransportHash { +extension type WebTransportHash._(JSObject _) implements JSObject { external factory WebTransportHash({ String algorithm, BufferSource value, }); -} -extension WebTransportHashExtension on WebTransportHash { external set algorithm(String value); external String get algorithm; external set value(BufferSource value); external BufferSource get value; } - -@JS() -@staticInterop -@anonymous -class WebTransportOptions { +extension type WebTransportOptions._(JSObject _) implements JSObject { external factory WebTransportOptions({ bool allowPooling, bool requireUnreliable, JSArray serverCertificateHashes, WebTransportCongestionControl congestionControl, }); -} -extension WebTransportOptionsExtension on WebTransportOptions { external set allowPooling(bool value); external bool get allowPooling; external set requireUnreliable(bool value); @@ -98,41 +76,24 @@ extension WebTransportOptionsExtension on WebTransportOptions { external set congestionControl(WebTransportCongestionControl value); external WebTransportCongestionControl get congestionControl; } - -@JS() -@staticInterop -@anonymous -class WebTransportCloseInfo { +extension type WebTransportCloseInfo._(JSObject _) implements JSObject { external factory WebTransportCloseInfo({ int closeCode, String reason, }); -} -extension WebTransportCloseInfoExtension on WebTransportCloseInfo { external set closeCode(int value); external int get closeCode; external set reason(String value); external String get reason; } - -@JS() -@staticInterop -@anonymous -class WebTransportSendStreamOptions { +extension type WebTransportSendStreamOptions._(JSObject _) implements JSObject { external factory WebTransportSendStreamOptions({int? sendOrder}); -} -extension WebTransportSendStreamOptionsExtension - on WebTransportSendStreamOptions { external set sendOrder(int? value); external int? get sendOrder; } - -@JS() -@staticInterop -@anonymous -class WebTransportConnectionStats { +extension type WebTransportConnectionStats._(JSObject _) implements JSObject { external factory WebTransportConnectionStats({ DOMHighResTimeStamp timestamp, int bytesSent, @@ -147,9 +108,7 @@ class WebTransportConnectionStats { WebTransportDatagramStats datagrams, int? estimatedSendRate, }); -} -extension WebTransportConnectionStatsExtension on WebTransportConnectionStats { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set bytesSent(int value); @@ -175,20 +134,14 @@ extension WebTransportConnectionStatsExtension on WebTransportConnectionStats { external set estimatedSendRate(int? value); external int? get estimatedSendRate; } - -@JS() -@staticInterop -@anonymous -class WebTransportDatagramStats { +extension type WebTransportDatagramStats._(JSObject _) implements JSObject { external factory WebTransportDatagramStats({ DOMHighResTimeStamp timestamp, int expiredOutgoing, int droppedIncoming, int lostOutgoing, }); -} -extension WebTransportDatagramStatsExtension on WebTransportDatagramStats { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set expiredOutgoing(int value); @@ -198,30 +151,20 @@ extension WebTransportDatagramStatsExtension on WebTransportDatagramStats { external set lostOutgoing(int value); external int get lostOutgoing; } - -@JS('WebTransportSendStream') -@staticInterop -class WebTransportSendStream implements WritableStream {} - -extension WebTransportSendStreamExtension on WebTransportSendStream { +extension type WebTransportSendStream._(JSObject _) + implements WritableStream, JSObject { external JSPromise getStats(); external set sendOrder(int? value); external int? get sendOrder; } - -@JS() -@staticInterop -@anonymous -class WebTransportSendStreamStats { +extension type WebTransportSendStreamStats._(JSObject _) implements JSObject { external factory WebTransportSendStreamStats({ DOMHighResTimeStamp timestamp, int bytesWritten, int bytesSent, int bytesAcknowledged, }); -} -extension WebTransportSendStreamStatsExtension on WebTransportSendStreamStats { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set bytesWritten(int value); @@ -231,28 +174,18 @@ extension WebTransportSendStreamStatsExtension on WebTransportSendStreamStats { external set bytesAcknowledged(int value); external int get bytesAcknowledged; } - -@JS('WebTransportReceiveStream') -@staticInterop -class WebTransportReceiveStream implements ReadableStream {} - -extension WebTransportReceiveStreamExtension on WebTransportReceiveStream { +extension type WebTransportReceiveStream._(JSObject _) + implements ReadableStream, JSObject { external JSPromise getStats(); } - -@JS() -@staticInterop -@anonymous -class WebTransportReceiveStreamStats { +extension type WebTransportReceiveStreamStats._(JSObject _) + implements JSObject { external factory WebTransportReceiveStreamStats({ DOMHighResTimeStamp timestamp, int bytesReceived, int bytesRead, }); -} -extension WebTransportReceiveStreamStatsExtension - on WebTransportReceiveStreamStats { external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; external set bytesReceived(int value); @@ -260,42 +193,27 @@ extension WebTransportReceiveStreamStatsExtension external set bytesRead(int value); external int get bytesRead; } - -@JS('WebTransportBidirectionalStream') -@staticInterop -class WebTransportBidirectionalStream {} - -extension WebTransportBidirectionalStreamExtension - on WebTransportBidirectionalStream { +extension type WebTransportBidirectionalStream._(JSObject _) + implements JSObject { external WebTransportReceiveStream get readable; external WebTransportSendStream get writable; } - -@JS('WebTransportError') -@staticInterop -class WebTransportError implements DOMException { +extension type WebTransportError._(JSObject _) + implements DOMException, JSObject { external factory WebTransportError([ String message, WebTransportErrorOptions options, ]); -} -extension WebTransportErrorExtension on WebTransportError { external WebTransportErrorSource get source; external int? get streamErrorCode; } - -@JS() -@staticInterop -@anonymous -class WebTransportErrorOptions { +extension type WebTransportErrorOptions._(JSObject _) implements JSObject { external factory WebTransportErrorOptions({ WebTransportErrorSource source, int? streamErrorCode, }); -} -extension WebTransportErrorOptionsExtension on WebTransportErrorOptions { external set source(WebTransportErrorSource value); external WebTransportErrorSource get source; external set streamErrorCode(int? value); diff --git a/lib/src/dom/webusb.dart b/lib/src/dom/webusb.dart index ba39a670..156591c7 100644 --- a/lib/src/dom/webusb.dart +++ b/lib/src/dom/webusb.dart @@ -16,11 +16,7 @@ typedef USBRequestType = String; typedef USBRecipient = String; typedef USBDirection = String; typedef USBEndpointType = String; - -@JS() -@staticInterop -@anonymous -class USBDeviceFilter { +extension type USBDeviceFilter._(JSObject _) implements JSObject { external factory USBDeviceFilter({ int vendorId, int productId, @@ -29,9 +25,7 @@ class USBDeviceFilter { int protocolCode, String serialNumber, }); -} -extension USBDeviceFilterExtension on USBDeviceFilter { external set vendorId(int value); external int get vendorId; external set productId(int value); @@ -45,29 +39,18 @@ extension USBDeviceFilterExtension on USBDeviceFilter { external set serialNumber(String value); external String get serialNumber; } - -@JS() -@staticInterop -@anonymous -class USBDeviceRequestOptions { +extension type USBDeviceRequestOptions._(JSObject _) implements JSObject { external factory USBDeviceRequestOptions({ required JSArray filters, JSArray exclusionFilters, }); -} -extension USBDeviceRequestOptionsExtension on USBDeviceRequestOptions { external set filters(JSArray value); external JSArray get filters; external set exclusionFilters(JSArray value); external JSArray get exclusionFilters; } - -@JS('USB') -@staticInterop -class USB implements EventTarget {} - -extension USBExtension on USB { +extension type USB._(JSObject _) implements EventTarget, JSObject { external JSPromise getDevices(); external JSPromise requestDevice(USBDeviceRequestOptions options); external set onconnect(EventHandler value); @@ -75,121 +58,76 @@ extension USBExtension on USB { external set ondisconnect(EventHandler value); external EventHandler get ondisconnect; } - -@JS() -@staticInterop -@anonymous -class USBConnectionEventInit implements EventInit { +extension type USBConnectionEventInit._(JSObject _) + implements EventInit, JSObject { external factory USBConnectionEventInit({required USBDevice device}); -} -extension USBConnectionEventInitExtension on USBConnectionEventInit { external set device(USBDevice value); external USBDevice get device; } - -@JS('USBConnectionEvent') -@staticInterop -class USBConnectionEvent implements Event { +extension type USBConnectionEvent._(JSObject _) implements Event, JSObject { external factory USBConnectionEvent( String type, USBConnectionEventInit eventInitDict, ); -} -extension USBConnectionEventExtension on USBConnectionEvent { external USBDevice get device; } - -@JS('USBInTransferResult') -@staticInterop -class USBInTransferResult { +extension type USBInTransferResult._(JSObject _) implements JSObject { external factory USBInTransferResult( USBTransferStatus status, [ JSDataView? data, ]); -} -extension USBInTransferResultExtension on USBInTransferResult { external JSDataView? get data; external USBTransferStatus get status; } - -@JS('USBOutTransferResult') -@staticInterop -class USBOutTransferResult { +extension type USBOutTransferResult._(JSObject _) implements JSObject { external factory USBOutTransferResult( USBTransferStatus status, [ int bytesWritten, ]); -} -extension USBOutTransferResultExtension on USBOutTransferResult { external int get bytesWritten; external USBTransferStatus get status; } - -@JS('USBIsochronousInTransferPacket') -@staticInterop -class USBIsochronousInTransferPacket { +extension type USBIsochronousInTransferPacket._(JSObject _) + implements JSObject { external factory USBIsochronousInTransferPacket( USBTransferStatus status, [ JSDataView? data, ]); -} -extension USBIsochronousInTransferPacketExtension - on USBIsochronousInTransferPacket { external JSDataView? get data; external USBTransferStatus get status; } - -@JS('USBIsochronousInTransferResult') -@staticInterop -class USBIsochronousInTransferResult { +extension type USBIsochronousInTransferResult._(JSObject _) + implements JSObject { external factory USBIsochronousInTransferResult( JSArray packets, [ JSDataView? data, ]); -} -extension USBIsochronousInTransferResultExtension - on USBIsochronousInTransferResult { external JSDataView? get data; external JSArray get packets; } - -@JS('USBIsochronousOutTransferPacket') -@staticInterop -class USBIsochronousOutTransferPacket { +extension type USBIsochronousOutTransferPacket._(JSObject _) + implements JSObject { external factory USBIsochronousOutTransferPacket( USBTransferStatus status, [ int bytesWritten, ]); -} -extension USBIsochronousOutTransferPacketExtension - on USBIsochronousOutTransferPacket { external int get bytesWritten; external USBTransferStatus get status; } - -@JS('USBIsochronousOutTransferResult') -@staticInterop -class USBIsochronousOutTransferResult { +extension type USBIsochronousOutTransferResult._(JSObject _) + implements JSObject { external factory USBIsochronousOutTransferResult(JSArray packets); -} -extension USBIsochronousOutTransferResultExtension - on USBIsochronousOutTransferResult { external JSArray get packets; } - -@JS('USBDevice') -@staticInterop -class USBDevice {} - -extension USBDeviceExtension on USBDevice { +extension type USBDevice._(JSObject _) implements JSObject { external JSPromise open(); external JSPromise close(); external JSPromise forget(); @@ -248,11 +186,7 @@ extension USBDeviceExtension on USBDevice { external JSArray get configurations; external bool get opened; } - -@JS() -@staticInterop -@anonymous -class USBControlTransferParameters { +extension type USBControlTransferParameters._(JSObject _) implements JSObject { external factory USBControlTransferParameters({ required USBRequestType requestType, required USBRecipient recipient, @@ -260,10 +194,7 @@ class USBControlTransferParameters { required int value, required int index, }); -} -extension USBControlTransferParametersExtension - on USBControlTransferParameters { external set requestType(USBRequestType value); external USBRequestType get requestType; external set recipient(USBRecipient value); @@ -275,48 +206,33 @@ extension USBControlTransferParametersExtension external set index(int value); external int get index; } - -@JS('USBConfiguration') -@staticInterop -class USBConfiguration { +extension type USBConfiguration._(JSObject _) implements JSObject { external factory USBConfiguration( USBDevice device, int configurationValue, ); -} -extension USBConfigurationExtension on USBConfiguration { external int get configurationValue; external String? get configurationName; external JSArray get interfaces; } - -@JS('USBInterface') -@staticInterop -class USBInterface { +extension type USBInterface._(JSObject _) implements JSObject { external factory USBInterface( USBConfiguration configuration, int interfaceNumber, ); -} -extension USBInterfaceExtension on USBInterface { external int get interfaceNumber; external USBAlternateInterface get alternate; external JSArray get alternates; external bool get claimed; } - -@JS('USBAlternateInterface') -@staticInterop -class USBAlternateInterface { +extension type USBAlternateInterface._(JSObject _) implements JSObject { external factory USBAlternateInterface( USBInterface deviceInterface, int alternateSetting, ); -} -extension USBAlternateInterfaceExtension on USBAlternateInterface { external int get alternateSetting; external int get interfaceClass; external int get interfaceSubclass; @@ -324,53 +240,37 @@ extension USBAlternateInterfaceExtension on USBAlternateInterface { external String? get interfaceName; external JSArray get endpoints; } - -@JS('USBEndpoint') -@staticInterop -class USBEndpoint { +extension type USBEndpoint._(JSObject _) implements JSObject { external factory USBEndpoint( USBAlternateInterface alternate, int endpointNumber, USBDirection direction, ); -} -extension USBEndpointExtension on USBEndpoint { external int get endpointNumber; external USBDirection get direction; external USBEndpointType get type; external int get packetSize; } - -@JS() -@staticInterop -@anonymous -class USBPermissionDescriptor implements PermissionDescriptor { +extension type USBPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory USBPermissionDescriptor({ JSArray filters, JSArray exclusionFilters, }); -} -extension USBPermissionDescriptorExtension on USBPermissionDescriptor { external set filters(JSArray value); external JSArray get filters; external set exclusionFilters(JSArray value); external JSArray get exclusionFilters; } - -@JS() -@staticInterop -@anonymous -class AllowedUSBDevice { +extension type AllowedUSBDevice._(JSObject _) implements JSObject { external factory AllowedUSBDevice({ required int vendorId, required int productId, String serialNumber, }); -} -extension AllowedUSBDeviceExtension on AllowedUSBDevice { external set vendorId(int value); external int get vendorId; external set productId(int value); @@ -378,24 +278,14 @@ extension AllowedUSBDeviceExtension on AllowedUSBDevice { external set serialNumber(String value); external String get serialNumber; } - -@JS() -@staticInterop -@anonymous -class USBPermissionStorage { +extension type USBPermissionStorage._(JSObject _) implements JSObject { external factory USBPermissionStorage({JSArray allowedDevices}); -} -extension USBPermissionStorageExtension on USBPermissionStorage { external set allowedDevices(JSArray value); external JSArray get allowedDevices; } - -@JS('USBPermissionResult') -@staticInterop -class USBPermissionResult implements PermissionStatus {} - -extension USBPermissionResultExtension on USBPermissionResult { +extension type USBPermissionResult._(JSObject _) + implements PermissionStatus, JSObject { external set devices(JSArray value); external JSArray get devices; } diff --git a/lib/src/dom/webvtt.dart b/lib/src/dom/webvtt.dart index 45fd0e2c..fe872701 100644 --- a/lib/src/dom/webvtt.dart +++ b/lib/src/dom/webvtt.dart @@ -16,18 +16,13 @@ typedef LineAlignSetting = String; typedef PositionAlignSetting = String; typedef AlignSetting = String; typedef ScrollSetting = String; - -@JS('VTTCue') -@staticInterop -class VTTCue implements TextTrackCue { +extension type VTTCue._(JSObject _) implements TextTrackCue, JSObject { external factory VTTCue( num startTime, num endTime, String text, ); -} -extension VTTCueExtension on VTTCue { external DocumentFragment getCueAsHTML(); external set region(VTTRegion? value); external VTTRegion? get region; @@ -50,14 +45,9 @@ extension VTTCueExtension on VTTCue { external set text(String value); external String get text; } - -@JS('VTTRegion') -@staticInterop -class VTTRegion { +extension type VTTRegion._(JSObject _) implements JSObject { external factory VTTRegion(); -} -extension VTTRegionExtension on VTTRegion { external set id(String value); external String get id; external set width(num value); diff --git a/lib/src/dom/webxr.dart b/lib/src/dom/webxr.dart index 78e1c52a..a7411503 100644 --- a/lib/src/dom/webxr.dart +++ b/lib/src/dom/webxr.dart @@ -31,12 +31,7 @@ typedef XRReferenceSpaceType = String; typedef XREye = String; typedef XRHandedness = String; typedef XRTargetRayMode = String; - -@JS('XRSystem') -@staticInterop -class XRSystem implements EventTarget {} - -extension XRSystemExtension on XRSystem { +extension type XRSystem._(JSObject _) implements EventTarget, JSObject { external JSPromise isSessionSupported(XRSessionMode mode); external JSPromise requestSession( XRSessionMode mode, [ @@ -45,20 +40,14 @@ extension XRSystemExtension on XRSystem { external set ondevicechange(EventHandler value); external EventHandler get ondevicechange; } - -@JS() -@staticInterop -@anonymous -class XRSessionInit { +extension type XRSessionInit._(JSObject _) implements JSObject { external factory XRSessionInit({ XRDepthStateInit depthSensing, XRDOMOverlayInit? domOverlay, JSArray requiredFeatures, JSArray optionalFeatures, }); -} -extension XRSessionInitExtension on XRSessionInit { external set depthSensing(XRDepthStateInit value); external XRDepthStateInit get depthSensing; external set domOverlay(XRDOMOverlayInit? value); @@ -68,12 +57,7 @@ extension XRSessionInitExtension on XRSessionInit { external set optionalFeatures(JSArray value); external JSArray get optionalFeatures; } - -@JS('XRSession') -@staticInterop -class XRSession implements EventTarget {} - -extension XRSessionExtension on XRSession { +extension type XRSession._(JSObject _) implements EventTarget, JSObject { external JSPromise restorePersistentAnchor(String uuid); external JSPromise deletePersistentAnchor(String uuid); external JSPromise requestHitTestSource(XRHitTestOptionsInit options); @@ -121,11 +105,7 @@ extension XRSessionExtension on XRSession { external set onframeratechange(EventHandler value); external EventHandler get onframeratechange; } - -@JS() -@staticInterop -@anonymous -class XRRenderStateInit { +extension type XRRenderStateInit._(JSObject _) implements JSObject { external factory XRRenderStateInit({ num depthNear, num depthFar, @@ -133,9 +113,7 @@ class XRRenderStateInit { XRWebGLLayer? baseLayer, JSArray? layers, }); -} -extension XRRenderStateInitExtension on XRRenderStateInit { external set depthNear(num value); external num get depthNear; external set depthFar(num value); @@ -147,24 +125,14 @@ extension XRRenderStateInitExtension on XRRenderStateInit { external set layers(JSArray? value); external JSArray? get layers; } - -@JS('XRRenderState') -@staticInterop -class XRRenderState {} - -extension XRRenderStateExtension on XRRenderState { +extension type XRRenderState._(JSObject _) implements JSObject { external num get depthNear; external num get depthFar; external num? get inlineVerticalFieldOfView; external XRWebGLLayer? get baseLayer; external JSArray get layers; } - -@JS('XRFrame') -@staticInterop -class XRFrame {} - -extension XRFrameExtension on XRFrame { +extension type XRFrame._(JSObject _) implements JSObject { external JSPromise createAnchor( XRRigidTransform pose, XRSpace space, @@ -197,35 +165,18 @@ extension XRFrameExtension on XRFrame { external XRSession get session; external DOMHighResTimeStamp get predictedDisplayTime; } - -@JS('XRSpace') -@staticInterop -class XRSpace implements EventTarget {} - -@JS('XRReferenceSpace') -@staticInterop -class XRReferenceSpace implements XRSpace {} - -extension XRReferenceSpaceExtension on XRReferenceSpace { +extension type XRSpace._(JSObject _) implements EventTarget, JSObject {} +extension type XRReferenceSpace._(JSObject _) implements XRSpace, JSObject { external XRReferenceSpace getOffsetReferenceSpace( XRRigidTransform originOffset); external set onreset(EventHandler value); external EventHandler get onreset; } - -@JS('XRBoundedReferenceSpace') -@staticInterop -class XRBoundedReferenceSpace implements XRReferenceSpace {} - -extension XRBoundedReferenceSpaceExtension on XRBoundedReferenceSpace { +extension type XRBoundedReferenceSpace._(JSObject _) + implements XRReferenceSpace, JSObject { external JSArray get boundsGeometry; } - -@JS('XRView') -@staticInterop -class XRView {} - -extension XRViewExtension on XRView { +extension type XRView._(JSObject _) implements JSObject { external void requestViewportScale(num? scale); external XRCamera? get camera; external bool get isFirstPersonObserver; @@ -234,58 +185,33 @@ extension XRViewExtension on XRView { external XRRigidTransform get transform; external num? get recommendedViewportScale; } - -@JS('XRViewport') -@staticInterop -class XRViewport {} - -extension XRViewportExtension on XRViewport { +extension type XRViewport._(JSObject _) implements JSObject { external int get x; external int get y; external int get width; external int get height; } - -@JS('XRRigidTransform') -@staticInterop -class XRRigidTransform { +extension type XRRigidTransform._(JSObject _) implements JSObject { external factory XRRigidTransform([ DOMPointInit position, DOMPointInit orientation, ]); -} -extension XRRigidTransformExtension on XRRigidTransform { external DOMPointReadOnly get position; external DOMPointReadOnly get orientation; external JSFloat32Array get matrix; external XRRigidTransform get inverse; } - -@JS('XRPose') -@staticInterop -class XRPose {} - -extension XRPoseExtension on XRPose { +extension type XRPose._(JSObject _) implements JSObject { external XRRigidTransform get transform; external DOMPointReadOnly? get linearVelocity; external DOMPointReadOnly? get angularVelocity; external bool get emulatedPosition; } - -@JS('XRViewerPose') -@staticInterop -class XRViewerPose implements XRPose {} - -extension XRViewerPoseExtension on XRViewerPose { +extension type XRViewerPose._(JSObject _) implements XRPose, JSObject { external JSArray get views; } - -@JS('XRInputSource') -@staticInterop -class XRInputSource {} - -extension XRInputSourceExtension on XRInputSource { +extension type XRInputSource._(JSObject _) implements JSObject { external Gamepad? get gamepad; external XRHand? get hand; external XRHandedness get handedness; @@ -294,23 +220,11 @@ extension XRInputSourceExtension on XRInputSource { external XRSpace? get gripSpace; external JSArray get profiles; } - -@JS('XRInputSourceArray') -@staticInterop -class XRInputSourceArray {} - -extension XRInputSourceArrayExtension on XRInputSourceArray { +extension type XRInputSourceArray._(JSObject _) implements JSObject { external int get length; } - -@JS('XRLayer') -@staticInterop -class XRLayer implements EventTarget {} - -@JS() -@staticInterop -@anonymous -class XRWebGLLayerInit { +extension type XRLayer._(JSObject _) implements EventTarget, JSObject {} +extension type XRWebGLLayerInit._(JSObject _) implements JSObject { external factory XRWebGLLayerInit({ bool antialias, bool depth, @@ -319,9 +233,7 @@ class XRWebGLLayerInit { bool ignoreDepthValues, num framebufferScaleFactor, }); -} -extension XRWebGLLayerInitExtension on XRWebGLLayerInit { external set antialias(bool value); external bool get antialias; external set depth(bool value); @@ -335,10 +247,7 @@ extension XRWebGLLayerInitExtension on XRWebGLLayerInit { external set framebufferScaleFactor(num value); external num get framebufferScaleFactor; } - -@JS('XRWebGLLayer') -@staticInterop -class XRWebGLLayer implements XRLayer { +extension type XRWebGLLayer._(JSObject _) implements XRLayer, JSObject { external factory XRWebGLLayer( XRSession session, XRWebGLRenderingContext context, [ @@ -346,9 +255,6 @@ class XRWebGLLayer implements XRLayer { ]); external static num getNativeFramebufferScaleFactor(XRSession session); -} - -extension XRWebGLLayerExtension on XRWebGLLayer { external XRViewport? getViewport(XRView view); external bool get antialias; external bool get ignoreDepthValues; @@ -358,91 +264,60 @@ extension XRWebGLLayerExtension on XRWebGLLayer { external int get framebufferWidth; external int get framebufferHeight; } - -@JS('XRSessionEvent') -@staticInterop -class XRSessionEvent implements Event { +extension type XRSessionEvent._(JSObject _) implements Event, JSObject { external factory XRSessionEvent( String type, XRSessionEventInit eventInitDict, ); -} -extension XRSessionEventExtension on XRSessionEvent { external XRSession get session; } - -@JS() -@staticInterop -@anonymous -class XRSessionEventInit implements EventInit { +extension type XRSessionEventInit._(JSObject _) implements EventInit, JSObject { external factory XRSessionEventInit({required XRSession session}); -} -extension XRSessionEventInitExtension on XRSessionEventInit { external set session(XRSession value); external XRSession get session; } - -@JS('XRInputSourceEvent') -@staticInterop -class XRInputSourceEvent implements Event { +extension type XRInputSourceEvent._(JSObject _) implements Event, JSObject { external factory XRInputSourceEvent( String type, XRInputSourceEventInit eventInitDict, ); -} -extension XRInputSourceEventExtension on XRInputSourceEvent { external XRFrame get frame; external XRInputSource get inputSource; } - -@JS() -@staticInterop -@anonymous -class XRInputSourceEventInit implements EventInit { +extension type XRInputSourceEventInit._(JSObject _) + implements EventInit, JSObject { external factory XRInputSourceEventInit({ required XRFrame frame, required XRInputSource inputSource, }); -} -extension XRInputSourceEventInitExtension on XRInputSourceEventInit { external set frame(XRFrame value); external XRFrame get frame; external set inputSource(XRInputSource value); external XRInputSource get inputSource; } - -@JS('XRInputSourcesChangeEvent') -@staticInterop -class XRInputSourcesChangeEvent implements Event { +extension type XRInputSourcesChangeEvent._(JSObject _) + implements Event, JSObject { external factory XRInputSourcesChangeEvent( String type, XRInputSourcesChangeEventInit eventInitDict, ); -} -extension XRInputSourcesChangeEventExtension on XRInputSourcesChangeEvent { external XRSession get session; external JSArray get added; external JSArray get removed; } - -@JS() -@staticInterop -@anonymous -class XRInputSourcesChangeEventInit implements EventInit { +extension type XRInputSourcesChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory XRInputSourcesChangeEventInit({ required XRSession session, required JSArray added, required JSArray removed, }); -} -extension XRInputSourcesChangeEventInitExtension - on XRInputSourcesChangeEventInit { external set session(XRSession value); external XRSession get session; external set added(JSArray value); @@ -450,63 +325,42 @@ extension XRInputSourcesChangeEventInitExtension external set removed(JSArray value); external JSArray get removed; } - -@JS('XRReferenceSpaceEvent') -@staticInterop -class XRReferenceSpaceEvent implements Event { +extension type XRReferenceSpaceEvent._(JSObject _) implements Event, JSObject { external factory XRReferenceSpaceEvent( String type, XRReferenceSpaceEventInit eventInitDict, ); -} -extension XRReferenceSpaceEventExtension on XRReferenceSpaceEvent { external XRReferenceSpace get referenceSpace; external XRRigidTransform? get transform; } - -@JS() -@staticInterop -@anonymous -class XRReferenceSpaceEventInit implements EventInit { +extension type XRReferenceSpaceEventInit._(JSObject _) + implements EventInit, JSObject { external factory XRReferenceSpaceEventInit({ required XRReferenceSpace referenceSpace, XRRigidTransform? transform, }); -} -extension XRReferenceSpaceEventInitExtension on XRReferenceSpaceEventInit { external set referenceSpace(XRReferenceSpace value); external XRReferenceSpace get referenceSpace; external set transform(XRRigidTransform? value); external XRRigidTransform? get transform; } - -@JS() -@staticInterop -@anonymous -class XRSessionSupportedPermissionDescriptor implements PermissionDescriptor { +extension type XRSessionSupportedPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory XRSessionSupportedPermissionDescriptor({XRSessionMode mode}); -} -extension XRSessionSupportedPermissionDescriptorExtension - on XRSessionSupportedPermissionDescriptor { external set mode(XRSessionMode value); external XRSessionMode get mode; } - -@JS() -@staticInterop -@anonymous -class XRPermissionDescriptor implements PermissionDescriptor { +extension type XRPermissionDescriptor._(JSObject _) + implements PermissionDescriptor, JSObject { external factory XRPermissionDescriptor({ XRSessionMode mode, JSArray requiredFeatures, JSArray optionalFeatures, }); -} -extension XRPermissionDescriptorExtension on XRPermissionDescriptor { external set mode(XRSessionMode value); external XRSessionMode get mode; external set requiredFeatures(JSArray value); @@ -514,12 +368,8 @@ extension XRPermissionDescriptorExtension on XRPermissionDescriptor { external set optionalFeatures(JSArray value); external JSArray get optionalFeatures; } - -@JS('XRPermissionStatus') -@staticInterop -class XRPermissionStatus implements PermissionStatus {} - -extension XRPermissionStatusExtension on XRPermissionStatus { +extension type XRPermissionStatus._(JSObject _) + implements PermissionStatus, JSObject { external set granted(JSArray value); external JSArray get granted; } diff --git a/lib/src/dom/webxr_depth_sensing.dart b/lib/src/dom/webxr_depth_sensing.dart index b7ff98b7..2ceb872b 100644 --- a/lib/src/dom/webxr_depth_sensing.dart +++ b/lib/src/dom/webxr_depth_sensing.dart @@ -11,51 +11,32 @@ import 'webxr.dart'; typedef XRDepthUsage = String; typedef XRDepthDataFormat = String; - -@JS() -@staticInterop -@anonymous -class XRDepthStateInit { +extension type XRDepthStateInit._(JSObject _) implements JSObject { external factory XRDepthStateInit({ required JSArray usagePreference, required JSArray dataFormatPreference, }); -} -extension XRDepthStateInitExtension on XRDepthStateInit { external set usagePreference(JSArray value); external JSArray get usagePreference; external set dataFormatPreference(JSArray value); external JSArray get dataFormatPreference; } - -@JS('XRDepthInformation') -@staticInterop -class XRDepthInformation {} - -extension XRDepthInformationExtension on XRDepthInformation { +extension type XRDepthInformation._(JSObject _) implements JSObject { external int get width; external int get height; external XRRigidTransform get normDepthBufferFromNormView; external num get rawValueToMeters; } - -@JS('XRCPUDepthInformation') -@staticInterop -class XRCPUDepthInformation implements XRDepthInformation {} - -extension XRCPUDepthInformationExtension on XRCPUDepthInformation { +extension type XRCPUDepthInformation._(JSObject _) + implements XRDepthInformation, JSObject { external num getDepthInMeters( num x, num y, ); external JSArrayBuffer get data; } - -@JS('XRWebGLDepthInformation') -@staticInterop -class XRWebGLDepthInformation implements XRDepthInformation {} - -extension XRWebGLDepthInformationExtension on XRWebGLDepthInformation { +extension type XRWebGLDepthInformation._(JSObject _) + implements XRDepthInformation, JSObject { external WebGLTexture get texture; } diff --git a/lib/src/dom/webxr_dom_overlays.dart b/lib/src/dom/webxr_dom_overlays.dart index 1aaea67c..e6fc5ef1 100644 --- a/lib/src/dom/webxr_dom_overlays.dart +++ b/lib/src/dom/webxr_dom_overlays.dart @@ -9,27 +9,15 @@ import 'dart:js_interop'; import 'dom.dart'; typedef XRDOMOverlayType = String; - -@JS() -@staticInterop -@anonymous -class XRDOMOverlayInit { +extension type XRDOMOverlayInit._(JSObject _) implements JSObject { external factory XRDOMOverlayInit({required Element root}); -} -extension XRDOMOverlayInitExtension on XRDOMOverlayInit { external set root(Element value); external Element get root; } - -@JS() -@staticInterop -@anonymous -class XRDOMOverlayState { +extension type XRDOMOverlayState._(JSObject _) implements JSObject { external factory XRDOMOverlayState({XRDOMOverlayType type}); -} -extension XRDOMOverlayStateExtension on XRDOMOverlayState { external set type(XRDOMOverlayType value); external XRDOMOverlayType get type; } diff --git a/lib/src/dom/webxr_hand_input.dart b/lib/src/dom/webxr_hand_input.dart index a7fa1255..41e2a4b0 100644 --- a/lib/src/dom/webxr_hand_input.dart +++ b/lib/src/dom/webxr_hand_input.dart @@ -9,28 +9,13 @@ import 'dart:js_interop'; import 'webxr.dart'; typedef XRHandJoint = String; - -@JS('XRHand') -@staticInterop -class XRHand {} - -extension XRHandExtension on XRHand { +extension type XRHand._(JSObject _) implements JSObject { external XRJointSpace get(XRHandJoint key); external int get size; } - -@JS('XRJointSpace') -@staticInterop -class XRJointSpace implements XRSpace {} - -extension XRJointSpaceExtension on XRJointSpace { +extension type XRJointSpace._(JSObject _) implements XRSpace, JSObject { external XRHandJoint get jointName; } - -@JS('XRJointPose') -@staticInterop -class XRJointPose implements XRPose {} - -extension XRJointPoseExtension on XRJointPose { +extension type XRJointPose._(JSObject _) implements XRPose, JSObject { external num get radius; } diff --git a/lib/src/dom/webxr_hit_test.dart b/lib/src/dom/webxr_hit_test.dart index bf68f74f..aad68d3b 100644 --- a/lib/src/dom/webxr_hit_test.dart +++ b/lib/src/dom/webxr_hit_test.dart @@ -10,19 +10,13 @@ import 'geometry.dart'; import 'webxr.dart'; typedef XRHitTestTrackableType = String; - -@JS() -@staticInterop -@anonymous -class XRHitTestOptionsInit { +extension type XRHitTestOptionsInit._(JSObject _) implements JSObject { external factory XRHitTestOptionsInit({ required XRSpace space, JSArray entityTypes, XRRay offsetRay, }); -} -extension XRHitTestOptionsInitExtension on XRHitTestOptionsInit { external set space(XRSpace value); external XRSpace get space; external set entityTypes(JSArray value); @@ -30,20 +24,14 @@ extension XRHitTestOptionsInitExtension on XRHitTestOptionsInit { external set offsetRay(XRRay value); external XRRay get offsetRay; } - -@JS() -@staticInterop -@anonymous -class XRTransientInputHitTestOptionsInit { +extension type XRTransientInputHitTestOptionsInit._(JSObject _) + implements JSObject { external factory XRTransientInputHitTestOptionsInit({ required String profile, JSArray entityTypes, XRRay offsetRay, }); -} -extension XRTransientInputHitTestOptionsInitExtension - on XRTransientInputHitTestOptionsInit { external set profile(String value); external String get profile; external set entityTypes(JSArray value); @@ -51,56 +39,28 @@ extension XRTransientInputHitTestOptionsInitExtension external set offsetRay(XRRay value); external XRRay get offsetRay; } - -@JS('XRHitTestSource') -@staticInterop -class XRHitTestSource {} - -extension XRHitTestSourceExtension on XRHitTestSource { +extension type XRHitTestSource._(JSObject _) implements JSObject { external void cancel(); } - -@JS('XRTransientInputHitTestSource') -@staticInterop -class XRTransientInputHitTestSource {} - -extension XRTransientInputHitTestSourceExtension - on XRTransientInputHitTestSource { +extension type XRTransientInputHitTestSource._(JSObject _) implements JSObject { external void cancel(); } - -@JS('XRHitTestResult') -@staticInterop -class XRHitTestResult {} - -extension XRHitTestResultExtension on XRHitTestResult { +extension type XRHitTestResult._(JSObject _) implements JSObject { external JSPromise createAnchor(); external XRPose? getPose(XRSpace baseSpace); } - -@JS('XRTransientInputHitTestResult') -@staticInterop -class XRTransientInputHitTestResult {} - -extension XRTransientInputHitTestResultExtension - on XRTransientInputHitTestResult { +extension type XRTransientInputHitTestResult._(JSObject _) implements JSObject { external XRInputSource get inputSource; external JSArray get results; } - -@JS() -@staticInterop -@anonymous -class XRRayDirectionInit { +extension type XRRayDirectionInit._(JSObject _) implements JSObject { external factory XRRayDirectionInit({ num x, num y, num z, num w, }); -} -extension XRRayDirectionInitExtension on XRRayDirectionInit { external set x(num value); external num get x; external set y(num value); @@ -110,17 +70,12 @@ extension XRRayDirectionInitExtension on XRRayDirectionInit { external set w(num value); external num get w; } - -@JS('XRRay') -@staticInterop -class XRRay { +extension type XRRay._(JSObject _) implements JSObject { external factory XRRay([ JSObject originOrTransform, XRRayDirectionInit direction, ]); -} -extension XRRayExtension on XRRay { external DOMPointReadOnly get origin; external DOMPointReadOnly get direction; external JSFloat32Array get matrix; diff --git a/lib/src/dom/webxr_lighting_estimation.dart b/lib/src/dom/webxr_lighting_estimation.dart index f1325b9a..e9836544 100644 --- a/lib/src/dom/webxr_lighting_estimation.dart +++ b/lib/src/dom/webxr_lighting_estimation.dart @@ -12,35 +12,19 @@ import 'html.dart'; import 'webxr.dart'; typedef XRReflectionFormat = String; - -@JS('XRLightProbe') -@staticInterop -class XRLightProbe implements EventTarget {} - -extension XRLightProbeExtension on XRLightProbe { +extension type XRLightProbe._(JSObject _) implements EventTarget, JSObject { external XRSpace get probeSpace; external set onreflectionchange(EventHandler value); external EventHandler get onreflectionchange; } - -@JS('XRLightEstimate') -@staticInterop -class XRLightEstimate {} - -extension XRLightEstimateExtension on XRLightEstimate { +extension type XRLightEstimate._(JSObject _) implements JSObject { external JSFloat32Array get sphericalHarmonicsCoefficients; external DOMPointReadOnly get primaryLightDirection; external DOMPointReadOnly get primaryLightIntensity; } - -@JS() -@staticInterop -@anonymous -class XRLightProbeInit { +extension type XRLightProbeInit._(JSObject _) implements JSObject { external factory XRLightProbeInit({XRReflectionFormat reflectionFormat}); -} -extension XRLightProbeInitExtension on XRLightProbeInit { external set reflectionFormat(XRReflectionFormat value); external XRReflectionFormat get reflectionFormat; } diff --git a/lib/src/dom/webxrlayers.dart b/lib/src/dom/webxrlayers.dart index 88d86da7..b8b15c3b 100644 --- a/lib/src/dom/webxrlayers.dart +++ b/lib/src/dom/webxrlayers.dart @@ -18,12 +18,7 @@ import 'webxr_lighting_estimation.dart'; typedef XRLayerLayout = String; typedef XRLayerQuality = String; typedef XRTextureType = String; - -@JS('XRCompositionLayer') -@staticInterop -class XRCompositionLayer implements XRLayer {} - -extension XRCompositionLayerExtension on XRCompositionLayer { +extension type XRCompositionLayer._(JSObject _) implements XRLayer, JSObject { external void destroy(); external XRLayerLayout get layout; external set blendTextureSourceAlpha(bool value); @@ -37,12 +32,8 @@ extension XRCompositionLayerExtension on XRCompositionLayer { external XRLayerQuality get quality; external bool get needsRedraw; } - -@JS('XRProjectionLayer') -@staticInterop -class XRProjectionLayer implements XRCompositionLayer {} - -extension XRProjectionLayerExtension on XRProjectionLayer { +extension type XRProjectionLayer._(JSObject _) + implements XRCompositionLayer, JSObject { external int get textureWidth; external int get textureHeight; external int get textureArrayLength; @@ -52,12 +43,8 @@ extension XRProjectionLayerExtension on XRProjectionLayer { external set deltaPose(XRRigidTransform? value); external XRRigidTransform? get deltaPose; } - -@JS('XRQuadLayer') -@staticInterop -class XRQuadLayer implements XRCompositionLayer {} - -extension XRQuadLayerExtension on XRQuadLayer { +extension type XRQuadLayer._(JSObject _) + implements XRCompositionLayer, JSObject { external set space(XRSpace value); external XRSpace get space; external set transform(XRRigidTransform value); @@ -69,12 +56,8 @@ extension XRQuadLayerExtension on XRQuadLayer { external set onredraw(EventHandler value); external EventHandler get onredraw; } - -@JS('XRCylinderLayer') -@staticInterop -class XRCylinderLayer implements XRCompositionLayer {} - -extension XRCylinderLayerExtension on XRCylinderLayer { +extension type XRCylinderLayer._(JSObject _) + implements XRCompositionLayer, JSObject { external set space(XRSpace value); external XRSpace get space; external set transform(XRRigidTransform value); @@ -88,12 +71,8 @@ extension XRCylinderLayerExtension on XRCylinderLayer { external set onredraw(EventHandler value); external EventHandler get onredraw; } - -@JS('XREquirectLayer') -@staticInterop -class XREquirectLayer implements XRCompositionLayer {} - -extension XREquirectLayerExtension on XREquirectLayer { +extension type XREquirectLayer._(JSObject _) + implements XRCompositionLayer, JSObject { external set space(XRSpace value); external XRSpace get space; external set transform(XRRigidTransform value); @@ -109,12 +88,8 @@ extension XREquirectLayerExtension on XREquirectLayer { external set onredraw(EventHandler value); external EventHandler get onredraw; } - -@JS('XRCubeLayer') -@staticInterop -class XRCubeLayer implements XRCompositionLayer {} - -extension XRCubeLayerExtension on XRCubeLayer { +extension type XRCubeLayer._(JSObject _) + implements XRCompositionLayer, JSObject { external set space(XRSpace value); external XRSpace get space; external set orientation(DOMPointReadOnly value); @@ -122,20 +97,10 @@ extension XRCubeLayerExtension on XRCubeLayer { external set onredraw(EventHandler value); external EventHandler get onredraw; } - -@JS('XRSubImage') -@staticInterop -class XRSubImage {} - -extension XRSubImageExtension on XRSubImage { +extension type XRSubImage._(JSObject _) implements JSObject { external XRViewport get viewport; } - -@JS('XRWebGLSubImage') -@staticInterop -class XRWebGLSubImage implements XRSubImage {} - -extension XRWebGLSubImageExtension on XRWebGLSubImage { +extension type XRWebGLSubImage._(JSObject _) implements XRSubImage, JSObject { external WebGLTexture get colorTexture; external WebGLTexture? get depthStencilTexture; external WebGLTexture? get motionVectorTexture; @@ -147,11 +112,7 @@ extension XRWebGLSubImageExtension on XRWebGLSubImage { external int? get motionVectorTextureWidth; external int? get motionVectorTextureHeight; } - -@JS() -@staticInterop -@anonymous -class XRProjectionLayerInit { +extension type XRProjectionLayerInit._(JSObject _) implements JSObject { external factory XRProjectionLayerInit({ XRTextureType textureType, GLenum colorFormat, @@ -159,9 +120,7 @@ class XRProjectionLayerInit { num scaleFactor, bool clearOnAccess, }); -} -extension XRProjectionLayerInitExtension on XRProjectionLayerInit { external set textureType(XRTextureType value); external XRTextureType get textureType; external set colorFormat(GLenum value); @@ -173,11 +132,7 @@ extension XRProjectionLayerInitExtension on XRProjectionLayerInit { external set clearOnAccess(bool value); external bool get clearOnAccess; } - -@JS() -@staticInterop -@anonymous -class XRLayerInit { +extension type XRLayerInit._(JSObject _) implements JSObject { external factory XRLayerInit({ required XRSpace space, GLenum colorFormat, @@ -189,9 +144,7 @@ class XRLayerInit { bool isStatic, bool clearOnAccess, }); -} -extension XRLayerInitExtension on XRLayerInit { external set space(XRSpace value); external XRSpace get space; external set colorFormat(GLenum value); @@ -211,20 +164,14 @@ extension XRLayerInitExtension on XRLayerInit { external set clearOnAccess(bool value); external bool get clearOnAccess; } - -@JS() -@staticInterop -@anonymous -class XRQuadLayerInit implements XRLayerInit { +extension type XRQuadLayerInit._(JSObject _) implements XRLayerInit, JSObject { external factory XRQuadLayerInit({ XRTextureType textureType, XRRigidTransform? transform, num width, num height, }); -} -extension XRQuadLayerInitExtension on XRQuadLayerInit { external set textureType(XRTextureType value); external XRTextureType get textureType; external set transform(XRRigidTransform? value); @@ -234,11 +181,8 @@ extension XRQuadLayerInitExtension on XRQuadLayerInit { external set height(num value); external num get height; } - -@JS() -@staticInterop -@anonymous -class XRCylinderLayerInit implements XRLayerInit { +extension type XRCylinderLayerInit._(JSObject _) + implements XRLayerInit, JSObject { external factory XRCylinderLayerInit({ XRTextureType textureType, XRRigidTransform? transform, @@ -246,9 +190,7 @@ class XRCylinderLayerInit implements XRLayerInit { num centralAngle, num aspectRatio, }); -} -extension XRCylinderLayerInitExtension on XRCylinderLayerInit { external set textureType(XRTextureType value); external XRTextureType get textureType; external set transform(XRRigidTransform? value); @@ -260,11 +202,8 @@ extension XRCylinderLayerInitExtension on XRCylinderLayerInit { external set aspectRatio(num value); external num get aspectRatio; } - -@JS() -@staticInterop -@anonymous -class XREquirectLayerInit implements XRLayerInit { +extension type XREquirectLayerInit._(JSObject _) + implements XRLayerInit, JSObject { external factory XREquirectLayerInit({ XRTextureType textureType, XRRigidTransform? transform, @@ -273,9 +212,7 @@ class XREquirectLayerInit implements XRLayerInit { num upperVerticalAngle, num lowerVerticalAngle, }); -} -extension XREquirectLayerInitExtension on XREquirectLayerInit { external set textureType(XRTextureType value); external XRTextureType get textureType; external set transform(XRRigidTransform? value); @@ -289,29 +226,18 @@ extension XREquirectLayerInitExtension on XREquirectLayerInit { external set lowerVerticalAngle(num value); external num get lowerVerticalAngle; } - -@JS() -@staticInterop -@anonymous -class XRCubeLayerInit implements XRLayerInit { +extension type XRCubeLayerInit._(JSObject _) implements XRLayerInit, JSObject { external factory XRCubeLayerInit({DOMPointReadOnly? orientation}); -} -extension XRCubeLayerInitExtension on XRCubeLayerInit { external set orientation(DOMPointReadOnly? value); external DOMPointReadOnly? get orientation; } - -@JS('XRWebGLBinding') -@staticInterop -class XRWebGLBinding { +extension type XRWebGLBinding._(JSObject _) implements JSObject { external factory XRWebGLBinding( XRSession session, XRWebGLRenderingContext context, ); -} -extension XRWebGLBindingExtension on XRWebGLBinding { external WebGLTexture? getCameraImage(XRCamera camera); external XRWebGLDepthInformation? getDepthInformation(XRView view); external WebGLTexture? getReflectionCubeMap(XRLightProbe lightProbe); @@ -333,19 +259,13 @@ extension XRWebGLBindingExtension on XRWebGLBinding { external num get nativeProjectionScaleFactor; external bool get usesDepthValues; } - -@JS() -@staticInterop -@anonymous -class XRMediaLayerInit { +extension type XRMediaLayerInit._(JSObject _) implements JSObject { external factory XRMediaLayerInit({ required XRSpace space, XRLayerLayout layout, bool invertStereo, }); -} -extension XRMediaLayerInitExtension on XRMediaLayerInit { external set space(XRSpace value); external XRSpace get space; external set layout(XRLayerLayout value); @@ -353,19 +273,14 @@ extension XRMediaLayerInitExtension on XRMediaLayerInit { external set invertStereo(bool value); external bool get invertStereo; } - -@JS() -@staticInterop -@anonymous -class XRMediaQuadLayerInit implements XRMediaLayerInit { +extension type XRMediaQuadLayerInit._(JSObject _) + implements XRMediaLayerInit, JSObject { external factory XRMediaQuadLayerInit({ XRRigidTransform? transform, num? width, num? height, }); -} -extension XRMediaQuadLayerInitExtension on XRMediaQuadLayerInit { external set transform(XRRigidTransform? value); external XRRigidTransform? get transform; external set width(num? value); @@ -373,20 +288,15 @@ extension XRMediaQuadLayerInitExtension on XRMediaQuadLayerInit { external set height(num? value); external num? get height; } - -@JS() -@staticInterop -@anonymous -class XRMediaCylinderLayerInit implements XRMediaLayerInit { +extension type XRMediaCylinderLayerInit._(JSObject _) + implements XRMediaLayerInit, JSObject { external factory XRMediaCylinderLayerInit({ XRRigidTransform? transform, num radius, num centralAngle, num? aspectRatio, }); -} -extension XRMediaCylinderLayerInitExtension on XRMediaCylinderLayerInit { external set transform(XRRigidTransform? value); external XRRigidTransform? get transform; external set radius(num value); @@ -396,11 +306,8 @@ extension XRMediaCylinderLayerInitExtension on XRMediaCylinderLayerInit { external set aspectRatio(num? value); external num? get aspectRatio; } - -@JS() -@staticInterop -@anonymous -class XRMediaEquirectLayerInit implements XRMediaLayerInit { +extension type XRMediaEquirectLayerInit._(JSObject _) + implements XRMediaLayerInit, JSObject { external factory XRMediaEquirectLayerInit({ XRRigidTransform? transform, num radius, @@ -408,9 +315,7 @@ class XRMediaEquirectLayerInit implements XRMediaLayerInit { num upperVerticalAngle, num lowerVerticalAngle, }); -} -extension XRMediaEquirectLayerInitExtension on XRMediaEquirectLayerInit { external set transform(XRRigidTransform? value); external XRRigidTransform? get transform; external set radius(num value); @@ -422,14 +327,9 @@ extension XRMediaEquirectLayerInitExtension on XRMediaEquirectLayerInit { external set lowerVerticalAngle(num value); external num get lowerVerticalAngle; } - -@JS('XRMediaBinding') -@staticInterop -class XRMediaBinding { +extension type XRMediaBinding._(JSObject _) implements JSObject { external factory XRMediaBinding(XRSession session); -} -extension XRMediaBindingExtension on XRMediaBinding { external XRQuadLayer createQuadLayer( HTMLVideoElement video, [ XRMediaQuadLayerInit init, @@ -443,28 +343,17 @@ extension XRMediaBindingExtension on XRMediaBinding { XRMediaEquirectLayerInit init, ]); } - -@JS('XRLayerEvent') -@staticInterop -class XRLayerEvent implements Event { +extension type XRLayerEvent._(JSObject _) implements Event, JSObject { external factory XRLayerEvent( String type, XRLayerEventInit eventInitDict, ); -} -extension XRLayerEventExtension on XRLayerEvent { external XRLayer get layer; } - -@JS() -@staticInterop -@anonymous -class XRLayerEventInit implements EventInit { +extension type XRLayerEventInit._(JSObject _) implements EventInit, JSObject { external factory XRLayerEventInit({required XRLayer layer}); -} -extension XRLayerEventInitExtension on XRLayerEventInit { external set layer(XRLayer value); external XRLayer get layer; } diff --git a/lib/src/dom/window_controls_overlay.dart b/lib/src/dom/window_controls_overlay.dart index 6d06094d..05acbfeb 100644 --- a/lib/src/dom/window_controls_overlay.dart +++ b/lib/src/dom/window_controls_overlay.dart @@ -10,44 +10,30 @@ import 'dom.dart'; import 'geometry.dart'; import 'html.dart'; -@JS('WindowControlsOverlay') -@staticInterop -class WindowControlsOverlay implements EventTarget {} - -extension WindowControlsOverlayExtension on WindowControlsOverlay { +extension type WindowControlsOverlay._(JSObject _) + implements EventTarget, JSObject { external DOMRect getTitlebarAreaRect(); external bool get visible; external set ongeometrychange(EventHandler value); external EventHandler get ongeometrychange; } - -@JS('WindowControlsOverlayGeometryChangeEvent') -@staticInterop -class WindowControlsOverlayGeometryChangeEvent implements Event { +extension type WindowControlsOverlayGeometryChangeEvent._(JSObject _) + implements Event, JSObject { external factory WindowControlsOverlayGeometryChangeEvent( String type, WindowControlsOverlayGeometryChangeEventInit eventInitDict, ); -} -extension WindowControlsOverlayGeometryChangeEventExtension - on WindowControlsOverlayGeometryChangeEvent { external DOMRect get titlebarAreaRect; external bool get visible; } - -@JS() -@staticInterop -@anonymous -class WindowControlsOverlayGeometryChangeEventInit implements EventInit { +extension type WindowControlsOverlayGeometryChangeEventInit._(JSObject _) + implements EventInit, JSObject { external factory WindowControlsOverlayGeometryChangeEventInit({ required DOMRect titlebarAreaRect, bool visible, }); -} -extension WindowControlsOverlayGeometryChangeEventInitExtension - on WindowControlsOverlayGeometryChangeEventInit { external set titlebarAreaRect(DOMRect value); external DOMRect get titlebarAreaRect; external set visible(bool value); diff --git a/lib/src/dom/window_management.dart b/lib/src/dom/window_management.dart index 0843d0f3..d70884d9 100644 --- a/lib/src/dom/window_management.dart +++ b/lib/src/dom/window_management.dart @@ -10,11 +10,7 @@ import 'cssom_view.dart'; import 'dom.dart'; import 'html.dart'; -@JS('ScreenDetails') -@staticInterop -class ScreenDetails implements EventTarget {} - -extension ScreenDetailsExtension on ScreenDetails { +extension type ScreenDetails._(JSObject _) implements EventTarget, JSObject { external JSArray get screens; external ScreenDetailed get currentScreen; external set onscreenschange(EventHandler value); @@ -22,12 +18,7 @@ extension ScreenDetailsExtension on ScreenDetails { external set oncurrentscreenchange(EventHandler value); external EventHandler get oncurrentscreenchange; } - -@JS('ScreenDetailed') -@staticInterop -class ScreenDetailed implements Screen {} - -extension ScreenDetailedExtension on ScreenDetailed { +extension type ScreenDetailed._(JSObject _) implements Screen, JSObject { external int get availLeft; external int get availTop; external int get left; diff --git a/lib/src/dom/xhr.dart b/lib/src/dom/xhr.dart index 19628dae..ec4fe97d 100644 --- a/lib/src/dom/xhr.dart +++ b/lib/src/dom/xhr.dart @@ -13,12 +13,8 @@ import 'trust_token_api.dart'; typedef FormDataEntryValue = JSAny; typedef XMLHttpRequestResponseType = String; - -@JS('XMLHttpRequestEventTarget') -@staticInterop -class XMLHttpRequestEventTarget implements EventTarget {} - -extension XMLHttpRequestEventTargetExtension on XMLHttpRequestEventTarget { +extension type XMLHttpRequestEventTarget._(JSObject _) + implements EventTarget, JSObject { external set onloadstart(EventHandler value); external EventHandler get onloadstart; external set onprogress(EventHandler value); @@ -34,14 +30,10 @@ extension XMLHttpRequestEventTargetExtension on XMLHttpRequestEventTarget { external set onloadend(EventHandler value); external EventHandler get onloadend; } - -@JS('XMLHttpRequestUpload') -@staticInterop -class XMLHttpRequestUpload implements XMLHttpRequestEventTarget {} - -@JS('XMLHttpRequest') -@staticInterop -class XMLHttpRequest implements XMLHttpRequestEventTarget { +extension type XMLHttpRequestUpload._(JSObject _) + implements XMLHttpRequestEventTarget, JSObject {} +extension type XMLHttpRequest._(JSObject _) + implements XMLHttpRequestEventTarget, JSObject { external factory XMLHttpRequest(); external static int get UNSENT; @@ -49,9 +41,6 @@ class XMLHttpRequest implements XMLHttpRequestEventTarget { external static int get HEADERS_RECEIVED; external static int get LOADING; external static int get DONE; -} - -extension XMLHttpRequestExtension on XMLHttpRequest { external void setAttributionReporting( AttributionReportingRequestOptions options); external void setPrivateToken(PrivateToken privateToken); @@ -88,17 +77,12 @@ extension XMLHttpRequestExtension on XMLHttpRequest { external String get responseText; external Document? get responseXML; } - -@JS('FormData') -@staticInterop -class FormData { +extension type FormData._(JSObject _) implements JSObject { external factory FormData([ HTMLFormElement form, HTMLElement? submitter, ]); -} -extension FormDataExtension on FormData { external void append( String name, JSAny blobValueOrValue, [ @@ -114,34 +98,23 @@ extension FormDataExtension on FormData { String filename, ]); } - -@JS('ProgressEvent') -@staticInterop -class ProgressEvent implements Event { +extension type ProgressEvent._(JSObject _) implements Event, JSObject { external factory ProgressEvent( String type, [ ProgressEventInit eventInitDict, ]); -} -extension ProgressEventExtension on ProgressEvent { external bool get lengthComputable; external int get loaded; external int get total; } - -@JS() -@staticInterop -@anonymous -class ProgressEventInit implements EventInit { +extension type ProgressEventInit._(JSObject _) implements EventInit, JSObject { external factory ProgressEventInit({ bool lengthComputable, int loaded, int total, }); -} -extension ProgressEventInitExtension on ProgressEventInit { external set lengthComputable(bool value); external bool get lengthComputable; external set loaded(int value); diff --git a/lib/src/helpers/lists.dart b/lib/src/helpers/lists.dart index 46fb7c43..2ad39873 100644 --- a/lib/src/helpers/lists.dart +++ b/lib/src/helpers/lists.dart @@ -4,7 +4,7 @@ import 'dart:collection'; -import '../../web.dart' show Touch, TouchList, TouchListExtension; +import '../../web.dart' show Touch, TouchList; /// A wrapper to present a [TouchList] as a `List`. class TouchListWrapper extends Object diff --git a/pubspec.yaml b/pubspec.yaml index 6b31762a..6953be76 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,16 +4,16 @@ description: Lightweight browser API bindings built around JS static interop. repository: https://github.com/dart-lang/web environment: - sdk: ^3.2.0 + sdk: ^3.3.0-76.0.dev dev_dependencies: analyzer: ^6.3.0 args: ^2.4.0 build_runner: ^2.4.0 build_web_compilers: ^4.0.7 - code_builder: ^4.9.0 + code_builder: ^4.10.0 dart_flutter_team_lints: ^2.0.0 - dart_style: ^2.2.4 + dart_style: ^2.3.4 io: ^1.0.4 path: ^1.8.3 test: ^1.22.2 diff --git a/tool/generator/dart_main.dart b/tool/generator/dart_main.dart index c74a3e69..6f6f6797 100644 --- a/tool/generator/dart_main.dart +++ b/tool/generator/dart_main.dart @@ -44,5 +44,6 @@ String _emitLibrary(code.Library library) { ); final source = library.accept(emitter); - return DartFormatter().format(source.toString()); + return DartFormatter(experimentFlags: [inlineClassExperimentFlag]) + .format(source.toString()); } diff --git a/tool/generator/translator.dart b/tool/generator/translator.dart index d87a117b..5bb2a54e 100644 --- a/tool/generator/translator.dart +++ b/tool/generator/translator.dart @@ -289,7 +289,8 @@ class _OverridableOperation extends _OverridableMember { _getRawType(operation.idlType), operation.arguments); void update(idl.Operation that) { - final thisName = name.jsOverride ?? name.name; + final jsOverride = name.jsOverride; + final thisName = jsOverride.isNotEmpty ? jsOverride : name.name; assert(thisName == that.name && isStatic == (that.special == 'static')); returnType.update(that.idlType); _processParameters(that.arguments); @@ -311,6 +312,7 @@ class _PartialInterfacelike { final Map staticOperations = {}; final List members = []; final List staticMembers = []; + final List extensionMembers = []; _OverridableConstructor? constructor; _PartialInterfacelike._(this.name, this.type, this.inheritance); @@ -343,7 +345,17 @@ class _PartialInterfacelike { if (attribute.special == 'static') { staticMembers.add(member); } else { - members.add(member); + if (name == 'SVGElement' && attribute.name == 'className') { + // `SVGElement.className` returns an `SVGAnimatedString`, but its + // corresponding setter `Element.className` takes a `String`. As + // these two types are incompatible, we need to move this member + // to an extension instead. As it shares the same name as the + // getter `Element.className`, users will need to apply the + // extension explicitly. + extensionMembers.add(member); + } else { + members.add(member); + } } break; case 'operation': @@ -406,13 +418,13 @@ class _PartialInterfacelike { class _MemberName { final String name; - final String? jsOverride; + final String jsOverride; _MemberName._(this.name, this.jsOverride); - factory _MemberName(String name, [String? jsOverride]) { + factory _MemberName(String name, [String jsOverride = '']) { if (bannedNames.contains(name)) { - jsOverride ??= name; + if (jsOverride.isEmpty) jsOverride = name; name = '${name}_'; } return _MemberName._(name, jsOverride); @@ -502,7 +514,7 @@ class Translator { code.Method _topLevelGetter(_RawType type, String getterName) => code.Method((b) => b - ..annotations.addAll(_jsOverride('')) + ..annotations.addAll(_jsOverride('', alwaysEmit: true)) ..external = true ..returns = _typeReference(type) ..name = getterName @@ -585,6 +597,9 @@ class Translator { constructor, (requiredParameters, optionalParameters) => code.Constructor((b) => b ..external = true + // TODO(srujzs): Should we generate generative or factory + // constructors? With `@staticInterop`, factories were needed, but + // extension types have no such limitation. ..factory = true ..requiredParameters.addAll(requiredParameters) ..optionalParameters.addAll(optionalParameters))); @@ -607,18 +622,24 @@ class Translator { return code.Constructor((b) => b ..optionalParameters.addAll(optionalParameters) ..external = true + // TODO(srujzs): Should we generate generative or factory constructors? + // With `@staticInterop`, factories were needed, but extension types have + // no such limitation. ..factory = true); } - List _jsOverride(String? jsOverride, - {bool staticInterop = false, bool objectLiteral = false}) => + // Generates an `@JS` annotation if the given [jsOverride] is not empty or if + // [alwaysEmit] is true. + // + // The value of the annotation is either omitted or [jsOverride] if it isn't + // empty. + List _jsOverride(String jsOverride, + {bool alwaysEmit = false}) => [ - if (jsOverride != null) + if (jsOverride.isNotEmpty || alwaysEmit) code.refer('JS', 'dart:js_interop').call([ if (jsOverride.isNotEmpty) code.literalString(jsOverride), ]), - if (staticInterop) code.refer('staticInterop'), - if (objectLiteral) code.refer('anonymous'), ]; code.Method _operation(_OverridableOperation operation) { @@ -721,17 +742,6 @@ class Translator { List _operations(List<_OverridableOperation> operations) => [for (final operation in operations) _operation(operation)]; - code.Extension _extension(_RawType type, - List<_OverridableOperation> operations, List members) => - code.Extension((b) => b - ..name = '${type.type.snakeToPascal}Extension' - ..on = _typeReference(type) - ..methods.addAll(_operations(operations) - .followedBy(_members(members)) - .followedBy(type.type == 'CSSStyleDeclaration' - ? _cssStyleDeclarationProperties() - : []))); - List _cssStyleDeclarationProperties() => [ for (final style in _cssStyleDeclarations) ..._getterSetter( @@ -741,33 +751,50 @@ class Translator { readOnly: false), ]; - code.Class _class({ + code.Extension _extension( + {required _RawType type, + required List extensionMembers}) => + code.Extension((b) => b + ..name = '${type.type.snakeToPascal}Extension' + ..on = _typeReference(type) + ..methods.addAll(_members(extensionMembers))); + + code.ExtensionType _extensionType({ required String jsName, required String dartClassName, required List implements, required _OverridableConstructor? constructor, + required List<_OverridableOperation> operations, required List<_OverridableOperation> staticOperations, required List members, required List staticMembers, - required bool isAbstract, required bool isObjectLiteral, - }) => - code.Class( - (b) => b - ..annotations.addAll(_jsOverride(isObjectLiteral ? '' : jsName, - staticInterop: true, objectLiteral: isObjectLiteral)) - ..name = dartClassName - ..implements.addAll(implements - .map((interface) => _typeReference(_RawType(interface, false)))) - ..constructors.addAll(isObjectLiteral - ? [_objectLiteral(members)] - : constructor != null - ? [_constructor(constructor)] - : []) - ..methods.addAll( - _operations(staticOperations).followedBy(_members(staticMembers))) - ..abstract = isAbstract, - ); + }) { + final jsObject = _typeReference(_RawType('JSObject', false)); + return code.ExtensionType((b) => b + ..annotations.addAll( + _jsOverride(isObjectLiteral || jsName == dartClassName ? '' : jsName)) + ..name = dartClassName + ..primaryConstructorName = '_' + ..representationDeclaration = code.RepresentationDeclaration((b) => b + ..name = '_' + ..declaredRepresentationType = jsObject) + ..implements.addAll(implements + .map((interface) => _typeReference(_RawType(interface, false))) + .followedBy([jsObject])) + ..constructors.addAll(isObjectLiteral + ? [_objectLiteral(members)] + : constructor != null + ? [_constructor(constructor)] + : []) + ..methods.addAll(_operations(staticOperations) + .followedBy(_members(staticMembers)) + .followedBy(_operations(operations)) + .followedBy(_members(members)) + .followedBy(dartClassName == 'CSSStyleDeclaration' + ? _cssStyleDeclarationProperties() + : []))); + } List _interfacelike(idl.Interfacelike idlInterfacelike) { final name = idlInterfacelike.name; @@ -787,32 +814,27 @@ class Translator { final operations = interfacelike.operations.values.toList(); final staticOperations = interfacelike.staticOperations.values.toList(); final members = interfacelike.members; + final extensionMembers = interfacelike.extensionMembers; final implements = [ if (interfacelike.inheritance != null) interfacelike.inheritance! ]; - // TODO(srujzs): Add back implements clause once we move to extension types. - // For now, we don't emit this so that `dart:js_interop` can move to - // extension types. - // // All non-namespace root classes must inherit from `JSObject`. - // if (implements.isEmpty && !isNamespace) { - // implements.add('JSObject'); - // } + final rawType = _RawType(dartClassName, false); + return [ - if (getterName != null) - _topLevelGetter(_RawType(dartClassName, false), getterName), - _class( + if (getterName != null) _topLevelGetter(rawType, getterName), + _extensionType( jsName: jsName, dartClassName: dartClassName, implements: implements, constructor: interfacelike.constructor, + operations: operations, staticOperations: staticOperations, - members: interfacelike.members, + members: members, staticMembers: interfacelike.staticMembers, - isAbstract: isNamespace, isObjectLiteral: isDictionary), - if (operations.isNotEmpty || members.isNotEmpty) - _extension(_RawType(dartClassName, false), operations, members) + if (extensionMembers.isNotEmpty) + _extension(type: rawType, extensionMembers: extensionMembers) ]; } diff --git a/tool/generator/util.dart b/tool/generator/util.dart index a0cea78b..3e57ba2f 100644 --- a/tool/generator/util.dart +++ b/tool/generator/util.dart @@ -29,6 +29,9 @@ final List licenseHeader = [ 'BSD-style license that can be found in the LICENSE file.', ]; +// Needed for dart_style until 2.3.5 is published. +const String inlineClassExperimentFlag = 'inline-class'; + const String generatedFileDisclaimer = 'Generated from Web IDL definitions.'; extension StringExt on String { diff --git a/tool/update_bindings.dart b/tool/update_bindings.dart index 78326c89..a6001b0d 100644 --- a/tool/update_bindings.dart +++ b/tool/update_bindings.dart @@ -178,38 +178,25 @@ Future _generateJsTypeSupertypes() async { final jsTypeSupertypes = SplayTreeMap(); for (final name in definedNames.keys) { final element = definedNames[name]; - if (element is TypeDefiningElement) { - // TODO(srujzs): This contains code that handles the SDK before and after - // the migration of JS types to extension types. Once the changes to - // migrate to extension types hit the dev branch, we should remove some of - // the old code. - void storeSupertypes(InterfaceElement element) { - if (!_isInJsTypesOrJsInterop(element)) return; - - String? parentJsType; - final supertype = element.supertype; - final immediateSupertypes = [ - if (supertype != null) supertype, - ...element.interfaces, - ]..removeWhere((supertype) => supertype.isDartCoreObject); - // We should have at most one non-trivial supertype. - assert(immediateSupertypes.length <= 1); - for (final supertype in immediateSupertypes) { - if (_isInJsTypesOrJsInterop(supertype.element)) { - parentJsType = "'${supertype.element.name}'"; - } + if (element is ExtensionTypeElement) { + if (!_isInJsTypesOrJsInterop(element)) return; + + String? parentJsType; + final supertype = element.supertype; + final immediateSupertypes = [ + if (supertype != null) supertype, + ...element.interfaces, + ]..removeWhere((supertype) => supertype.isDartCoreObject); + // We should have at most one non-trivial supertype. + assert(immediateSupertypes.length <= 1); + for (final supertype in immediateSupertypes) { + if (_isInJsTypesOrJsInterop(supertype.element)) { + parentJsType = "'${supertype.element.name}'"; } - // Ensure that the hierarchy forms a tree. - assert((parentJsType == null) == (name == 'JSAny')); - jsTypeSupertypes["'$name'"] = parentJsType; - } - - if (element is TypeAliasElement) { - final type = element.aliasedType; - if (type is InterfaceType) storeSupertypes(type.element); - } else if (element is InterfaceElement) { - storeSupertypes(element); } + // Ensure that the hierarchy forms a tree. + assert((parentJsType == null) == (name == 'JSAny')); + jsTypeSupertypes["'$name'"] = parentJsType; } }