Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
angular-emoji-popup
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
angular-emoji-popup
Commits
9151b787
Commit
9151b787
authored
Dec 26, 2014
by
Madhur
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactoring
parent
7e4477c4
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
397 additions
and
492 deletions
+397
-492
emoji.css
css/emoji.css
+168
-0
style.css
css/style.css
+0
-166
index.html
index.html
+6
-5
app.js
js/app.js
+0
-29
config.js
js/config.js
+0
-192
emoji.js
js/emoji.js
+0
-100
angular-sanitize.js
js/lib/angular-sanitize.js
+0
-0
angular-sanitize.min.js.map
js/lib/angular-sanitize.min.js.map
+0
-0
angular.min.js
js/lib/angular.min.js
+0
-0
angular.min.js.map
js/lib/angular.min.js.map
+0
-0
bootstrap.min.js
js/lib/bootstrap.min.js
+0
-0
jquery.min.js
js/lib/jquery.min.js
+0
-0
util.js
js/util.js
+223
-0
No files found.
css/emoji.css
View file @
9151b787
...
@@ -42,3 +42,171 @@ img.emoji {
...
@@ -42,3 +42,171 @@ img.emoji {
width
:
1em
;
width
:
1em
;
height
:
1em
;
height
:
1em
;
}
}
.emoji-wysiwyg-editor
:empty:before
{
content
:
attr
(
placeholder
);
color
:
#9aa2ab
;
}
.icon-emoji
{
display
:
inline-block
;
width
:
23px
;
height
:
23px
;
vertical-align
:
text-top
;
background
:
url('../img/IconsetW.png')
-10px
-4px
/
42px
1171px
no-repeat
;
opacity
:
0.8
;
}
.im_emoji_btn
:hover
.icon-emoji
{
opacity
:
1
;
}
/* Emoji area */
.emoji-wysiwyg-editor
:empty:before
{
content
:
attr
(
placeholder
);
color
:
#9aa2ab
;
}
.emoji-wysiwyg-editor
:active:before
,
.emoji-wysiwyg-editor
:focus:before
{
content
:
none
;
}
.emoji-wysiwyg-editor
{
padding
:
6px
;
-moz-box-sizing
:
content-box
;
font-size
:
12px
;
margin-bottom
:
10px
;
min-height
:
36px
;
height
:
30px
;
max-height
:
284px
;
overflow
:
auto
;
line-height
:
17px
;
border
:
1px
solid
#d2dbe3
;
border-radius
:
2px
;
-webkit-box-shadow
:
none
;
box-shadow
:
none
;
-webkit-transition
:
border-color
ease-in-out
0.15s
,
box-shadow
ease-in-out
0.15s
;
transition
:
border-color
ease-in-out
0.15s
,
box-shadow
ease-in-out
0.15s
;
-webkit-user-select
:
text
;
word-wrap
:
break-word
;
}
.emoji-wysiwyg-editor
img
{
width
:
20px
;
height
:
20px
;
vertical-align
:
middle
;
margin
:
-3px
0
0
0
;
}
.emoji-menu
{
position
:
absolute
;
z-index
:
999
;
width
:
225px
;
margin-left
:
-107px
;
margin-top
:
-252px
;
overflow
:
hidden
;
border
:
1px
#dfdfdf
solid
;
-webkit-border-radius
:
3px
;
-moz-border-radius
:
3px
;
border-radius
:
3px
;
overflow
:
hidden
;
-webkit-box-shadow
:
0px
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
-moz-box-shadow
:
0px
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
box-shadow
:
0px
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
}
.emoji-items-wrap1
{
background
:
#FFF
;
padding
:
5px
2px
5px
5px
;
}
.emoji-items-wrap1
.emoji-menu-tabs
{
width
:
100%
;
margin-bottom
:
8px
;
margin-top
:
3px
;
}
.emoji-items-wrap1
.emoji-menu-tabs
td
{
text-align
:
center
;
color
:
white
;
line-height
:
0
;
}
.emoji-menu-tabs
.emoji-menu-tab
{
display
:
inline-block
;
width
:
24px
;
height
:
29px
;
background
:
url('../img/IconsetSmiles.png')
no-repeat
;
background-size
:
42px
350px
;
}
.is_1x
.emoji-menu-tabs
.emoji-menu-tab
{
background-image
:
url('../img/IconsetSmiles_1x.png')
;
}
.emoji-menu-tabs
.icon-recent
{
background-position
:
-9px
-306px
;
}
.emoji-menu-tabs
.icon-recent-selected
{
background-position
:
-9px
-277px
;
}
.emoji-menu-tabs
.icon-smile
{
background-position
:
-9px
-34px
;
}
.emoji-menu-tabs
.icon-smile-selected
{
background-position
:
-9px
-5px
;
}
.emoji-menu-tabs
.icon-flower
{
background-position
:
-9px
-145px
;
}
.emoji-menu-tabs
.icon-flower-selected
{
background-position
:
-9px
-118px
;
}
.emoji-menu-tabs
.icon-bell
{
background-position
:
-9px
-89px
;
}
.emoji-menu-tabs
.icon-bell-selected
{
background-position
:
-9px
-61px
;
}
.emoji-menu-tabs
.icon-car
{
background-position
:
-9px
-196px
;
}
.emoji-menu-tabs
.icon-car-selected
{
background-position
:
-9px
-170px
;
}
.emoji-menu-tabs
.icon-grid
{
background-position
:
-9px
-248px
;
}
.emoji-menu-tabs
.icon-grid-selected
{
background-position
:
-9px
-222px
;
}
.emoji-menu-tabs
.icon-smile
,
.emoji-menu-tabs
.icon-flower
,
.emoji-menu-tabs
.icon-bell
,
.emoji-menu-tabs
.icon-car
,
.emoji-menu-tabs
.icon-grid
{
opacity
:
0.7
;
}
.emoji-menu-tabs
.icon-smile
:hover
,
.emoji-menu-tabs
.icon-flower
:hover
,
.emoji-menu-tabs
.icon-bell
:hover
,
.emoji-menu-tabs
.icon-car
:hover
,
.emoji-menu-tabs
.icon-grid
:hover
{
opacity
:
1
;
}
.emoji-menu
.emoji-items-wrap
{
position
:
relative
;
height
:
174px
;
}
.emoji-menu
.emoji-items
{
padding-right
:
8px
;
outline
:
0
!important
;
}
.emoji-menu
img
{
width
:
20px
;
height
:
20px
;
vertical-align
:
middle
;
border
:
0
none
;
}
.emoji-menu
.emoji-items
a
{
margin
:
-1px
0
0
-1px
;
padding
:
5px
;
display
:
block
;
float
:
left
;
border-radius
:
2px
;
}
.emoji-menu
.emoji-items
a
:hover
{
background-color
:
#edf2f5
;
}
.emoji-menu
:after
{
content
:
' '
;
display
:
block
;
clear
:
left
;
}
.emoji-menu
a
.label
{
display
:
none
;
}
css/style.css
View file @
9151b787
...
@@ -16,172 +16,6 @@ outline: 0;
...
@@ -16,172 +16,6 @@ outline: 0;
box-shadow
:
inset
0
1px
1px
rgba
(
0
,
0
,
0
,
.075
),
0
0
8px
rgba
(
102
,
175
,
233
,
.6
);
box-shadow
:
inset
0
1px
1px
rgba
(
0
,
0
,
0
,
.075
),
0
0
8px
rgba
(
102
,
175
,
233
,
.6
);
}
}
.emoji-wysiwyg-editor
:empty:before
{
content
:
attr
(
placeholder
);
color
:
#9aa2ab
;
}
.icon-emoji
{
display
:
inline-block
;
width
:
23px
;
height
:
23px
;
vertical-align
:
text-top
;
background
:
url('../img/IconsetW.png')
-10px
-4px
/
42px
1171px
no-repeat
;
opacity
:
0.8
;
}
.im_emoji_btn
:hover
.icon-emoji
{
opacity
:
1
;
}
/* Emoji area */
.emoji-wysiwyg-editor
:empty:before
{
content
:
attr
(
placeholder
);
color
:
#9aa2ab
;
}
.emoji-wysiwyg-editor
:active:before
,
.emoji-wysiwyg-editor
:focus:before
{
content
:
none
;
}
.emoji-wysiwyg-editor
{
padding
:
6px
;
-moz-box-sizing
:
content-box
;
font-size
:
12px
;
margin-bottom
:
10px
;
min-height
:
36px
;
height
:
30px
;
max-height
:
284px
;
overflow
:
auto
;
line-height
:
17px
;
border
:
1px
solid
#d2dbe3
;
border-radius
:
2px
;
-webkit-box-shadow
:
none
;
box-shadow
:
none
;
-webkit-transition
:
border-color
ease-in-out
0.15s
,
box-shadow
ease-in-out
0.15s
;
transition
:
border-color
ease-in-out
0.15s
,
box-shadow
ease-in-out
0.15s
;
-webkit-user-select
:
text
;
word-wrap
:
break-word
;
}
.emoji-wysiwyg-editor
img
{
width
:
20px
;
height
:
20px
;
vertical-align
:
middle
;
margin
:
-3px
0
0
0
;
}
.emoji-menu
{
position
:
absolute
;
z-index
:
999
;
width
:
225px
;
margin-left
:
-107px
;
margin-top
:
-252px
;
overflow
:
hidden
;
border
:
1px
#dfdfdf
solid
;
-webkit-border-radius
:
3px
;
-moz-border-radius
:
3px
;
border-radius
:
3px
;
overflow
:
hidden
;
-webkit-box-shadow
:
0px
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
-moz-box-shadow
:
0px
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
box-shadow
:
0px
1px
1px
rgba
(
0
,
0
,
0
,
0.1
);
}
.emoji-items-wrap1
{
background
:
#FFF
;
padding
:
5px
2px
5px
5px
;
}
.emoji-items-wrap1
.emoji-menu-tabs
{
width
:
100%
;
margin-bottom
:
8px
;
margin-top
:
3px
;
}
.emoji-items-wrap1
.emoji-menu-tabs
td
{
text-align
:
center
;
color
:
white
;
line-height
:
0
;
}
.emoji-menu-tabs
.emoji-menu-tab
{
display
:
inline-block
;
width
:
24px
;
height
:
29px
;
background
:
url('../img/IconsetSmiles.png')
no-repeat
;
background-size
:
42px
350px
;
}
.is_1x
.emoji-menu-tabs
.emoji-menu-tab
{
background-image
:
url('../img/IconsetSmiles_1x.png')
;
}
.emoji-menu-tabs
.icon-recent
{
background-position
:
-9px
-306px
;
}
.emoji-menu-tabs
.icon-recent-selected
{
background-position
:
-9px
-277px
;
}
.emoji-menu-tabs
.icon-smile
{
background-position
:
-9px
-34px
;
}
.emoji-menu-tabs
.icon-smile-selected
{
background-position
:
-9px
-5px
;
}
.emoji-menu-tabs
.icon-flower
{
background-position
:
-9px
-145px
;
}
.emoji-menu-tabs
.icon-flower-selected
{
background-position
:
-9px
-118px
;
}
.emoji-menu-tabs
.icon-bell
{
background-position
:
-9px
-89px
;
}
.emoji-menu-tabs
.icon-bell-selected
{
background-position
:
-9px
-61px
;
}
.emoji-menu-tabs
.icon-car
{
background-position
:
-9px
-196px
;
}
.emoji-menu-tabs
.icon-car-selected
{
background-position
:
-9px
-170px
;
}
.emoji-menu-tabs
.icon-grid
{
background-position
:
-9px
-248px
;
}
.emoji-menu-tabs
.icon-grid-selected
{
background-position
:
-9px
-222px
;
}
.emoji-menu-tabs
.icon-smile
,
.emoji-menu-tabs
.icon-flower
,
.emoji-menu-tabs
.icon-bell
,
.emoji-menu-tabs
.icon-car
,
.emoji-menu-tabs
.icon-grid
{
opacity
:
0.7
;
}
.emoji-menu-tabs
.icon-smile
:hover
,
.emoji-menu-tabs
.icon-flower
:hover
,
.emoji-menu-tabs
.icon-bell
:hover
,
.emoji-menu-tabs
.icon-car
:hover
,
.emoji-menu-tabs
.icon-grid
:hover
{
opacity
:
1
;
}
.emoji-menu
.emoji-items-wrap
{
position
:
relative
;
height
:
174px
;
}
.emoji-menu
.emoji-items
{
padding-right
:
8px
;
outline
:
0
!important
;
}
.emoji-menu
img
{
width
:
20px
;
height
:
20px
;
vertical-align
:
middle
;
border
:
0
none
;
}
.emoji-menu
.emoji-items
a
{
margin
:
-1px
0
0
-1px
;
padding
:
5px
;
display
:
block
;
float
:
left
;
border-radius
:
2px
;
}
.emoji-menu
.emoji-items
a
:hover
{
background-color
:
#edf2f5
;
}
.emoji-menu
:after
{
content
:
' '
;
display
:
block
;
clear
:
left
;
}
.emoji-menu
a
.label
{
display
:
none
;
}
.emojiForm
.emojiForm
{
{
...
...
index.html
View file @
9151b787
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<link
type=
"text/stylesheet"
rel=
"stylesheet"
href=
"css/nanoscroller.css"
/>
<link
type=
"text/stylesheet"
rel=
"stylesheet"
href=
"css/nanoscroller.css"
/>
<link
type=
"text/stylesheet"
rel=
"stylesheet"
href=
"css/emoji.css"
/>
<link
type=
"text/stylesheet"
rel=
"stylesheet"
href=
"css/emoji.css"
/>
<link
type=
"text/stylesheet"
rel=
"stylesheet"
href=
"css/style.css"
/>
<link
type=
"text/stylesheet"
rel=
"stylesheet"
href=
"css/style.css"
/>
<script
type=
"text/javascript"
src=
"js/
jquery-1.11.1
.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/
lib/jquery
.min.js"
></script>
</head>
</head>
<a
href=
"https://github.com/madhur/angular-emoji-popup"
><img
style=
"position: absolute; top: 0; right: 30px; border: 0;"
src=
"img/gh-ribbon.png"
alt=
"Fork me on GitHub"
>
<a
href=
"https://github.com/madhur/angular-emoji-popup"
><img
style=
"position: absolute; top: 0; right: 30px; border: 0;"
src=
"img/gh-ribbon.png"
alt=
"Fork me on GitHub"
>
</a>
</a>
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
<button
class=
"btn btn-default im_emoji_btn pull-right visible-md visible-lg"
id=
"emojibtn"
>
<button
class=
"btn btn-default im_emoji_btn pull-right visible-md visible-lg"
id=
"emojibtn"
>
<i
class=
"icon icon-emoji"
></i>
<i
class=
"icon icon-emoji"
></i>
</button>
</button>
<button
class=
"btn btn-default im_emoji_btn visible-sm"
id=
"emojibtn"
>
<button
class=
"btn btn-default im_emoji_btn visible-sm
visible-xs
"
id=
"emojibtn"
>
<i
class=
"icon icon-emoji"
></i>
<i
class=
"icon icon-emoji"
></i>
</button>
</button>
</div>
</div>
...
@@ -123,11 +123,12 @@
...
@@ -123,11 +123,12 @@
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
src=
"js/bootstrap.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/
lib/
bootstrap.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/angular.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/
lib/
angular.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/angular-sanitize.js"
></script>
<script
type=
"text/javascript"
src=
"js/
lib/
angular-sanitize.js"
></script>
<script
type=
"text/javascript"
src=
"js/app.js"
></script>
<script
type=
"text/javascript"
src=
"js/app.js"
></script>
<script
type=
"text/javascript"
src=
"js/config.js"
></script>
<script
type=
"text/javascript"
src=
"js/config.js"
></script>
<script
type=
"text/javascript"
src=
"js/util.js"
></script>
<script
type=
"text/javascript"
src=
"js/jquery.emojiarea.js"
></script>
<script
type=
"text/javascript"
src=
"js/jquery.emojiarea.js"
></script>
<script
type=
"text/javascript"
src=
"js/emojiController.js"
></script>
<script
type=
"text/javascript"
src=
"js/emojiController.js"
></script>
<script
type=
"text/javascript"
src=
"js/emojiDirectives.js"
></script>
<script
type=
"text/javascript"
src=
"js/emojiDirectives.js"
></script>
...
...
js/app.js
View file @
9151b787
...
@@ -69,32 +69,3 @@ emojiApp.directive('contenteditable', [ '$sce', function($sce) {
...
@@ -69,32 +69,3 @@ emojiApp.directive('contenteditable', [ '$sce', function($sce) {
};
};
}
]);
}
]);
function
checkDragEvent
(
e
)
{
if
(
!
e
||
e
.
target
&&
(
e
.
target
.
tagName
==
'
IMG
'
||
e
.
target
.
tagName
==
'
A
'
))
return
false
;
if
(
e
.
dataTransfer
&&
e
.
dataTransfer
.
types
)
{
for
(
var
i
=
0
;
i
<
e
.
dataTransfer
.
types
.
length
;
i
++
)
{
if
(
e
.
dataTransfer
.
types
[
i
]
==
'
Files
'
)
{
return
true
;
}
}
}
else
{
return
true
;
}
return
false
;
}
function
cancelEvent
(
event
)
{
event
=
event
||
window
.
event
;
if
(
event
)
{
event
=
event
.
originalEvent
||
event
;
if
(
event
.
stopPropagation
)
event
.
stopPropagation
();
if
(
event
.
preventDefault
)
event
.
preventDefault
();
}
return
false
;
}
js/config.js
View file @
9151b787
...
@@ -3540,195 +3540,3 @@ function buildMap()
...
@@ -3540,195 +3540,3 @@ function buildMap()
}
}
}
}
//ConfigStorage
(
function
(
window
)
{
var
keyPrefix
=
''
;
var
noPrefix
=
false
;
var
cache
=
{};
var
useCs
=
!!
(
window
.
chrome
&&
chrome
.
storage
&&
chrome
.
storage
.
local
);
var
useLs
=
!
useCs
&&
!!
window
.
localStorage
;
function
storageSetPrefix
(
newPrefix
)
{
keyPrefix
=
newPrefix
;
}
function
storageSetNoPrefix
()
{
noPrefix
=
true
;
}
function
storageGetPrefix
()
{
if
(
noPrefix
)
{
noPrefix
=
false
;
return
''
;
}
return
keyPrefix
;
}
function
storageGetValue
()
{
var
keys
=
Array
.
prototype
.
slice
.
call
(
arguments
),
callback
=
keys
.
pop
(),
result
=
[],
single
=
keys
.
length
==
1
,
value
,
allFound
=
true
,
prefix
=
storageGetPrefix
(),
i
,
key
;
for
(
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
key
=
keys
[
i
]
=
prefix
+
keys
[
i
];
if
(
key
.
substr
(
0
,
3
)
!=
'
xt_
'
&&
cache
[
key
]
!==
undefined
)
{
result
.
push
(
cache
[
key
]);
}
else
if
(
useLs
)
{
try
{
value
=
localStorage
.
getItem
(
key
);
}
catch
(
e
)
{
useLs
=
false
;
}
try
{
value
=
(
value
===
undefined
||
value
===
null
)
?
false
:
JSON
.
parse
(
value
);
}
catch
(
e
)
{
value
=
false
;
}
result
.
push
(
cache
[
key
]
=
value
);
}
else
if
(
!
useCs
)
{
result
.
push
(
cache
[
key
]
=
false
);
}
else
{
allFound
=
false
;
}
}
if
(
allFound
)
{
return
callback
(
single
?
result
[
0
]
:
result
);
}
chrome
.
storage
.
local
.
get
(
keys
,
function
(
resultObj
)
{
var
value
;
result
=
[];
for
(
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
key
=
keys
[
i
];
value
=
resultObj
[
key
];
value
=
value
===
undefined
||
value
===
null
?
false
:
JSON
.
parse
(
value
);
result
.
push
(
cache
[
key
]
=
value
);
}
callback
(
single
?
result
[
0
]
:
result
);
});
};
function
storageSetValue
(
obj
,
callback
)
{
var
keyValues
=
{},
prefix
=
storageGetPrefix
(),
key
,
value
;
for
(
key
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
key
))
{
value
=
obj
[
key
];
key
=
prefix
+
key
;
cache
[
key
]
=
value
;
value
=
JSON
.
stringify
(
value
);
if
(
useLs
)
{
try
{
localStorage
.
setItem
(
key
,
value
);
}
catch
(
e
)
{
useLs
=
false
;
}
}
else
{
keyValues
[
key
]
=
value
;
}
}
}
if
(
useLs
||
!
useCs
)
{
if
(
callback
)
{
callback
();
}
return
;
}
chrome
.
storage
.
local
.
set
(
keyValues
,
callback
);
};
function
storageRemoveValue
()
{
var
keys
=
Array
.
prototype
.
slice
.
call
(
arguments
),
prefix
=
storageGetPrefix
(),
i
,
key
,
callback
;
if
(
typeof
keys
[
keys
.
length
-
1
]
===
'
function
'
)
{
callback
=
keys
.
pop
();
}
for
(
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
key
=
keys
[
i
]
=
prefix
+
keys
[
i
];
delete
cache
[
key
];
if
(
useLs
)
{
try
{
localStorage
.
removeItem
(
key
);
}
catch
(
e
)
{
useLs
=
false
;
}
}
}
if
(
useCs
)
{
chrome
.
storage
.
local
.
remove
(
keys
,
callback
);
}
else
if
(
callback
)
{
callback
();
}
};
window
.
ConfigStorage
=
{
prefix
:
storageSetPrefix
,
noPrefix
:
storageSetNoPrefix
,
get
:
storageGetValue
,
set
:
storageSetValue
,
remove
:
storageRemoveValue
};
})(
this
);
js/emoji.js
deleted
100644 → 0
View file @
7e4477c4
(
function
()
{
function
emoji
()
{}
// settings
emoji
.
inits
=
{};
emoji
.
map
=
{};
emoji
.
replace_unified
=
function
(
str
)
{
emoji
.
init_unified
();
return
str
.
replace
(
emoji
.
rx_unified
,
function
(
m
)
{
// var val = emoji.map.unified[m];
var
val
=
Config
.
reversemap
[
m
];
//console.log(val);
if
(
val
)
{
val
=
"
:
"
+
val
+
"
:
"
;
var
$img
=
$
.
emojiarea
.
createIcon
(
$
.
emojiarea
.
icons
[
val
]);
return
$img
;
}
else
return
""
;
// return val ? emoji.replacement(val) : m;
});
};
emoji
.
init_emoticons
=
function
()
{
if
(
emoji
.
inits
.
emoticons
)
return
;
emoji
.
init_colons
();
// we require this for the emoticons map
emoji
.
inits
.
emoticons
=
1
;
var
a
=
[];
emoji
.
map
.
emoticons
=
{};
for
(
var
i
in
emoji
.
emoticons_data
)
{
// because we never see some characters in our text except as
// entities, we must do some replacing
var
emoticon
=
i
.
replace
(
/
\&
/g
,
'
&
'
).
replace
(
/
\<
/g
,
'
<
'
)
.
replace
(
/
\>
/g
,
'
>
'
);
if
(
!
emoji
.
map
.
colons
[
emoji
.
emoticons_data
[
i
]])
continue
;
emoji
.
map
.
emoticons
[
emoticon
]
=
emoji
.
map
.
colons
[
emoji
.
emoticons_data
[
i
]];
a
.
push
(
emoji
.
escape_rx
(
emoticon
));
}
emoji
.
rx_emoticons
=
new
RegExp
(
(
'
(^|
\\
s)(
'
+
a
.
join
(
'
|
'
)
+
'
)(?=$|[
\\
s|
\\
?
\\
.,!])
'
),
'
g
'
);
};
emoji
.
init_colons
=
function
()
{
if
(
emoji
.
inits
.
colons
)
return
;
emoji
.
inits
.
colons
=
1
;
emoji
.
rx_colons
=
new
RegExp
(
'
\
:[^
\\
s:]+
\
:
'
,
'
g
'
);
emoji
.
map
.
colons
=
{};
for
(
var
i
in
emoji
.
data
)
{
for
(
var
j
=
0
;
j
<
emoji
.
data
[
i
][
3
].
length
;
j
++
)
{
emoji
.
map
.
colons
[
emoji
.
data
[
i
][
3
][
j
]]
=
i
;
}
}
};
emoji
.
init_unified
=
function
()
{
if
(
emoji
.
inits
.
unified
)
return
;
emoji
.
inits
.
unified
=
1
;
var
a
=
[];
emoji
.
map
.
unified
=
{};
for
(
var
i
in
emoji
.
data
)
{
for
(
var
j
=
0
;
j
<
emoji
.
data
[
i
][
0
].
length
;
j
++
)
{
a
.
push
(
emoji
.
data
[
i
][
0
][
j
]);
emoji
.
map
.
unified
[
emoji
.
data
[
i
][
0
][
j
]]
=
i
;
}
}
emoji
.
rx_unified
=
new
RegExp
(
'
(
'
+
a
.
join
(
'
|
'
)
+
'
)
'
,
"
g
"
);
};
emoji
.
escape_rx
=
function
(
text
)
{
return
text
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
);
};
}).
call
(
function
()
{
return
this
||
(
typeof
window
!==
'
undefined
'
?
window
:
global
);
}());
js/angular-sanitize.js
→
js/
lib/
angular-sanitize.js
View file @
9151b787
File moved
js/angular-sanitize.min.js.map
→
js/
lib/
angular-sanitize.min.js.map
View file @
9151b787
File moved
js/angular.min.js
→
js/
lib/
angular.min.js
View file @
9151b787
File moved
js/angular.min.js.map
→
js/
lib/
angular.min.js.map
View file @
9151b787
File moved
js/bootstrap.min.js
→
js/
lib/
bootstrap.min.js
View file @
9151b787
File moved
js/
jquery-1.11.1
.min.js
→
js/
lib/jquery
.min.js
View file @
9151b787
File moved
js/util.js
0 → 100644
View file @
9151b787
'
use strict
'
;
function
checkDragEvent
(
e
)
{
if
(
!
e
||
e
.
target
&&
(
e
.
target
.
tagName
==
'
IMG
'
||
e
.
target
.
tagName
==
'
A
'
))
return
false
;
if
(
e
.
dataTransfer
&&
e
.
dataTransfer
.
types
)
{
for
(
var
i
=
0
;
i
<
e
.
dataTransfer
.
types
.
length
;
i
++
)
{
if
(
e
.
dataTransfer
.
types
[
i
]
==
'
Files
'
)
{
return
true
;
}
}
}
else
{
return
true
;
}
return
false
;
}
function
cancelEvent
(
event
)
{
event
=
event
||
window
.
event
;
if
(
event
)
{
event
=
event
.
originalEvent
||
event
;
if
(
event
.
stopPropagation
)
event
.
stopPropagation
();
if
(
event
.
preventDefault
)
event
.
preventDefault
();
}
return
false
;
}
//ConfigStorage
(
function
(
window
)
{
var
keyPrefix
=
''
;
var
noPrefix
=
false
;
var
cache
=
{};
var
useCs
=
!!
(
window
.
chrome
&&
chrome
.
storage
&&
chrome
.
storage
.
local
);
var
useLs
=
!
useCs
&&
!!
window
.
localStorage
;
function
storageSetPrefix
(
newPrefix
)
{
keyPrefix
=
newPrefix
;
}
function
storageSetNoPrefix
()
{
noPrefix
=
true
;
}
function
storageGetPrefix
()
{
if
(
noPrefix
)
{
noPrefix
=
false
;
return
''
;
}
return
keyPrefix
;
}
function
storageGetValue
()
{
var
keys
=
Array
.
prototype
.
slice
.
call
(
arguments
),
callback
=
keys
.
pop
(),
result
=
[],
single
=
keys
.
length
==
1
,
value
,
allFound
=
true
,
prefix
=
storageGetPrefix
(),
i
,
key
;
for
(
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
key
=
keys
[
i
]
=
prefix
+
keys
[
i
];
if
(
key
.
substr
(
0
,
3
)
!=
'
xt_
'
&&
cache
[
key
]
!==
undefined
)
{
result
.
push
(
cache
[
key
]);
}
else
if
(
useLs
)
{
try
{
value
=
localStorage
.
getItem
(
key
);
}
catch
(
e
)
{
useLs
=
false
;
}
try
{
value
=
(
value
===
undefined
||
value
===
null
)
?
false
:
JSON
.
parse
(
value
);
}
catch
(
e
)
{
value
=
false
;
}
result
.
push
(
cache
[
key
]
=
value
);
}
else
if
(
!
useCs
)
{
result
.
push
(
cache
[
key
]
=
false
);
}
else
{
allFound
=
false
;
}
}
if
(
allFound
)
{
return
callback
(
single
?
result
[
0
]
:
result
);
}
chrome
.
storage
.
local
.
get
(
keys
,
function
(
resultObj
)
{
var
value
;
result
=
[];
for
(
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
key
=
keys
[
i
];
value
=
resultObj
[
key
];
value
=
value
===
undefined
||
value
===
null
?
false
:
JSON
.
parse
(
value
);
result
.
push
(
cache
[
key
]
=
value
);
}
callback
(
single
?
result
[
0
]
:
result
);
});
};
function
storageSetValue
(
obj
,
callback
)
{
var
keyValues
=
{},
prefix
=
storageGetPrefix
(),
key
,
value
;
for
(
key
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
key
))
{
value
=
obj
[
key
];
key
=
prefix
+
key
;
cache
[
key
]
=
value
;
value
=
JSON
.
stringify
(
value
);
if
(
useLs
)
{
try
{
localStorage
.
setItem
(
key
,
value
);
}
catch
(
e
)
{
useLs
=
false
;
}
}
else
{
keyValues
[
key
]
=
value
;
}
}
}
if
(
useLs
||
!
useCs
)
{
if
(
callback
)
{
callback
();
}
return
;
}
chrome
.
storage
.
local
.
set
(
keyValues
,
callback
);
};
function
storageRemoveValue
()
{
var
keys
=
Array
.
prototype
.
slice
.
call
(
arguments
),
prefix
=
storageGetPrefix
(),
i
,
key
,
callback
;
if
(
typeof
keys
[
keys
.
length
-
1
]
===
'
function
'
)
{
callback
=
keys
.
pop
();
}
for
(
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
key
=
keys
[
i
]
=
prefix
+
keys
[
i
];
delete
cache
[
key
];
if
(
useLs
)
{
try
{
localStorage
.
removeItem
(
key
);
}
catch
(
e
)
{
useLs
=
false
;
}
}
}
if
(
useCs
)
{
chrome
.
storage
.
local
.
remove
(
keys
,
callback
);
}
else
if
(
callback
)
{
callback
();
}
};
window
.
ConfigStorage
=
{
prefix
:
storageSetPrefix
,
noPrefix
:
storageSetNoPrefix
,
get
:
storageGetValue
,
set
:
storageSetValue
,
remove
:
storageRemoveValue
};
})(
this
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment