pnotify-rails 1.2.2 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -5
- data/lib/pnotify-rails/railtie.rb +1 -1
- data/lib/pnotify-rails/version.rb +1 -1
- data/vendor/assets/javascripts/pnotify/index.js +7 -1
- data/vendor/assets/javascripts/pnotify/pnotify.buttons.js +132 -0
- data/vendor/assets/javascripts/pnotify/pnotify.callbacks.js +48 -0
- data/vendor/assets/javascripts/pnotify/pnotify.confirm.js +152 -0
- data/vendor/assets/javascripts/pnotify/pnotify.core.js +778 -0
- data/vendor/assets/javascripts/pnotify/pnotify.desktop.js +143 -0
- data/vendor/assets/javascripts/pnotify/pnotify.history.js +189 -0
- data/vendor/assets/javascripts/pnotify/pnotify.nonblock.js +151 -0
- data/vendor/assets/javascripts/pnotify/pnotify.reference.js +132 -0
- data/vendor/assets/stylesheets/pnotify/index.css +6 -0
- data/vendor/assets/stylesheets/pnotify/pnotify.buttons.css +4 -0
- data/vendor/assets/stylesheets/pnotify/pnotify.core.css +56 -0
- data/vendor/assets/stylesheets/pnotify/pnotify.history.css +33 -0
- data/vendor/assets/stylesheets/pnotify/pnotify.picon.css +11 -0
- metadata +33 -13
- data/.gitignore +0 -19
- data/Gemfile +0 -4
- data/Rakefile +0 -14
- data/pnotify-rails.gemspec +0 -19
- data/vendor/assets/javascripts/pnotify/jquery.pnotify.js +0 -937
- data/vendor/assets/stylesheets/jquery.pnotify.default.css +0 -93
- data/vendor/assets/stylesheets/jquery.pnotify.default.icons.css +0 -21
@@ -0,0 +1,143 @@
|
|
1
|
+
// Desktop
|
2
|
+
// Uses AMD or browser globals for jQuery.
|
3
|
+
(function (factory) {
|
4
|
+
if (typeof define === 'function' && define.amd) {
|
5
|
+
// AMD. Register as a module.
|
6
|
+
define('pnotify.desktop', ['jquery', 'pnotify'], factory);
|
7
|
+
} else {
|
8
|
+
// Browser globals
|
9
|
+
factory(jQuery, PNotify);
|
10
|
+
}
|
11
|
+
}(function($, PNotify){
|
12
|
+
var permission;
|
13
|
+
var notify = function(title, options){
|
14
|
+
// Memoize based on feature detection.
|
15
|
+
if ("Notification" in window) {
|
16
|
+
notify = function (title, options) {
|
17
|
+
return new Notification(title, options);
|
18
|
+
};
|
19
|
+
} else if ("mozNotification" in navigator) {
|
20
|
+
notify = function (title, options) {
|
21
|
+
// Gecko < 22
|
22
|
+
return navigator.mozNotification
|
23
|
+
.createNotification(title, options.body, options.icon)
|
24
|
+
.show();
|
25
|
+
};
|
26
|
+
} else if ("webkitNotifications" in window) {
|
27
|
+
notify = function (title, options) {
|
28
|
+
return window.webkitNotifications.createNotification(
|
29
|
+
options.icon,
|
30
|
+
title,
|
31
|
+
options.body
|
32
|
+
);
|
33
|
+
};
|
34
|
+
} else {
|
35
|
+
notify = function (title, options) {
|
36
|
+
return null;
|
37
|
+
};
|
38
|
+
}
|
39
|
+
return notify(title, options);
|
40
|
+
};
|
41
|
+
|
42
|
+
|
43
|
+
PNotify.prototype.options.desktop = {
|
44
|
+
// Display the notification as a desktop notification.
|
45
|
+
desktop: false,
|
46
|
+
// The URL of the icon to display. If false, no icon will show. If null, a default icon will show.
|
47
|
+
icon: null,
|
48
|
+
// Using a tag lets you update an existing notice, or keep from duplicating notices between tabs.
|
49
|
+
// If you leave tag null, one will be generated, facilitating the "update" function.
|
50
|
+
// see: http://www.w3.org/TR/notifications/#tags-example
|
51
|
+
tag: null
|
52
|
+
};
|
53
|
+
PNotify.prototype.modules.desktop = {
|
54
|
+
tag: null,
|
55
|
+
icon: null,
|
56
|
+
genNotice: function(notice, options){
|
57
|
+
if (options.icon === null) {
|
58
|
+
this.icon = "http://sciactive.com/pnotify/includes/desktop/"+notice.options.type+".png";
|
59
|
+
} else if (options.icon === false) {
|
60
|
+
this.icon = null;
|
61
|
+
} else {
|
62
|
+
this.icon = options.icon;
|
63
|
+
}
|
64
|
+
if (this.tag === null || options.tag !== null) {
|
65
|
+
this.tag = options.tag === null ? "PNotify-"+Math.round(Math.random() * 1000000) : options.tag;
|
66
|
+
}
|
67
|
+
notice.desktop = notify(notice.options.title, {
|
68
|
+
icon: this.icon,
|
69
|
+
body: notice.options.text,
|
70
|
+
tag: this.tag
|
71
|
+
});
|
72
|
+
if (!("close" in notice.desktop)) {
|
73
|
+
notice.desktop.close = function(){
|
74
|
+
notice.desktop.cancel();
|
75
|
+
};
|
76
|
+
}
|
77
|
+
notice.desktop.onclick = function(){
|
78
|
+
notice.elem.trigger("click");
|
79
|
+
};
|
80
|
+
notice.desktop.onclose = function(){
|
81
|
+
if (notice.state !== "closing" && notice.state !== "closed") {
|
82
|
+
notice.remove();
|
83
|
+
}
|
84
|
+
};
|
85
|
+
},
|
86
|
+
init: function(notice, options){
|
87
|
+
if (!options.desktop)
|
88
|
+
return;
|
89
|
+
permission = PNotify.desktop.checkPermission();
|
90
|
+
if (permission != 0)
|
91
|
+
return;
|
92
|
+
this.genNotice(notice, options);
|
93
|
+
},
|
94
|
+
update: function(notice, options, oldOpts){
|
95
|
+
if (permission != 0 || !options.desktop)
|
96
|
+
return;
|
97
|
+
this.genNotice(notice, options);
|
98
|
+
},
|
99
|
+
beforeOpen: function(notice, options){
|
100
|
+
if (permission != 0 || !options.desktop)
|
101
|
+
return;
|
102
|
+
notice.elem.css({'left': '-10000px', 'display': 'none'});
|
103
|
+
},
|
104
|
+
afterOpen: function(notice, options){
|
105
|
+
if (permission != 0 || !options.desktop)
|
106
|
+
return;
|
107
|
+
notice.elem.css({'left': '-10000px', 'display': 'none'});
|
108
|
+
if ("show" in notice.desktop) {
|
109
|
+
notice.desktop.show();
|
110
|
+
}
|
111
|
+
},
|
112
|
+
beforeClose: function(notice, options){
|
113
|
+
if (permission != 0 || !options.desktop)
|
114
|
+
return;
|
115
|
+
notice.elem.css({'left': '-10000px', 'display': 'none'});
|
116
|
+
},
|
117
|
+
afterClose: function(notice, options){
|
118
|
+
if (permission != 0 || !options.desktop)
|
119
|
+
return;
|
120
|
+
notice.elem.css({'left': '-10000px', 'display': 'none'});
|
121
|
+
notice.desktop.close();
|
122
|
+
}
|
123
|
+
};
|
124
|
+
PNotify.desktop = {
|
125
|
+
permission: function(){
|
126
|
+
if (typeof Notification !== "undefined" && "requestPermission" in Notification) {
|
127
|
+
Notification.requestPermission();
|
128
|
+
} else if ("webkitNotifications" in window) {
|
129
|
+
window.webkitNotifications.requestPermission();
|
130
|
+
}
|
131
|
+
},
|
132
|
+
checkPermission: function(){
|
133
|
+
if (typeof Notification !== "undefined" && "permission" in Notification) {
|
134
|
+
return (Notification.permission == "granted" ? 0 : 1);
|
135
|
+
} else if ("webkitNotifications" in window) {
|
136
|
+
return window.webkitNotifications.checkPermission();
|
137
|
+
} else {
|
138
|
+
return 1;
|
139
|
+
}
|
140
|
+
}
|
141
|
+
};
|
142
|
+
permission = PNotify.desktop.checkPermission();
|
143
|
+
}));
|
@@ -0,0 +1,189 @@
|
|
1
|
+
// History
|
2
|
+
// Uses AMD or browser globals for jQuery.
|
3
|
+
(function (factory) {
|
4
|
+
if (typeof define === 'function' && define.amd) {
|
5
|
+
// AMD. Register as a module.
|
6
|
+
define('pnotify.history', ['jquery', 'pnotify'], factory);
|
7
|
+
} else {
|
8
|
+
// Browser globals
|
9
|
+
factory(jQuery, PNotify);
|
10
|
+
}
|
11
|
+
}(function($, PNotify){
|
12
|
+
var history_menu,
|
13
|
+
history_handle_top;
|
14
|
+
$(function(){
|
15
|
+
$("body").on("pnotify.history-all", function(){
|
16
|
+
// Display all notices. (Disregarding non-history notices.)
|
17
|
+
$.each(PNotify.notices, function(){
|
18
|
+
if (this.modules.history.inHistory) {
|
19
|
+
if (this.elem.is(":visible")) {
|
20
|
+
// The hide variable controls whether the history pull down should
|
21
|
+
// queue a removal timer.
|
22
|
+
if (this.options.hide)
|
23
|
+
this.queueRemove();
|
24
|
+
} else if (this.open)
|
25
|
+
this.open();
|
26
|
+
}
|
27
|
+
});
|
28
|
+
}).on("pnotify.history-last", function(){
|
29
|
+
var pushTop = (PNotify.prototype.options.stack.push === "top");
|
30
|
+
|
31
|
+
// Look up the last history notice, and display it.
|
32
|
+
var i = (pushTop ? 0 : -1);
|
33
|
+
|
34
|
+
var notice;
|
35
|
+
do {
|
36
|
+
if (i === -1)
|
37
|
+
notice = PNotify.notices.slice(i);
|
38
|
+
else
|
39
|
+
notice = PNotify.notices.slice(i, i+1);
|
40
|
+
if (!notice[0])
|
41
|
+
return false;
|
42
|
+
|
43
|
+
i = (pushTop ? i + 1 : i - 1);
|
44
|
+
} while (!notice[0].modules.history.inHistory || notice[0].elem.is(":visible"));
|
45
|
+
if (notice[0].open)
|
46
|
+
notice[0].open();
|
47
|
+
});
|
48
|
+
});
|
49
|
+
PNotify.prototype.options.history = {
|
50
|
+
// Place the notice in the history.
|
51
|
+
history: true,
|
52
|
+
// Display a pull down menu to redisplay previous notices.
|
53
|
+
menu: false,
|
54
|
+
// Make the pull down menu fixed to the top of the viewport.
|
55
|
+
fixed: true,
|
56
|
+
// Maximum number of notifications to have onscreen.
|
57
|
+
maxonscreen: Infinity,
|
58
|
+
// The various displayed text, helps facilitating internationalization.
|
59
|
+
labels: {
|
60
|
+
redisplay: "Redisplay",
|
61
|
+
all: "All",
|
62
|
+
last: "Last"
|
63
|
+
}
|
64
|
+
};
|
65
|
+
PNotify.prototype.modules.history = {
|
66
|
+
// The history variable controls whether the notice gets redisplayed
|
67
|
+
// by the history pull down.
|
68
|
+
inHistory: false,
|
69
|
+
|
70
|
+
init: function(notice, options){
|
71
|
+
// Make sure that no notices get destroyed.
|
72
|
+
notice.options.destroy = false;
|
73
|
+
|
74
|
+
this.inHistory = options.history;
|
75
|
+
|
76
|
+
if (options.menu) {
|
77
|
+
// If there isn't a history pull down, create one.
|
78
|
+
if (typeof history_menu === "undefined") {
|
79
|
+
history_menu = $("<div />", {
|
80
|
+
"class": "ui-pnotify-history-container "+notice.styles.hi_menu,
|
81
|
+
"mouseleave": function(){
|
82
|
+
history_menu.animate({top: "-"+history_handle_top+"px"}, {duration: 100, queue: false});
|
83
|
+
}
|
84
|
+
})
|
85
|
+
.append($("<div />", {"class": "ui-pnotify-history-header", "text": options.labels.redisplay}))
|
86
|
+
.append($("<button />", {
|
87
|
+
"class": "ui-pnotify-history-all "+notice.styles.hi_btn,
|
88
|
+
"text": options.labels.all,
|
89
|
+
"mouseenter": function(){
|
90
|
+
$(this).addClass(notice.styles.hi_btnhov);
|
91
|
+
},
|
92
|
+
"mouseleave": function(){
|
93
|
+
$(this).removeClass(notice.styles.hi_btnhov);
|
94
|
+
},
|
95
|
+
"click": function(){
|
96
|
+
$(this).trigger("pnotify.history-all");
|
97
|
+
return false;
|
98
|
+
}
|
99
|
+
}))
|
100
|
+
.append($("<button />", {
|
101
|
+
"class": "ui-pnotify-history-last "+notice.styles.hi_btn,
|
102
|
+
"text": options.labels.last,
|
103
|
+
"mouseenter": function(){
|
104
|
+
$(this).addClass(notice.styles.hi_btnhov);
|
105
|
+
},
|
106
|
+
"mouseleave": function(){
|
107
|
+
$(this).removeClass(notice.styles.hi_btnhov);
|
108
|
+
},
|
109
|
+
"click": function(){
|
110
|
+
$(this).trigger("pnotify.history-last");
|
111
|
+
return false;
|
112
|
+
}
|
113
|
+
}))
|
114
|
+
.appendTo("body");
|
115
|
+
|
116
|
+
// Make a handle so the user can pull down the history tab.
|
117
|
+
var handle = $("<span />", {
|
118
|
+
"class": "ui-pnotify-history-pulldown "+notice.styles.hi_hnd,
|
119
|
+
"mouseenter": function(){
|
120
|
+
history_menu.animate({top: "0"}, {duration: 100, queue: false});
|
121
|
+
}
|
122
|
+
})
|
123
|
+
.appendTo(history_menu);
|
124
|
+
|
125
|
+
// Get the top of the handle.
|
126
|
+
console.log(handle.offset());
|
127
|
+
history_handle_top = handle.offset().top + 2;
|
128
|
+
// Hide the history pull down up to the top of the handle.
|
129
|
+
history_menu.css({top: "-"+history_handle_top+"px"});
|
130
|
+
|
131
|
+
// Apply the fixed styling.
|
132
|
+
if (options.fixed) {
|
133
|
+
history_menu.addClass('ui-pnotify-history-fixed');
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
},
|
138
|
+
update: function(notice, options){
|
139
|
+
// Update values for history menu access.
|
140
|
+
this.inHistory = options.history;
|
141
|
+
if (options.fixed && history_menu) {
|
142
|
+
history_menu.addClass('ui-pnotify-history-fixed');
|
143
|
+
} else if (history_menu) {
|
144
|
+
history_menu.removeClass('ui-pnotify-history-fixed');
|
145
|
+
}
|
146
|
+
},
|
147
|
+
beforeOpen: function(notice, options){
|
148
|
+
// Remove oldest notifications leaving only options.maxonscreen on screen
|
149
|
+
if (PNotify.notices && (PNotify.notices.length > options.maxonscreen)) {
|
150
|
+
// Oldest are normally in front of array, or if stack.push=="top" then
|
151
|
+
// they are at the end of the array! (issue #98)
|
152
|
+
var el;
|
153
|
+
if (notice.options.stack.push !== "top")
|
154
|
+
el = PNotify.notices.slice(0, PNotify.notices.length - options.maxonscreen);
|
155
|
+
else
|
156
|
+
el = PNotify.notices.slice(options.maxonscreen, PNotify.notices.length);
|
157
|
+
|
158
|
+
$.each(el, function(){
|
159
|
+
if (this.remove)
|
160
|
+
this.remove();
|
161
|
+
});
|
162
|
+
}
|
163
|
+
}
|
164
|
+
};
|
165
|
+
$.extend(PNotify.styling.jqueryui, {
|
166
|
+
hi_menu: "ui-state-default ui-corner-bottom",
|
167
|
+
hi_btn: "ui-state-default ui-corner-all",
|
168
|
+
hi_btnhov: "ui-state-hover",
|
169
|
+
hi_hnd: "ui-icon ui-icon-grip-dotted-horizontal"
|
170
|
+
});
|
171
|
+
$.extend(PNotify.styling.bootstrap2, {
|
172
|
+
hi_menu: "well",
|
173
|
+
hi_btn: "btn",
|
174
|
+
hi_btnhov: "",
|
175
|
+
hi_hnd: "icon-chevron-down"
|
176
|
+
});
|
177
|
+
$.extend(PNotify.styling.bootstrap3, {
|
178
|
+
hi_menu: "well",
|
179
|
+
hi_btn: "btn btn-default",
|
180
|
+
hi_btnhov: "",
|
181
|
+
hi_hnd: "glyphicon glyphicon-chevron-down"
|
182
|
+
});
|
183
|
+
$.extend(PNotify.styling.fontawesome, {
|
184
|
+
hi_menu: "well",
|
185
|
+
hi_btn: "btn btn-default",
|
186
|
+
hi_btnhov: "",
|
187
|
+
hi_hnd: "fa fa-chevron-down"
|
188
|
+
});
|
189
|
+
}));
|
@@ -0,0 +1,151 @@
|
|
1
|
+
// Nonblock
|
2
|
+
// Uses AMD or browser globals for jQuery.
|
3
|
+
(function (factory) {
|
4
|
+
if (typeof define === 'function' && define.amd) {
|
5
|
+
// AMD. Register as a module.
|
6
|
+
define('pnotify.nonblock', ['jquery', 'pnotify'], factory);
|
7
|
+
} else {
|
8
|
+
// Browser globals
|
9
|
+
factory(jQuery, PNotify);
|
10
|
+
}
|
11
|
+
}(function($, PNotify){
|
12
|
+
// Some useful regexes.
|
13
|
+
var re_on = /^on/,
|
14
|
+
re_mouse_events = /^(dbl)?click$|^mouse(move|down|up|over|out|enter|leave)$|^contextmenu$/,
|
15
|
+
re_ui_events = /^(focus|blur|select|change|reset)$|^key(press|down|up)$/,
|
16
|
+
re_html_events = /^(scroll|resize|(un)?load|abort|error)$/;
|
17
|
+
// Fire a DOM event.
|
18
|
+
var dom_event = function(e, orig_e){
|
19
|
+
var event_object;
|
20
|
+
e = e.toLowerCase();
|
21
|
+
if (document.createEvent && this.dispatchEvent) {
|
22
|
+
// FireFox, Opera, Safari, Chrome
|
23
|
+
e = e.replace(re_on, '');
|
24
|
+
if (e.match(re_mouse_events)) {
|
25
|
+
// This allows the click event to fire on the notice. There is
|
26
|
+
// probably a much better way to do it.
|
27
|
+
$(this).offset();
|
28
|
+
event_object = document.createEvent("MouseEvents");
|
29
|
+
event_object.initMouseEvent(
|
30
|
+
e, orig_e.bubbles, orig_e.cancelable, orig_e.view, orig_e.detail,
|
31
|
+
orig_e.screenX, orig_e.screenY, orig_e.clientX, orig_e.clientY,
|
32
|
+
orig_e.ctrlKey, orig_e.altKey, orig_e.shiftKey, orig_e.metaKey, orig_e.button, orig_e.relatedTarget
|
33
|
+
);
|
34
|
+
} else if (e.match(re_ui_events)) {
|
35
|
+
event_object = document.createEvent("UIEvents");
|
36
|
+
event_object.initUIEvent(e, orig_e.bubbles, orig_e.cancelable, orig_e.view, orig_e.detail);
|
37
|
+
} else if (e.match(re_html_events)) {
|
38
|
+
event_object = document.createEvent("HTMLEvents");
|
39
|
+
event_object.initEvent(e, orig_e.bubbles, orig_e.cancelable);
|
40
|
+
}
|
41
|
+
if (!event_object) return;
|
42
|
+
this.dispatchEvent(event_object);
|
43
|
+
} else {
|
44
|
+
// Internet Explorer
|
45
|
+
if (!e.match(re_on)) e = "on"+e;
|
46
|
+
event_object = document.createEventObject(orig_e);
|
47
|
+
this.fireEvent(e, event_object);
|
48
|
+
}
|
49
|
+
};
|
50
|
+
|
51
|
+
|
52
|
+
// This keeps track of the last element the mouse was over, so
|
53
|
+
// mouseleave, mouseenter, etc can be called.
|
54
|
+
var nonblock_last_elem;
|
55
|
+
// This is used to pass events through the notice if it is non-blocking.
|
56
|
+
var nonblock_pass = function(notice, e, e_name){
|
57
|
+
notice.elem.css("display", "none");
|
58
|
+
var element_below = document.elementFromPoint(e.clientX, e.clientY);
|
59
|
+
notice.elem.css("display", "block");
|
60
|
+
var jelement_below = $(element_below);
|
61
|
+
var cursor_style = jelement_below.css("cursor");
|
62
|
+
notice.elem.css("cursor", cursor_style !== "auto" ? cursor_style : "default");
|
63
|
+
// If the element changed, call mouseenter, mouseleave, etc.
|
64
|
+
if (!nonblock_last_elem || nonblock_last_elem.get(0) != element_below) {
|
65
|
+
if (nonblock_last_elem) {
|
66
|
+
dom_event.call(nonblock_last_elem.get(0), "mouseleave", e.originalEvent);
|
67
|
+
dom_event.call(nonblock_last_elem.get(0), "mouseout", e.originalEvent);
|
68
|
+
}
|
69
|
+
dom_event.call(element_below, "mouseenter", e.originalEvent);
|
70
|
+
dom_event.call(element_below, "mouseover", e.originalEvent);
|
71
|
+
}
|
72
|
+
dom_event.call(element_below, e_name, e.originalEvent);
|
73
|
+
// Remember the latest element the mouse was over.
|
74
|
+
nonblock_last_elem = jelement_below;
|
75
|
+
};
|
76
|
+
|
77
|
+
|
78
|
+
PNotify.prototype.options.nonblock = {
|
79
|
+
// Create a non-blocking notice. It lets the user click elements underneath it.
|
80
|
+
nonblock: false,
|
81
|
+
// The opacity of the notice (if it's non-blocking) when the mouse is over it.
|
82
|
+
nonblock_opacity: .2
|
83
|
+
};
|
84
|
+
PNotify.prototype.modules.nonblock = {
|
85
|
+
// This lets us update the options available in the closures.
|
86
|
+
myOptions: null,
|
87
|
+
|
88
|
+
init: function(notice, options){
|
89
|
+
var that = this;
|
90
|
+
this.myOptions = options;
|
91
|
+
notice.elem.on({
|
92
|
+
"mouseenter": function(e){
|
93
|
+
if (that.myOptions.nonblock) e.stopPropagation();
|
94
|
+
if (that.myOptions.nonblock) {
|
95
|
+
// If it's non-blocking, animate to the other opacity.
|
96
|
+
notice.elem.stop().animate({"opacity": that.myOptions.nonblock_opacity}, "fast");
|
97
|
+
}
|
98
|
+
},
|
99
|
+
"mouseleave": function(e){
|
100
|
+
if (that.myOptions.nonblock) e.stopPropagation();
|
101
|
+
nonblock_last_elem = null;
|
102
|
+
notice.elem.css("cursor", "auto");
|
103
|
+
// Animate back to the normal opacity.
|
104
|
+
if (that.myOptions.nonblock && notice.animating !== "out")
|
105
|
+
notice.elem.stop().animate({"opacity": notice.options.opacity}, "fast");
|
106
|
+
},
|
107
|
+
"mouseover": function(e){
|
108
|
+
if (that.myOptions.nonblock) e.stopPropagation();
|
109
|
+
},
|
110
|
+
"mouseout": function(e){
|
111
|
+
if (that.myOptions.nonblock) e.stopPropagation();
|
112
|
+
},
|
113
|
+
"mousemove": function(e){
|
114
|
+
if (that.myOptions.nonblock) {
|
115
|
+
e.stopPropagation();
|
116
|
+
nonblock_pass(notice, e, "onmousemove");
|
117
|
+
}
|
118
|
+
},
|
119
|
+
"mousedown": function(e){
|
120
|
+
if (that.myOptions.nonblock) {
|
121
|
+
e.stopPropagation();
|
122
|
+
e.preventDefault();
|
123
|
+
nonblock_pass(notice, e, "onmousedown");
|
124
|
+
}
|
125
|
+
},
|
126
|
+
"mouseup": function(e){
|
127
|
+
if (that.myOptions.nonblock) {
|
128
|
+
e.stopPropagation();
|
129
|
+
e.preventDefault();
|
130
|
+
nonblock_pass(notice, e, "onmouseup");
|
131
|
+
}
|
132
|
+
},
|
133
|
+
"click": function(e){
|
134
|
+
if (that.myOptions.nonblock) {
|
135
|
+
e.stopPropagation();
|
136
|
+
nonblock_pass(notice, e, "onclick");
|
137
|
+
}
|
138
|
+
},
|
139
|
+
"dblclick": function(e){
|
140
|
+
if (that.myOptions.nonblock) {
|
141
|
+
e.stopPropagation();
|
142
|
+
nonblock_pass(notice, e, "ondblclick");
|
143
|
+
}
|
144
|
+
}
|
145
|
+
});
|
146
|
+
},
|
147
|
+
update: function(notice, options){
|
148
|
+
this.myOptions = options;
|
149
|
+
}
|
150
|
+
};
|
151
|
+
}));
|