summaryrefslogtreecommitdiff
path: root/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js')
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js147
1 files changed, 0 insertions, 147 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js
deleted file mode 100644
index 32e3ba6..0000000
--- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/notification-box/lib/notification-box.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2014
- * @author Loic J. Duros lduros@member.fsf.org
- * @author Joshua Cornutt jcornutt@gmail.com
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const { Cc, Ci } = require("chrome");
-const { getMostRecentBrowserWindow } = require('sdk/window/utils');
-
-/* I haven't found this sort of validation functions in the SDK,
-except for the deprecated api-utils module. */
-let isString = function (str) {
- if ( !str ) return false;
- return typeof(str) == 'string' || str instanceof String;
-};
-
-let isArray = function (obj) {
- if ( !obj || typeof(obj) === 'undefined' ) return false;
- return Object.prototype.toString.call(obj) === '[object Array]';
-};
-
-let isObject = function(obj) {
- if ( !obj || typeof(obj) === 'undefined' ) return false;
- return obj instanceof Object;
-}
-
-let isInteger = function(val) {
- if ((undefined === val) || (null === val)) return false;
- return !isNaN(val);
-}
-
-let isFunction = function(obj) {
- if ( !obj || typeof(obj) === 'undefined' ) return false;
- return {}.toString.call(obj) === '[object Function]';
-}
-
-exports.NotificationBox = function (options) {
- options = options || {};
- let mainWindow = getMostRecentBrowserWindow();
- let nbObj = mainWindow.gBrowser.getNotificationBox();
- let priority = nbObj[PRIORITY.INFO_LOW],
- label = '',
- image = 'chrome://browser/skin/Info.png',
- value = '',
- persistence = 0,
- eventCallback = function(){},
- buttons = [];
-
- if (options.value && isString(options.value))
- value = options.value;
-
- // Set how many page changes the notification will remain active for.
- if ( options.persistence && isInteger(options.persistence) )
- persistence = options.persistence;
-
- // Set if the user wants to be notified when the notification closes
- if ( options.eventCallback && isFunction(options.eventCallback) )
- eventCallback = options.eventCallback;
-
- // Add label or create empty notification.
- if (options.label && isString(options.label))
- label = options.label;
-
- // Set priority of the notification (from INFO_LOW to CRITICAL_BLOCK)
- if (options.priority && options.priority in PRIORITY)
- priority = nbObj[PRIORITY[options.priority]];
-
- // Set a custom icon for the notification or use the stock info icon.
- if (options.image && isString(options.image))
- image = options.image;
-
- // Sanitize and format each notification button
- if ( isArray(options.buttons) )
- for (let i = 0, length = options.buttons.length; i < length; i++)
- buttons.push(NotificationButton(options.buttons[i]));
- else if ( isObject(options.buttons) )
- // If it's not an array of buttons, then it should be a single button.
- buttons.push(NotificationButton(options.buttons));
- else
- buttons = null;
-
- // Add a new notification to the notificationbox.
- var nObj = nbObj.appendNotification(label, value,
- image, priority, buttons, eventCallback);
-
- // Set how many page changes the notification will stay active for
- nObj.persistence = persistence;
-
- // Timeout for closing the notification automatically
- if( options.timeout && isInteger(options.timeout) ) {
- require('sdk/timers').setTimeout( function() {
- if( isFunction(nObj.close) )
- nObj.close();
- }, options.timeout );
- }
-
- // Expose both the NotificationBox and Notification itself
- return {'notificationbox': nbObj, 'notification': nObj};
-};
-
-
-// Notification button santizing function
-var NotificationButton = function (options) {
- options = options || {};
- let accessKey = '',
- onClick = function(){},
- label = "",
- popup = null, // no popup for now... maybe we can use a panel later.
- timeout = 0;
-
- if ( options.accessKey )
- accessKey = options.accessKey;
-
- if ( isFunction(options.onClick) )
- onClick = options.onClick;
-
- if ( options.label )
- label = options.label;
-
- if ( isInteger(options.timeout) )
- timeout = options.timeout;
-
- return {label: label,
- accessKey: accessKey,
- callback: onClick,
- popup: popup,
- timeout: timeout};
-};
-
-const PRIORITY = {
- 'INFO_LOW': 'PRIORITY_INFO_LOW',
- 'INFO_MEDIUM': 'PRIORITY_INFO_MEDIUM',
- 'INFO_HIGH': 'PRIORITY_INFO_HIGH',
- 'WARNING_LOW': 'PRIORITY_WARNING_LOW',
- 'WARNING_MEDIUM': 'PRIORITY_WARNING_MEDIUM',
- 'WARNING_HIGH': 'PRIORITY_WARNING_HIGH',
- 'CRITICAL_LOW': 'PRIORITY_CRITICAL_LOW',
- 'CRITICAL_MEDIUM': 'PRIORITY_CRITICAL_MEDIUM',
- 'CRITICAL_HIGH': 'PRIORITY_CRITICAL_HIGH',
- 'CRITICAL_BLOCK': 'PRIORITY_CRITICAL_BLOCK'
-};
-
-exports.PRIORITY = PRIORITY; \ No newline at end of file