
import { registerCss } from '../../../../../../../css.js';
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
import * as notificationsActions from './media/notificationsActions.css';
import { NotificationsPosition } from '../../../common/notifications.js';
import { localize } from '../../../../nls.js';
import { Action } from '../../../../base/common/actions.js';
import { CLEAR_NOTIFICATION, CLEAR_ALL_NOTIFICATIONS, TOGGLE_DO_NOT_DISTURB_MODE, TOGGLE_DO_NOT_DISTURB_MODE_BY_SOURCE, HIDE_NOTIFICATIONS_CENTER, EXPAND_NOTIFICATION, COLLAPSE_NOTIFICATION } from './notificationsCommands.js';
import { ICommandService } from '../../../../platform/commands/common/commands.service.js';
import { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.service.js';
import { Codicon } from '../../../../base/common/codicons.js';
import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
import { ThemeIcon } from '../../../../base/common/themables.js';

registerCss(notificationsActions);
const clearIcon = registerIcon("notifications-clear", Codicon.close, ( localize(3722, "Icon for the clear action in notifications.")));
const clearAllIcon = registerIcon("notifications-clear-all", Codicon.clearAll, ( localize(3723, "Icon for the clear all action in notifications.")));
const hideIcon = registerIcon("notifications-hide", Codicon.chevronDown, ( localize(3724, "Icon for the hide action in notifications.")));
const hideUpIcon = registerIcon("notifications-hide-up", Codicon.chevronUp, ( localize(
    3725,
    "Icon for the hide action in notifications when positioned at the top."
)));
const expandIcon = registerIcon("notifications-expand", Codicon.chevronUp, ( localize(3726, "Icon for the expand action in notifications.")));
const expandDownIcon = registerIcon("notifications-expand-down", Codicon.chevronDown, ( localize(
    3727,
    "Icon for the expand action in notifications when the notification center is at the top."
)));
const collapseIcon = registerIcon("notifications-collapse", Codicon.chevronDown, ( localize(3728, "Icon for the collapse action in notifications.")));
const collapseUpIcon = registerIcon("notifications-collapse-up", Codicon.chevronUp, ( localize(
    3729,
    "Icon for the collapse action in notifications when the notification center is at the top."
)));
const configureIcon = registerIcon("notifications-configure", Codicon.gear, ( localize(3730, "Icon for the configure action in notifications.")));
const doNotDisturbIcon = registerIcon("notifications-do-not-disturb", Codicon.bellSlash, ( localize(3731, "Icon for the mute all action in notifications.")));
const positionIcon = registerIcon("notifications-position", Codicon.arrowSwap, ( localize(3732, "Icon for the position action in notifications.")));
function getNotificationExpandIcon(position) {
    return position === NotificationsPosition.TOP_RIGHT ? expandDownIcon : expandIcon;
}
function getNotificationCollapseIcon(position) {
    return position === NotificationsPosition.TOP_RIGHT ? collapseUpIcon : collapseIcon;
}
let ClearNotificationAction = class ClearNotificationAction extends Action {
    static {
        this.ID = CLEAR_NOTIFICATION;
    }
    static {
        this.LABEL = ( localize(3733, "Clear Notification"));
    }
    constructor(id, label, commandService) {
        super(id, label, ThemeIcon.asClassName(clearIcon));
        this.commandService = commandService;
    }
    async run(notification) {
        this.commandService.executeCommand(CLEAR_NOTIFICATION, notification);
    }
};
ClearNotificationAction = ( __decorate([( __param(2, ICommandService))], ClearNotificationAction));
let ClearAllNotificationsAction = class ClearAllNotificationsAction extends Action {
    static {
        this.ID = CLEAR_ALL_NOTIFICATIONS;
    }
    static {
        this.LABEL = ( localize(3734, "Clear All Notifications"));
    }
    constructor(id, label, commandService) {
        super(id, label, ThemeIcon.asClassName(clearAllIcon));
        this.commandService = commandService;
    }
    async run() {
        this.commandService.executeCommand(CLEAR_ALL_NOTIFICATIONS);
    }
};
ClearAllNotificationsAction = ( __decorate([( __param(2, ICommandService))], ClearAllNotificationsAction));
let ToggleDoNotDisturbAction = class ToggleDoNotDisturbAction extends Action {
    static {
        this.ID = TOGGLE_DO_NOT_DISTURB_MODE;
    }
    static {
        this.LABEL = ( localize(3735, "Toggle Do Not Disturb Mode"));
    }
    constructor(id, label, commandService) {
        super(id, label, ThemeIcon.asClassName(doNotDisturbIcon));
        this.commandService = commandService;
    }
    async run() {
        this.commandService.executeCommand(TOGGLE_DO_NOT_DISTURB_MODE);
    }
};
ToggleDoNotDisturbAction = ( __decorate([( __param(2, ICommandService))], ToggleDoNotDisturbAction));
let ToggleDoNotDisturbBySourceAction = class ToggleDoNotDisturbBySourceAction extends Action {
    static {
        this.ID = TOGGLE_DO_NOT_DISTURB_MODE_BY_SOURCE;
    }
    static {
        this.LABEL = ( localize(3736, "Toggle Do Not Disturb Mode By Source..."));
    }
    constructor(id, label, commandService) {
        super(id, label);
        this.commandService = commandService;
    }
    async run() {
        this.commandService.executeCommand(TOGGLE_DO_NOT_DISTURB_MODE_BY_SOURCE);
    }
};
ToggleDoNotDisturbBySourceAction = ( __decorate([( __param(2, ICommandService))], ToggleDoNotDisturbBySourceAction));
class ConfigureDoNotDisturbAction extends Action {
    static {
        this.ID = "workbench.action.configureDoNotDisturbMode";
    }
    static {
        this.LABEL = ( localize(3737, "Configure Do Not Disturb..."));
    }
    constructor(id, label) {
        super(id, label, ThemeIcon.asClassName(doNotDisturbIcon));
    }
}
class ConfigureNotificationsPositionAction extends Action {
    static {
        this.ID = "workbench.action.configureNotificationsPosition";
    }
    static {
        this.LABEL = ( localize(3738, "Configure Notifications Position..."));
    }
    constructor(id, label) {
        super(id, label, ThemeIcon.asClassName(positionIcon));
    }
}
let HideNotificationsCenterAction = class HideNotificationsCenterAction extends Action {
    static {
        this.ID = HIDE_NOTIFICATIONS_CENTER;
    }
    static {
        this.LABEL = ( localize(3739, "Hide Notifications"));
    }
    constructor(id, label, commandService) {
        super(id, label, ThemeIcon.asClassName(hideIcon));
        this.commandService = commandService;
    }
    async run() {
        this.commandService.executeCommand(HIDE_NOTIFICATIONS_CENTER);
    }
};
HideNotificationsCenterAction = ( __decorate([( __param(2, ICommandService))], HideNotificationsCenterAction));
let ExpandNotificationAction = class ExpandNotificationAction extends Action {
    static {
        this.ID = EXPAND_NOTIFICATION;
    }
    static {
        this.LABEL = ( localize(3740, "Expand Notification"));
    }
    constructor(id, label, commandService) {
        super(id, label, ThemeIcon.asClassName(expandIcon));
        this.commandService = commandService;
    }
    async run(notification) {
        this.commandService.executeCommand(EXPAND_NOTIFICATION, notification);
    }
};
ExpandNotificationAction = ( __decorate([( __param(2, ICommandService))], ExpandNotificationAction));
let CollapseNotificationAction = class CollapseNotificationAction extends Action {
    static {
        this.ID = COLLAPSE_NOTIFICATION;
    }
    static {
        this.LABEL = ( localize(3741, "Collapse Notification"));
    }
    constructor(id, label, commandService) {
        super(id, label, ThemeIcon.asClassName(collapseIcon));
        this.commandService = commandService;
    }
    async run(notification) {
        this.commandService.executeCommand(COLLAPSE_NOTIFICATION, notification);
    }
};
CollapseNotificationAction = ( __decorate([( __param(2, ICommandService))], CollapseNotificationAction));
class ConfigureNotificationAction extends Action {
    static {
        this.ID = "workbench.action.configureNotification";
    }
    static {
        this.LABEL = ( localize(3742, "More Actions..."));
    }
    constructor(id, label, notification) {
        super(id, label, ThemeIcon.asClassName(configureIcon));
        this.notification = notification;
    }
}
let CopyNotificationMessageAction = class CopyNotificationMessageAction extends Action {
    static {
        this.ID = "workbench.action.copyNotificationMessage";
    }
    static {
        this.LABEL = ( localize(3743, "Copy Text"));
    }
    constructor(id, label, clipboardService) {
        super(id, label);
        this.clipboardService = clipboardService;
    }
    run(notification) {
        return this.clipboardService.writeText(notification.message.raw);
    }
};
CopyNotificationMessageAction = ( __decorate([( __param(2, IClipboardService))], CopyNotificationMessageAction));

export { ClearAllNotificationsAction, ClearNotificationAction, CollapseNotificationAction, ConfigureDoNotDisturbAction, ConfigureNotificationAction, ConfigureNotificationsPositionAction, CopyNotificationMessageAction, ExpandNotificationAction, HideNotificationsCenterAction, ToggleDoNotDisturbAction, ToggleDoNotDisturbBySourceAction, getNotificationCollapseIcon, getNotificationExpandIcon, hideIcon, hideUpIcon, positionIcon };
