blob: 62252daef43fe20c9b132fb152ab06cff2390b88 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:js_interop';
import 'dom.dart';
import 'hr_time.dart';
import 'html.dart';
import 'service_workers.dart';
import 'vibration.dart';
typedef NotificationPermissionCallback = JSFunction;
typedef NotificationPermission = String;
typedef NotificationDirection = String;
@JS('Notification')
@staticInterop
class Notification implements EventTarget {
external factory Notification(
String title, [
NotificationOptions options,
]);
external static JSPromise requestPermission(
[NotificationPermissionCallback deprecatedCallback]);
external static NotificationPermission get permission;
external static int get maxActions;
}
extension NotificationExtension on Notification {
external JSVoid close();
external set onclick(EventHandler value);
external EventHandler get onclick;
external set onshow(EventHandler value);
external EventHandler get onshow;
external set onerror(EventHandler value);
external EventHandler get onerror;
external set onclose(EventHandler value);
external EventHandler get onclose;
external String get title;
external NotificationDirection get dir;
external String get lang;
external String get body;
external String get tag;
external String get image;
external String get icon;
external String get badge;
external JSArray get vibrate;
external EpochTimeStamp get timestamp;
external bool get renotify;
external bool? get silent;
external bool get requireInteraction;
external JSAny? get data;
external JSArray get actions;
}
@JS()
@staticInterop
@anonymous
class NotificationOptions implements JSObject {
external factory NotificationOptions({
NotificationDirection dir,
String lang,
String body,
String tag,
String image,
String icon,
String badge,
VibratePattern vibrate,
EpochTimeStamp timestamp,
bool renotify,
bool? silent,
bool requireInteraction,
JSAny? data,
JSArray actions,
});
}
extension NotificationOptionsExtension on NotificationOptions {
external set dir(NotificationDirection value);
external NotificationDirection get dir;
external set lang(String value);
external String get lang;
external set body(String value);
external String get body;
external set tag(String value);
external String get tag;
external set image(String value);
external String get image;
external set icon(String value);
external String get icon;
external set badge(String value);
external String get badge;
external set vibrate(VibratePattern value);
external VibratePattern get vibrate;
external set timestamp(EpochTimeStamp value);
external EpochTimeStamp get timestamp;
external set renotify(bool value);
external bool get renotify;
external set silent(bool? value);
external bool? get silent;
external set requireInteraction(bool value);
external bool get requireInteraction;
external set data(JSAny? value);
external JSAny? get data;
external set actions(JSArray value);
external JSArray get actions;
}
@JS()
@staticInterop
@anonymous
class NotificationAction 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);
external String get title;
external set icon(String value);
external String get icon;
}
@JS()
@staticInterop
@anonymous
class GetNotificationOptions 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 {
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 {
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);
external String get action;
}