diff options
Diffstat (limited to 'system/admin/static/editor')
53 files changed, 27687 insertions, 0 deletions
diff --git a/system/admin/static/editor/css/materialNote.css b/system/admin/static/editor/css/materialNote.css new file mode 100644 index 0000000..6cbe90e --- /dev/null +++ b/system/admin/static/editor/css/materialNote.css @@ -0,0 +1,2160 @@ +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; } + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; } + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; } + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; } + +.materialize-red.lighten-3 { + background-color: #f3989b !important; } + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; } + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; } + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; } + +.materialize-red.lighten-1 { + background-color: #ea454b !important; } + +.materialize-red-text.text-lighten-1 { + color: #ea454b !important; } + +.materialize-red { + background-color: #e51c23 !important; } + +.materialize-red-text { + color: #e51c23 !important; } + +.materialize-red.darken-1 { + background-color: #d0181e !important; } + +.materialize-red-text.text-darken-1 { + color: #d0181e !important; } + +.materialize-red.darken-2 { + background-color: #b9151b !important; } + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; } + +.materialize-red.darken-3 { + background-color: #a21318 !important; } + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; } + +.materialize-red.darken-4 { + background-color: #8b1014 !important; } + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; } + +.red.lighten-5 { + background-color: #FFEBEE !important; } + +.red-text.text-lighten-5 { + color: #FFEBEE !important; } + +.red.lighten-4 { + background-color: #FFCDD2 !important; } + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; } + +.red.lighten-3 { + background-color: #EF9A9A !important; } + +.red-text.text-lighten-3 { + color: #EF9A9A !important; } + +.red.lighten-2 { + background-color: #E57373 !important; } + +.red-text.text-lighten-2 { + color: #E57373 !important; } + +.red.lighten-1 { + background-color: #EF5350 !important; } + +.red-text.text-lighten-1 { + color: #EF5350 !important; } + +.red { + background-color: #F44336 !important; } + +.red-text { + color: #F44336 !important; } + +.red.darken-1 { + background-color: #E53935 !important; } + +.red-text.text-darken-1 { + color: #E53935 !important; } + +.red.darken-2 { + background-color: #D32F2F !important; } + +.red-text.text-darken-2 { + color: #D32F2F !important; } + +.red.darken-3 { + background-color: #C62828 !important; } + +.red-text.text-darken-3 { + color: #C62828 !important; } + +.red.darken-4 { + background-color: #B71C1C !important; } + +.red-text.text-darken-4 { + color: #B71C1C !important; } + +.red.accent-1 { + background-color: #FF8A80 !important; } + +.red-text.text-accent-1 { + color: #FF8A80 !important; } + +.red.accent-2 { + background-color: #FF5252 !important; } + +.red-text.text-accent-2 { + color: #FF5252 !important; } + +.red.accent-3 { + background-color: #FF1744 !important; } + +.red-text.text-accent-3 { + color: #FF1744 !important; } + +.red.accent-4 { + background-color: #D50000 !important; } + +.red-text.text-accent-4 { + color: #D50000 !important; } + +.pink.lighten-5 { + background-color: #fce4ec !important; } + +.pink-text.text-lighten-5 { + color: #fce4ec !important; } + +.pink.lighten-4 { + background-color: #f8bbd0 !important; } + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; } + +.pink.lighten-3 { + background-color: #f48fb1 !important; } + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; } + +.pink.lighten-2 { + background-color: #f06292 !important; } + +.pink-text.text-lighten-2 { + color: #f06292 !important; } + +.pink.lighten-1 { + background-color: #ec407a !important; } + +.pink-text.text-lighten-1 { + color: #ec407a !important; } + +.pink { + background-color: #e91e63 !important; } + +.pink-text { + color: #e91e63 !important; } + +.pink.darken-1 { + background-color: #d81b60 !important; } + +.pink-text.text-darken-1 { + color: #d81b60 !important; } + +.pink.darken-2 { + background-color: #c2185b !important; } + +.pink-text.text-darken-2 { + color: #c2185b !important; } + +.pink.darken-3 { + background-color: #ad1457 !important; } + +.pink-text.text-darken-3 { + color: #ad1457 !important; } + +.pink.darken-4 { + background-color: #880e4f !important; } + +.pink-text.text-darken-4 { + color: #880e4f !important; } + +.pink.accent-1 { + background-color: #ff80ab !important; } + +.pink-text.text-accent-1 { + color: #ff80ab !important; } + +.pink.accent-2 { + background-color: #ff4081 !important; } + +.pink-text.text-accent-2 { + color: #ff4081 !important; } + +.pink.accent-3 { + background-color: #f50057 !important; } + +.pink-text.text-accent-3 { + color: #f50057 !important; } + +.pink.accent-4 { + background-color: #c51162 !important; } + +.pink-text.text-accent-4 { + color: #c51162 !important; } + +.purple.lighten-5 { + background-color: #f3e5f5 !important; } + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; } + +.purple.lighten-4 { + background-color: #e1bee7 !important; } + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; } + +.purple.lighten-3 { + background-color: #ce93d8 !important; } + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; } + +.purple.lighten-2 { + background-color: #ba68c8 !important; } + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; } + +.purple.lighten-1 { + background-color: #ab47bc !important; } + +.purple-text.text-lighten-1 { + color: #ab47bc !important; } + +.purple { + background-color: #9c27b0 !important; } + +.purple-text { + color: #9c27b0 !important; } + +.purple.darken-1 { + background-color: #8e24aa !important; } + +.purple-text.text-darken-1 { + color: #8e24aa !important; } + +.purple.darken-2 { + background-color: #7b1fa2 !important; } + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; } + +.purple.darken-3 { + background-color: #6a1b9a !important; } + +.purple-text.text-darken-3 { + color: #6a1b9a !important; } + +.purple.darken-4 { + background-color: #4a148c !important; } + +.purple-text.text-darken-4 { + color: #4a148c !important; } + +.purple.accent-1 { + background-color: #ea80fc !important; } + +.purple-text.text-accent-1 { + color: #ea80fc !important; } + +.purple.accent-2 { + background-color: #e040fb !important; } + +.purple-text.text-accent-2 { + color: #e040fb !important; } + +.purple.accent-3 { + background-color: #d500f9 !important; } + +.purple-text.text-accent-3 { + color: #d500f9 !important; } + +.purple.accent-4 { + background-color: #aa00ff !important; } + +.purple-text.text-accent-4 { + color: #aa00ff !important; } + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; } + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; } + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; } + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; } + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; } + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; } + +.deep-purple.lighten-2 { + background-color: #9575cd !important; } + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; } + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; } + +.deep-purple-text.text-lighten-1 { + color: #7e57c2 !important; } + +.deep-purple { + background-color: #673ab7 !important; } + +.deep-purple-text { + color: #673ab7 !important; } + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; } + +.deep-purple-text.text-darken-1 { + color: #5e35b1 !important; } + +.deep-purple.darken-2 { + background-color: #512da8 !important; } + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; } + +.deep-purple.darken-3 { + background-color: #4527a0 !important; } + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; } + +.deep-purple.darken-4 { + background-color: #311b92 !important; } + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; } + +.deep-purple.accent-1 { + background-color: #b388ff !important; } + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; } + +.deep-purple.accent-2 { + background-color: #7c4dff !important; } + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; } + +.deep-purple.accent-3 { + background-color: #651fff !important; } + +.deep-purple-text.text-accent-3 { + color: #651fff !important; } + +.deep-purple.accent-4 { + background-color: #6200ea !important; } + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; } + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; } + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; } + +.indigo.lighten-4 { + background-color: #c5cae9 !important; } + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; } + +.indigo.lighten-3 { + background-color: #9fa8da !important; } + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; } + +.indigo.lighten-2 { + background-color: #7986cb !important; } + +.indigo-text.text-lighten-2 { + color: #7986cb !important; } + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; } + +.indigo-text.text-lighten-1 { + color: #5c6bc0 !important; } + +.indigo { + background-color: #3f51b5 !important; } + +.indigo-text { + color: #3f51b5 !important; } + +.indigo.darken-1 { + background-color: #3949ab !important; } + +.indigo-text.text-darken-1 { + color: #3949ab !important; } + +.indigo.darken-2 { + background-color: #303f9f !important; } + +.indigo-text.text-darken-2 { + color: #303f9f !important; } + +.indigo.darken-3 { + background-color: #283593 !important; } + +.indigo-text.text-darken-3 { + color: #283593 !important; } + +.indigo.darken-4 { + background-color: #1a237e !important; } + +.indigo-text.text-darken-4 { + color: #1a237e !important; } + +.indigo.accent-1 { + background-color: #8c9eff !important; } + +.indigo-text.text-accent-1 { + color: #8c9eff !important; } + +.indigo.accent-2 { + background-color: #536dfe !important; } + +.indigo-text.text-accent-2 { + color: #536dfe !important; } + +.indigo.accent-3 { + background-color: #3d5afe !important; } + +.indigo-text.text-accent-3 { + color: #3d5afe !important; } + +.indigo.accent-4 { + background-color: #304ffe !important; } + +.indigo-text.text-accent-4 { + color: #304ffe !important; } + +.blue.lighten-5 { + background-color: #E3F2FD !important; } + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; } + +.blue.lighten-4 { + background-color: #BBDEFB !important; } + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; } + +.blue.lighten-3 { + background-color: #90CAF9 !important; } + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; } + +.blue.lighten-2 { + background-color: #64B5F6 !important; } + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; } + +.blue.lighten-1 { + background-color: #42A5F5 !important; } + +.blue-text.text-lighten-1 { + color: #42A5F5 !important; } + +.blue { + background-color: #2196F3 !important; } + +.blue-text { + color: #2196F3 !important; } + +.blue.darken-1 { + background-color: #1E88E5 !important; } + +.blue-text.text-darken-1 { + color: #1E88E5 !important; } + +.blue.darken-2 { + background-color: #1976D2 !important; } + +.blue-text.text-darken-2 { + color: #1976D2 !important; } + +.blue.darken-3 { + background-color: #1565C0 !important; } + +.blue-text.text-darken-3 { + color: #1565C0 !important; } + +.blue.darken-4 { + background-color: #0D47A1 !important; } + +.blue-text.text-darken-4 { + color: #0D47A1 !important; } + +.blue.accent-1 { + background-color: #82B1FF !important; } + +.blue-text.text-accent-1 { + color: #82B1FF !important; } + +.blue.accent-2 { + background-color: #448AFF !important; } + +.blue-text.text-accent-2 { + color: #448AFF !important; } + +.blue.accent-3 { + background-color: #2979FF !important; } + +.blue-text.text-accent-3 { + color: #2979FF !important; } + +.blue.accent-4 { + background-color: #2962FF !important; } + +.blue-text.text-accent-4 { + color: #2962FF !important; } + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; } + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; } + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; } + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; } + +.light-blue.lighten-3 { + background-color: #81d4fa !important; } + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; } + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; } + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; } + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; } + +.light-blue-text.text-lighten-1 { + color: #29b6f6 !important; } + +.light-blue { + background-color: #03a9f4 !important; } + +.light-blue-text { + color: #03a9f4 !important; } + +.light-blue.darken-1 { + background-color: #039be5 !important; } + +.light-blue-text.text-darken-1 { + color: #039be5 !important; } + +.light-blue.darken-2 { + background-color: #0288d1 !important; } + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; } + +.light-blue.darken-3 { + background-color: #0277bd !important; } + +.light-blue-text.text-darken-3 { + color: #0277bd !important; } + +.light-blue.darken-4 { + background-color: #01579b !important; } + +.light-blue-text.text-darken-4 { + color: #01579b !important; } + +.light-blue.accent-1 { + background-color: #80d8ff !important; } + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; } + +.light-blue.accent-2 { + background-color: #40c4ff !important; } + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; } + +.light-blue.accent-3 { + background-color: #00b0ff !important; } + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; } + +.light-blue.accent-4 { + background-color: #0091ea !important; } + +.light-blue-text.text-accent-4 { + color: #0091ea !important; } + +.cyan.lighten-5 { + background-color: #e0f7fa !important; } + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; } + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; } + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; } + +.cyan.lighten-3 { + background-color: #80deea !important; } + +.cyan-text.text-lighten-3 { + color: #80deea !important; } + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; } + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; } + +.cyan.lighten-1 { + background-color: #26c6da !important; } + +.cyan-text.text-lighten-1 { + color: #26c6da !important; } + +.cyan { + background-color: #00bcd4 !important; } + +.cyan-text { + color: #00bcd4 !important; } + +.cyan.darken-1 { + background-color: #00acc1 !important; } + +.cyan-text.text-darken-1 { + color: #00acc1 !important; } + +.cyan.darken-2 { + background-color: #0097a7 !important; } + +.cyan-text.text-darken-2 { + color: #0097a7 !important; } + +.cyan.darken-3 { + background-color: #00838f !important; } + +.cyan-text.text-darken-3 { + color: #00838f !important; } + +.cyan.darken-4 { + background-color: #006064 !important; } + +.cyan-text.text-darken-4 { + color: #006064 !important; } + +.cyan.accent-1 { + background-color: #84ffff !important; } + +.cyan-text.text-accent-1 { + color: #84ffff !important; } + +.cyan.accent-2 { + background-color: #18ffff !important; } + +.cyan-text.text-accent-2 { + color: #18ffff !important; } + +.cyan.accent-3 { + background-color: #00e5ff !important; } + +.cyan-text.text-accent-3 { + color: #00e5ff !important; } + +.cyan.accent-4 { + background-color: #00b8d4 !important; } + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; } + +.teal.lighten-5 { + background-color: #e0f2f1 !important; } + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; } + +.teal.lighten-4 { + background-color: #b2dfdb !important; } + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; } + +.teal.lighten-3 { + background-color: #80cbc4 !important; } + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; } + +.teal.lighten-2 { + background-color: #4db6ac !important; } + +.teal-text.text-lighten-2 { + color: #4db6ac !important; } + +.teal.lighten-1 { + background-color: #26a69a !important; } + +.teal-text.text-lighten-1 { + color: #26a69a !important; } + +.teal { + background-color: #009688 !important; } + +.teal-text { + color: #009688 !important; } + +.teal.darken-1 { + background-color: #00897b !important; } + +.teal-text.text-darken-1 { + color: #00897b !important; } + +.teal.darken-2 { + background-color: #00796b !important; } + +.teal-text.text-darken-2 { + color: #00796b !important; } + +.teal.darken-3 { + background-color: #00695c !important; } + +.teal-text.text-darken-3 { + color: #00695c !important; } + +.teal.darken-4 { + background-color: #004d40 !important; } + +.teal-text.text-darken-4 { + color: #004d40 !important; } + +.teal.accent-1 { + background-color: #a7ffeb !important; } + +.teal-text.text-accent-1 { + color: #a7ffeb !important; } + +.teal.accent-2 { + background-color: #64ffda !important; } + +.teal-text.text-accent-2 { + color: #64ffda !important; } + +.teal.accent-3 { + background-color: #1de9b6 !important; } + +.teal-text.text-accent-3 { + color: #1de9b6 !important; } + +.teal.accent-4 { + background-color: #00bfa5 !important; } + +.teal-text.text-accent-4 { + color: #00bfa5 !important; } + +.green.lighten-5 { + background-color: #E8F5E9 !important; } + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; } + +.green.lighten-4 { + background-color: #C8E6C9 !important; } + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; } + +.green.lighten-3 { + background-color: #A5D6A7 !important; } + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; } + +.green.lighten-2 { + background-color: #81C784 !important; } + +.green-text.text-lighten-2 { + color: #81C784 !important; } + +.green.lighten-1 { + background-color: #66BB6A !important; } + +.green-text.text-lighten-1 { + color: #66BB6A !important; } + +.green { + background-color: #4CAF50 !important; } + +.green-text { + color: #4CAF50 !important; } + +.green.darken-1 { + background-color: #43A047 !important; } + +.green-text.text-darken-1 { + color: #43A047 !important; } + +.green.darken-2 { + background-color: #388E3C !important; } + +.green-text.text-darken-2 { + color: #388E3C !important; } + +.green.darken-3 { + background-color: #2E7D32 !important; } + +.green-text.text-darken-3 { + color: #2E7D32 !important; } + +.green.darken-4 { + background-color: #1B5E20 !important; } + +.green-text.text-darken-4 { + color: #1B5E20 !important; } + +.green.accent-1 { + background-color: #B9F6CA !important; } + +.green-text.text-accent-1 { + color: #B9F6CA !important; } + +.green.accent-2 { + background-color: #69F0AE !important; } + +.green-text.text-accent-2 { + color: #69F0AE !important; } + +.green.accent-3 { + background-color: #00E676 !important; } + +.green-text.text-accent-3 { + color: #00E676 !important; } + +.green.accent-4 { + background-color: #00C853 !important; } + +.green-text.text-accent-4 { + color: #00C853 !important; } + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; } + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; } + +.light-green.lighten-4 { + background-color: #dcedc8 !important; } + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; } + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; } + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; } + +.light-green.lighten-2 { + background-color: #aed581 !important; } + +.light-green-text.text-lighten-2 { + color: #aed581 !important; } + +.light-green.lighten-1 { + background-color: #9ccc65 !important; } + +.light-green-text.text-lighten-1 { + color: #9ccc65 !important; } + +.light-green { + background-color: #8bc34a !important; } + +.light-green-text { + color: #8bc34a !important; } + +.light-green.darken-1 { + background-color: #7cb342 !important; } + +.light-green-text.text-darken-1 { + color: #7cb342 !important; } + +.light-green.darken-2 { + background-color: #689f38 !important; } + +.light-green-text.text-darken-2 { + color: #689f38 !important; } + +.light-green.darken-3 { + background-color: #558b2f !important; } + +.light-green-text.text-darken-3 { + color: #558b2f !important; } + +.light-green.darken-4 { + background-color: #33691e !important; } + +.light-green-text.text-darken-4 { + color: #33691e !important; } + +.light-green.accent-1 { + background-color: #ccff90 !important; } + +.light-green-text.text-accent-1 { + color: #ccff90 !important; } + +.light-green.accent-2 { + background-color: #b2ff59 !important; } + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; } + +.light-green.accent-3 { + background-color: #76ff03 !important; } + +.light-green-text.text-accent-3 { + color: #76ff03 !important; } + +.light-green.accent-4 { + background-color: #64dd17 !important; } + +.light-green-text.text-accent-4 { + color: #64dd17 !important; } + +.lime.lighten-5 { + background-color: #f9fbe7 !important; } + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; } + +.lime.lighten-4 { + background-color: #f0f4c3 !important; } + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; } + +.lime.lighten-3 { + background-color: #e6ee9c !important; } + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; } + +.lime.lighten-2 { + background-color: #dce775 !important; } + +.lime-text.text-lighten-2 { + color: #dce775 !important; } + +.lime.lighten-1 { + background-color: #d4e157 !important; } + +.lime-text.text-lighten-1 { + color: #d4e157 !important; } + +.lime { + background-color: #cddc39 !important; } + +.lime-text { + color: #cddc39 !important; } + +.lime.darken-1 { + background-color: #c0ca33 !important; } + +.lime-text.text-darken-1 { + color: #c0ca33 !important; } + +.lime.darken-2 { + background-color: #afb42b !important; } + +.lime-text.text-darken-2 { + color: #afb42b !important; } + +.lime.darken-3 { + background-color: #9e9d24 !important; } + +.lime-text.text-darken-3 { + color: #9e9d24 !important; } + +.lime.darken-4 { + background-color: #827717 !important; } + +.lime-text.text-darken-4 { + color: #827717 !important; } + +.lime.accent-1 { + background-color: #f4ff81 !important; } + +.lime-text.text-accent-1 { + color: #f4ff81 !important; } + +.lime.accent-2 { + background-color: #eeff41 !important; } + +.lime-text.text-accent-2 { + color: #eeff41 !important; } + +.lime.accent-3 { + background-color: #c6ff00 !important; } + +.lime-text.text-accent-3 { + color: #c6ff00 !important; } + +.lime.accent-4 { + background-color: #aeea00 !important; } + +.lime-text.text-accent-4 { + color: #aeea00 !important; } + +.yellow.lighten-5 { + background-color: #fffde7 !important; } + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; } + +.yellow.lighten-4 { + background-color: #fff9c4 !important; } + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; } + +.yellow.lighten-3 { + background-color: #fff59d !important; } + +.yellow-text.text-lighten-3 { + color: #fff59d !important; } + +.yellow.lighten-2 { + background-color: #fff176 !important; } + +.yellow-text.text-lighten-2 { + color: #fff176 !important; } + +.yellow.lighten-1 { + background-color: #ffee58 !important; } + +.yellow-text.text-lighten-1 { + color: #ffee58 !important; } + +.yellow { + background-color: #ffeb3b !important; } + +.yellow-text { + color: #ffeb3b !important; } + +.yellow.darken-1 { + background-color: #fdd835 !important; } + +.yellow-text.text-darken-1 { + color: #fdd835 !important; } + +.yellow.darken-2 { + background-color: #fbc02d !important; } + +.yellow-text.text-darken-2 { + color: #fbc02d !important; } + +.yellow.darken-3 { + background-color: #f9a825 !important; } + +.yellow-text.text-darken-3 { + color: #f9a825 !important; } + +.yellow.darken-4 { + background-color: #f57f17 !important; } + +.yellow-text.text-darken-4 { + color: #f57f17 !important; } + +.yellow.accent-1 { + background-color: #ffff8d !important; } + +.yellow-text.text-accent-1 { + color: #ffff8d !important; } + +.yellow.accent-2 { + background-color: #ffff00 !important; } + +.yellow-text.text-accent-2 { + color: #ffff00 !important; } + +.yellow.accent-3 { + background-color: #ffea00 !important; } + +.yellow-text.text-accent-3 { + color: #ffea00 !important; } + +.yellow.accent-4 { + background-color: #ffd600 !important; } + +.yellow-text.text-accent-4 { + color: #ffd600 !important; } + +.amber.lighten-5 { + background-color: #fff8e1 !important; } + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; } + +.amber.lighten-4 { + background-color: #ffecb3 !important; } + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; } + +.amber.lighten-3 { + background-color: #ffe082 !important; } + +.amber-text.text-lighten-3 { + color: #ffe082 !important; } + +.amber.lighten-2 { + background-color: #ffd54f !important; } + +.amber-text.text-lighten-2 { + color: #ffd54f !important; } + +.amber.lighten-1 { + background-color: #ffca28 !important; } + +.amber-text.text-lighten-1 { + color: #ffca28 !important; } + +.amber { + background-color: #ffc107 !important; } + +.amber-text { + color: #ffc107 !important; } + +.amber.darken-1 { + background-color: #ffb300 !important; } + +.amber-text.text-darken-1 { + color: #ffb300 !important; } + +.amber.darken-2 { + background-color: #ffa000 !important; } + +.amber-text.text-darken-2 { + color: #ffa000 !important; } + +.amber.darken-3 { + background-color: #ff8f00 !important; } + +.amber-text.text-darken-3 { + color: #ff8f00 !important; } + +.amber.darken-4 { + background-color: #ff6f00 !important; } + +.amber-text.text-darken-4 { + color: #ff6f00 !important; } + +.amber.accent-1 { + background-color: #ffe57f !important; } + +.amber-text.text-accent-1 { + color: #ffe57f !important; } + +.amber.accent-2 { + background-color: #ffd740 !important; } + +.amber-text.text-accent-2 { + color: #ffd740 !important; } + +.amber.accent-3 { + background-color: #ffc400 !important; } + +.amber-text.text-accent-3 { + color: #ffc400 !important; } + +.amber.accent-4 { + background-color: #ffab00 !important; } + +.amber-text.text-accent-4 { + color: #ffab00 !important; } + +.orange.lighten-5 { + background-color: #fff3e0 !important; } + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; } + +.orange.lighten-4 { + background-color: #ffe0b2 !important; } + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; } + +.orange.lighten-3 { + background-color: #ffcc80 !important; } + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; } + +.orange.lighten-2 { + background-color: #ffb74d !important; } + +.orange-text.text-lighten-2 { + color: #ffb74d !important; } + +.orange.lighten-1 { + background-color: #ffa726 !important; } + +.orange-text.text-lighten-1 { + color: #ffa726 !important; } + +.orange { + background-color: #ff9800 !important; } + +.orange-text { + color: #ff9800 !important; } + +.orange.darken-1 { + background-color: #fb8c00 !important; } + +.orange-text.text-darken-1 { + color: #fb8c00 !important; } + +.orange.darken-2 { + background-color: #f57c00 !important; } + +.orange-text.text-darken-2 { + color: #f57c00 !important; } + +.orange.darken-3 { + background-color: #ef6c00 !important; } + +.orange-text.text-darken-3 { + color: #ef6c00 !important; } + +.orange.darken-4 { + background-color: #e65100 !important; } + +.orange-text.text-darken-4 { + color: #e65100 !important; } + +.orange.accent-1 { + background-color: #ffd180 !important; } + +.orange-text.text-accent-1 { + color: #ffd180 !important; } + +.orange.accent-2 { + background-color: #ffab40 !important; } + +.orange-text.text-accent-2 { + color: #ffab40 !important; } + +.orange.accent-3 { + background-color: #ff9100 !important; } + +.orange-text.text-accent-3 { + color: #ff9100 !important; } + +.orange.accent-4 { + background-color: #ff6d00 !important; } + +.orange-text.text-accent-4 { + color: #ff6d00 !important; } + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; } + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; } + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; } + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; } + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; } + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; } + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; } + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; } + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; } + +.deep-orange-text.text-lighten-1 { + color: #ff7043 !important; } + +.deep-orange { + background-color: #ff5722 !important; } + +.deep-orange-text { + color: #ff5722 !important; } + +.deep-orange.darken-1 { + background-color: #f4511e !important; } + +.deep-orange-text.text-darken-1 { + color: #f4511e !important; } + +.deep-orange.darken-2 { + background-color: #e64a19 !important; } + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; } + +.deep-orange.darken-3 { + background-color: #d84315 !important; } + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; } + +.deep-orange.darken-4 { + background-color: #bf360c !important; } + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; } + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; } + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; } + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; } + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; } + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; } + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; } + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; } + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; } + +.brown.lighten-5 { + background-color: #efebe9 !important; } + +.brown-text.text-lighten-5 { + color: #efebe9 !important; } + +.brown.lighten-4 { + background-color: #d7ccc8 !important; } + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; } + +.brown.lighten-3 { + background-color: #bcaaa4 !important; } + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; } + +.brown.lighten-2 { + background-color: #a1887f !important; } + +.brown-text.text-lighten-2 { + color: #a1887f !important; } + +.brown.lighten-1 { + background-color: #8d6e63 !important; } + +.brown-text.text-lighten-1 { + color: #8d6e63 !important; } + +.brown { + background-color: #795548 !important; } + +.brown-text { + color: #795548 !important; } + +.brown.darken-1 { + background-color: #6d4c41 !important; } + +.brown-text.text-darken-1 { + color: #6d4c41 !important; } + +.brown.darken-2 { + background-color: #5d4037 !important; } + +.brown-text.text-darken-2 { + color: #5d4037 !important; } + +.brown.darken-3 { + background-color: #4e342e !important; } + +.brown-text.text-darken-3 { + color: #4e342e !important; } + +.brown.darken-4 { + background-color: #3e2723 !important; } + +.brown-text.text-darken-4 { + color: #3e2723 !important; } + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; } + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; } + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; } + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; } + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; } + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; } + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; } + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; } + +.blue-grey.lighten-1 { + background-color: #78909c !important; } + +.blue-grey-text.text-lighten-1 { + color: #78909c !important; } + +.blue-grey { + background-color: #607d8b !important; } + +.blue-grey-text { + color: #607d8b !important; } + +.blue-grey.darken-1 { + background-color: #546e7a !important; } + +.blue-grey-text.text-darken-1 { + color: #546e7a !important; } + +.blue-grey.darken-2 { + background-color: #455a64 !important; } + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; } + +.blue-grey.darken-3 { + background-color: #37474f !important; } + +.blue-grey-text.text-darken-3 { + color: #37474f !important; } + +.blue-grey.darken-4 { + background-color: #263238 !important; } + +.blue-grey-text.text-darken-4 { + color: #263238 !important; } + +.grey.lighten-5 { + background-color: #fafafa !important; } + +.grey-text.text-lighten-5 { + color: #fafafa !important; } + +.grey.lighten-4 { + background-color: #f5f5f5 !important; } + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; } + +.grey.lighten-3 { + background-color: #eeeeee !important; } + +.grey-text.text-lighten-3 { + color: #eeeeee !important; } + +.grey.lighten-2 { + background-color: #e0e0e0 !important; } + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; } + +.grey.lighten-1 { + background-color: #bdbdbd !important; } + +.grey-text.text-lighten-1 { + color: #bdbdbd !important; } + +.grey { + background-color: #9e9e9e !important; } + +.grey-text { + color: #9e9e9e !important; } + +.grey.darken-1 { + background-color: #757575 !important; } + +.grey-text.text-darken-1 { + color: #757575 !important; } + +.grey.darken-2 { + background-color: #616161 !important; } + +.grey-text.text-darken-2 { + color: #616161 !important; } + +.grey.darken-3 { + background-color: #424242 !important; } + +.grey-text.text-darken-3 { + color: #424242 !important; } + +.grey.darken-4 { + background-color: #212121 !important; } + +.grey-text.text-darken-4 { + color: #212121 !important; } + +.shades.black { + background-color: #000000 !important; } + +.shades-text.text-black { + color: #000000 !important; } + +.shades.white { + background-color: #FFFFFF !important; } + +.shades-text.text-white { + color: #FFFFFF !important; } + +.shades.transparent { + background-color: transparent !important; } + +.shades-text.text-transparent { + color: transparent !important; } + +.black { + background-color: #000000 !important; } + +.black-text { + color: #000000 !important; } + +.white { + background-color: #FFFFFF !important; } + +.white-text { + color: #FFFFFF !important; } + +.transparent { + background-color: transparent !important; } + +.transparent-text { + color: transparent !important; } + +/*** Colors ***/ +/*** Badges ***/ +/*** Buttons ***/ +/*** Cards ***/ +/*** Collapsible ***/ +/*** Dropdown ***/ +/*** Fonts ***/ +/*** Forms ***/ +/*** Global ***/ +/*** Navbar ***/ +/*** SideNav ***/ +/*** Photo Slider ***/ +/*** Tabs ***/ +/*** Tables ***/ +/*** Toasts ***/ +/*** Typography ***/ +/*** Collections ***/ +/* Progress Bar */ +/* variables +=================================================================================*/ +.editorDialogs .modal, .note-editor .modal { + background-color: white; + color: #424242; + z-index: 1057 !important; + backface-visibility: hidden; } + .editorDialogs .modal .input-field input:not([readonly]), .editorDialogs .modal .input-field input.datepicker, .note-editor .modal .input-field input:not([readonly]), .note-editor .modal .input-field input.datepicker { + border-color: #424242 !important; } + .editorDialogs .modal .input-field input:focus:not([readonly]), .editorDialogs .modal .input-field input.datepicker:focus, .editorDialogs .modal textarea.materialize-textarea:focus:not([readonly]), .note-editor .modal .input-field input:focus:not([readonly]), .note-editor .modal .input-field input.datepicker:focus, .note-editor .modal textarea.materialize-textarea:focus:not([readonly]) { + box-shadow: 0 1px 0 0 #2196F3 !important; + border-color: #2196F3 !important; } + .editorDialogs .modal label, .editorDialogs .modal .input-field input:not([readonly]) + label, .editorDialogs .modal .input-field input.datepicker + label, .editorDialogs .modal .input-field .prefix, .editorDialogs .modal .note-editor + label, .note-editor .modal label, .note-editor .modal .input-field input:not([readonly]) + label, .note-editor .modal .input-field input.datepicker + label, .note-editor .modal .input-field .prefix, .note-editor .modal .note-editor + label { + color: #424242 !important; } + .editorDialogs .modal .input-field input:focus:not([readonly]) + label, .editorDialogs .modal .input-field input.datepicker:focus + label, .editorDialogs .modal .input-field .prefix.active, .editorDialogs .modal textarea.materialize-textarea:focus:not([readonly]) + label, .note-editor .modal .input-field input:focus:not([readonly]) + label, .note-editor .modal .input-field input.datepicker:focus + label, .note-editor .modal .input-field .prefix.active, .note-editor .modal textarea.materialize-textarea:focus:not([readonly]) + label { + color: #2196F3 !important; } + .editorDialogs .modal .btn, .note-editor .modal .btn { + background-color: #0D47A1; + color: white !important; } + .editorDialogs .modal .btn:hover, .note-editor .modal .btn:hover { + background-color: #115cd0 !important; } + .editorDialogs .modal .btn.disabled, .note-editor .modal .btn.disabled { + background-color: #07285a !important; } + .editorDialogs .modal .modal-footer, .note-editor .modal .modal-footer { + background-color: #c7c7c7; } + .editorDialogs .modal .modal-footer .btnClose, .note-editor .modal .modal-footer .btnClose { + margin-right: 15px; + background-color: #B71C1C; } + .editorDialogs .modal .modal-footer .btnClose:hover, .note-editor .modal .modal-footer .btnClose:hover { + background-color: #de2828 !important; } + .editorDialogs .modal .canvasContainerEmpty, .note-editor .modal .canvasContainerEmpty { + border: solid 5px #2196F3; } + +.note-editor .note-editable::-webkit-scrollbar, .editorDialogs .modal-content::-webkit-scrollbar, .note-editor .note-color-palette::-webkit-scrollbar, .note-editor .note-codable::-webkit-scrollbar, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar { + width: 17px !important; } +.note-editor .note-editable::-webkit-scrollbar-track, .editorDialogs .modal-content::-webkit-scrollbar-track, .note-editor .note-color-palette::-webkit-scrollbar-track, .note-editor .note-codable::-webkit-scrollbar-track, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar-track { + background-color: #e0e0e0 !important; } +.note-editor .note-editable::-webkit-scrollbar-thumb, .editorDialogs .modal-content::-webkit-scrollbar-thumb, .note-editor .note-color-palette::-webkit-scrollbar-thumb, .note-editor .note-codable::-webkit-scrollbar-thumb, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar-thumb { + background-color: white !important; } +.note-editor .note-editable::-webkit-scrollbar-thumb:hover, .editorDialogs .modal-content::-webkit-scrollbar-thumb:hover, .note-editor .note-color-palette::-webkit-scrollbar-thumb:hover, .note-editor .note-codable::-webkit-scrollbar-thumb:hover, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar-thumb:hover { + background-color: white !important; } + +.note-editor { + position: relative; + border-left: 1px solid #e0e0e0; + border-bottom: 1px solid #e0e0e0; + border-right: 1px solid #e0e0e0; } + .note-editor .img-circle { + border-radius: 50%; } + .note-editor .img-rounded { + border-radius: 5%; } + .note-editor .img-thumbnail { + border: solid 2px #e0e0e0; + height: 200px; } + .note-editor .img-bordered { + border: solid 5px #e0e0e0; } + .note-editor .btn:hover { + background-color: #fafafa !important; } + .note-editor .btn.active { + background-color: #2196F3; } + .note-editor .note-editable ul li { + list-style-type: square !important; + display: list-item; + list-style-position: inside; } + .note-editor .note-dialog > div { + display: none; } + .note-editor .note-dialog .form-group { + margin-right: 0; + margin-left: 0; } + .note-editor .note-dialog .note-modal-form { + margin: 0; } + .note-editor .note-dialog .note-image-dialog .note-dropzone { + min-height: 100px; + margin-bottom: 10px; + font-size: 30px; + line-height: 4; + color: lightgray; + text-align: center; + border: 4px dashed lightgray; } + .note-editor .transparent { + opacity: 0; } + .note-editor .note-resizebar { + background-color: #e0e0e0; + width: 100%; + height: 13px; + cursor: ns-resize; + padding-top: 1px; } + .note-editor .note-resizebar .note-icon-bar { + width: 20px; + margin: 2px auto; + border-top: 2px solid white; } + .note-editor .note-toolbar { + position: relative; + color: #424242; + background-color: #e0e0e0; + margin: 0; + z-index: 1052; } + .note-editor .note-toolbar ul { + padding: 0; } + .note-editor .note-toolbar .btn.disabled, .note-editor .note-toolbar button.disabled { + display: none; } + .note-editor .note-toolbar .dropdown { + cursor: pointer; } + .note-editor .note-toolbar .note-current-fontname { + min-width: 134px; + display: inline-block; + text-align: left; } + .note-editor .note-handle .note-control-selection { + position: absolute; + display: none; + border: 2px solid #e0e0e0; } + .note-editor .note-handle .note-control-selection .note-control-selection-bg { + width: 100%; + height: 100%; + z-index: 3; + background-color: rgba(117, 117, 117, 0.3); } + .note-editor .note-handle .note-control-selection > div { + position: absolute; } + .note-editor .note-handle .note-control-selection .note-control-handle { + width: 7px; + height: 7px; + border: 1px solid black; } + .note-editor .note-handle .note-control-selection .note-control-holder { + width: 7px; + height: 7px; + border: 1px solid black; } + .note-editor .note-handle .note-control-selection .note-control-sizing { + width: 15px; + height: 15px; + background-color: #e0e0e0; + z-index: 5; + cursor: se-resize; } + .note-editor .note-handle .note-control-selection .note-control-nw { + top: -5px; + left: -5px; + border-right: 0; + border-bottom: 0; } + .note-editor .note-handle .note-control-selection .note-control-ne { + top: -5px; + right: -5px; + border-bottom: 0; + border-left: none; } + .note-editor .note-handle .note-control-selection .note-control-sw { + bottom: -5px; + left: -5px; + border-top: 0; + border-right: 0; } + .note-editor .note-handle .note-control-selection .note-control-se { + right: -5px; + bottom: -5px; } + .note-editor .note-handle .note-control-selection .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 17px; + font-size: 15px; + color: #424242; + background-color: #e0e0e0; + z-index: 5; } + +.note-dialog .note-help-dialog { + color: #e0e0e0; } + .note-dialog .note-help-dialog h4 { + color: #424242; } + .note-dialog .note-help-dialog thead { + background-color: #2196F3; } + .note-dialog .note-help-dialog tbody { + background-color: #e0e0e0; } + +.note-editor .btn-group, .popover .btn-group { + display: inline-block; + margin-right: 10px; + position: relative; } + .note-editor .btn-group ul, .popover .btn-group ul { + padding: 0; } + .note-editor .btn-group .closeLeft, .popover .btn-group .closeLeft { + padding-right: 0 !important; + margin-right: 0 !important; } + .note-editor .btn-group .closeLeft i, .popover .btn-group .closeLeft i { + margin-right: 0 !important; } + .note-editor .btn-group i.left, .popover .btn-group i.left { + margin-right: 5px; } +.note-editor .note-toolbar .btn, .popover .note-toolbar .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: #e0e0e0; } +.note-editor .btnSecond, .popover .btnSecond { + background-color: #0D47A1 !important; } +.note-editor .btnThird, .popover .btnThird { + background-color: #B71C1C !important; } +.note-editor note-toolbar button, .note-editor button, .note-editor .note-toolbar .btn, .popover note-toolbar button, .popover button, .popover .note-toolbar .btn { + background-color: #e0e0e0; + border: none; + height: 36px; + text-transform: uppercase; + color: #424242 !important; } +.note-editor [type="checkbox"]:checked + label:before, .note-editor [type="checkbox"]:checked + label:before, .popover [type="checkbox"]:checked + label:before, .popover [type="checkbox"]:checked + label:before { + border-right-color: #0D47A1 !important; + border-bottom-color: #0D47A1 !important; } +.note-editor .note-palette-title, .popover .note-palette-title { + padding: 0 !important; } +.note-editor .colorName, .popover .colorName { + display: inline-block; + color: #424242; } + @media only screen and (max-width: 600px) { + .note-editor .colorName, .popover .colorName { + display: none; } } +.note-editor .note-color-palette, .popover .note-color-palette { + line-height: 10px; + border: solid 3px #e0e0e0; + padding: 0 !important; + overflow-x: scroll; + overflow-y: hidden; } + .note-editor .note-color-palette .note-color-row, .popover .note-color-palette .note-color-row { + padding: 0 !important; + min-width: 300px; } + .note-editor .note-color-palette button.note-color-btn, .popover .note-color-palette button.note-color-btn { + width: 20px; + height: 20px; + padding: 0; + margin: 0; } + .note-editor .note-color-palette .note-color-btn:hover:after, .popover .note-color-palette .note-color-btn:hover:after { + position: absolute; + width: 30px; + height: 30px; + content: ""; + background-color: inherit; + margin-top: -15px; + margin-left: -15px; } +.note-editor .note-dimension-picker, .popover .note-dimension-picker { + overflow: hidden; } +.note-editor .largeDropdown, .popover .largeDropdown { + width: 290px; } +.note-editor .dropdown-menu, .popover .dropdown-menu { + z-index: 1033; } + .note-editor .dropdown-menu.note-check, .popover .dropdown-menu.note-check { + min-width: 80px; } + .note-editor .dropdown-menu label, .popover .dropdown-menu label { + color: #424242 !important; } +.note-editor ul.dropdown-menu, .popover ul.dropdown-menu { + position: absolute; + top: 20px; + background-color: #fafafa; + border-left: 3px solid #e0e0e0; + border-bottom: 3px solid #e0e0e0; + border-right: 3px solid #e0e0e0; } + .note-editor ul.dropdown-menu#colors, .popover ul.dropdown-menu#colors { + width: 342px; } + .note-editor ul.dropdown-menu#colors .indicator, .popover ul.dropdown-menu#colors .indicator { + width: 50%; + left: 0; } + .note-editor ul.dropdown-menu .colorTable, .popover ul.dropdown-menu .colorTable { + padding: 3px 0; } + .note-editor ul.dropdown-menu .tabs, .popover ul.dropdown-menu .tabs { + background-color: #e0e0e0; } + .note-editor ul.dropdown-menu .tabs:hover, .popover ul.dropdown-menu .tabs:hover { + background-color: #e0e0e0; } + .note-editor ul.dropdown-menu .tabs .tab a, .note-editor ul.dropdown-menu .tabs .tab a:hover, .popover ul.dropdown-menu .tabs .tab a, .popover ul.dropdown-menu .tabs .tab a:hover { + color: #9e9e9e; } + .note-editor ul.dropdown-menu .tabs .indicator, .popover ul.dropdown-menu .tabs .indicator { + background-color: #9e9e9e; } + .note-editor ul.dropdown-menu li, .popover ul.dropdown-menu li { + list-style-type: none; + padding: 0 !important; } + .note-editor ul.dropdown-menu li div, .popover ul.dropdown-menu li div { + padding: 3px 15px; + cursor: pointer; } + +.note-popover .popover { + position: absolute; + max-width: none; + color: #424242; } + .note-popover .popover .arrow { + width: 0; + height: 0; + border-style: solid; + border-width: 0 10px 10px 10px; + border-color: transparent transparent #e0e0e0 transparent; } + .note-popover .popover .popover-content { + background-color: #e0e0e0; } + .note-popover .popover .popover-content > a { + margin-left: 12px; } + .note-popover .popover .popover-content a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle; } + .note-popover .popover .popover-content .arrow { + left: 20px; } + .note-popover .popover .popover-content .btn-group { + display: inline-block; } + .note-popover .popover .popover-content .btn-group .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: #e0e0e0; + color: #424242 !important; } + +.note-popover .popover .popover-content .note-para .dropdown-menu, .note-toolbar .note-para .dropdown-menu { + min-width: 172px; + padding: 5px; } + +.note-popover .popover .popover-content .note-para .dropdown-menu > div:first-child, .note-toolbar .note-para .dropdown-menu > div:first-child { + margin-right: 5px; } + +.note-editor .note-dropzone { + position: absolute; + z-index: 100; + display: none; + color: #87cefa; + background-color: white; + border: 2px dashed #87cefa; + opacity: .95; + pointer-event: none; } + +.note-editor .note-dropzone .note-dropzone-message { + display: table-cell; + font-size: 28px; + font-weight: bold; + text-align: center; + vertical-align: middle; } + +.note-editor .note-dropzone.hover { + color: #098ddf; + border: 2px dashed #098ddf; } + +.note-editor.dragover .note-dropzone { + display: table; } + +.note-editor.fullscreen { + position: fixed; + top: 0; + left: 0; + z-index: 2021; + width: 100%; } + +.note-editor.fullscreen .note-editable { + background-color: white; } + +.note-editor.fullscreen .note-resizebar { + display: none; } + +.note-editor.codeview .note-editable { + display: none; } + +.note-editor.codeview .note-codable { + display: block; } + +.note-editor .note-statusbar { + background-color: #f5f5f5; } + +.note-editor .note-editable[contenteditable=true]:empty:not(:focus):before { + color: #a9a9a9; + content: attr(data-placeholder); } + +.note-editor .note-editable { + padding: 10px; + overflow: auto; + outline: 0; } + +.note-editor .note-editable[contenteditable="false"] { + background-color: #e5e5e5; } + +.note-editor .note-codable { + display: none; + width: 100%; + padding: 10px; + margin-bottom: 0; + font-family: Menlo, Monaco, monospace, sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + resize: none; } + +.note-air-editor { + outline: 0; } + +.note-popover .popover .popover-content, +.note-toolbar { + padding: 0; + margin: 0; } + +.note-popover .popover .popover-content > .btn-group, +.note-toolbar > .btn-group { + margin-top: 0; + margin-right: 5px; + margin-left: 0; } + +.note-popover .popover .popover-content .btn-group .note-table, +.note-toolbar .btn-group .note-table { + min-width: 0; + padding: 5px; } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker, +.note-toolbar .btn-group .note-table .note-dimension-picker { + font-size: 18px; } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher { + position: absolute !important; + z-index: 3; + width: 260px; + height: 260px; + cursor: pointer; } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: 312px; + height: 130px; + background-size: 26px 26px; + background-image: repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), repeating-linear-gradient(-90deg, transparent, transparent 4px, #fff 4px, #fff 26px); } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: 26px; + height: 26px; + background-size: 26px 26px; + background-image: repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), repeating-linear-gradient(-90deg, transparent, transparent 4px, #2196F3 4px, #2196F3 26px); } + +.note-popover .popover .popover-content .note-style h1, +.note-toolbar .note-style h1, +.note-popover .popover .popover-content .note-style h2, +.note-toolbar .note-style h2, +.note-popover .popover .popover-content .note-style h3, +.note-toolbar .note-style h3, +.note-popover .popover .popover-content .note-style h4, +.note-toolbar .note-style h4, +.note-popover .popover .popover-content .note-style h5, +.note-toolbar .note-style h5, +.note-popover .popover .popover-content .note-style h6, +.note-toolbar .note-style h6, +.note-popover .popover .popover-content .note-style blockquote, +.note-toolbar .note-style blockquote { + margin: 0; } + +.note-popover .popover .popover-content .note-color .dropdown-toggle, +.note-toolbar .note-color .dropdown-toggle { + width: 20px; + padding-left: 5px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group, +.note-toolbar .note-color .dropdown-menu .btn-group { + margin: 0; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group:first-child, +.note-toolbar .note-color .dropdown-menu .btn-group:first-child { + margin: 0 5px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-palette-title, +.note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title { + margin: 2px 7px; + font-size: 12px; + text-align: center; + border-bottom: 1px solid #eee; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset { + padding: 0 3px; + margin: 3px; + font-size: 11px; + cursor: pointer; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-row, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-row { + height: 20px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset:hover, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover { + background: #eee; } + +/*.note-popover .popover .popover-content .dropdown-menu, +.note-toolbar .dropdown-menu { + min-width: 90px +}*/ +.note-popover .popover .popover-content .dropdown-menu.right, +.note-toolbar .dropdown-menu.right { + right: 0; + left: auto; } + +.note-popover .popover .popover-content .dropdown-menu.right::before, +.note-toolbar .dropdown-menu.right::before { + right: 9px; + left: auto !important; } + +.note-popover .popover .popover-content .dropdown-menu.right::after, +.note-toolbar .dropdown-menu.right::after { + right: 10px; + left: auto !important; } + +.note-popover .popover .popover-content .dropdown-menu.note-check li a i, +.note-toolbar .dropdown-menu.note-check li a i { + color: deepskyblue; + visibility: hidden; } + +.note-popover .popover .popover-content .dropdown-menu.note-check li a.checked i, +.note-toolbar .dropdown-menu.note-check li a.checked i { + visibility: visible; } + +.note-popover .popover .popover-content .note-fontsize-10, +.note-toolbar .note-fontsize-10 { + font-size: 10px; } + +/*# sourceMappingURL=materialNote.css.map */ diff --git a/system/admin/static/editor/css/materialNote.css.map b/system/admin/static/editor/css/materialNote.css.map new file mode 100644 index 0000000..9c59b74 --- /dev/null +++ b/system/admin/static/editor/css/materialNote.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../sass/components/_color.scss","../sass/components/_variables.scss","../sass/materialNote.scss"], +"names": [], +"file": "materialNote.css" +}
\ No newline at end of file diff --git a/system/admin/static/editor/css/materialize.css b/system/admin/static/editor/css/materialize.css new file mode 100644 index 0000000..334ebbc --- /dev/null +++ b/system/admin/static/editor/css/materialize.css @@ -0,0 +1,8284 @@ +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; } + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; } + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; } + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; } + +.materialize-red.lighten-3 { + background-color: #f3989b !important; } + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; } + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; } + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; } + +.materialize-red.lighten-1 { + background-color: #ea454b !important; } + +.materialize-red-text.text-lighten-1 { + color: #ea454b !important; } + +.materialize-red { + background-color: #e51c23 !important; } + +.materialize-red-text { + color: #e51c23 !important; } + +.materialize-red.darken-1 { + background-color: #d0181e !important; } + +.materialize-red-text.text-darken-1 { + color: #d0181e !important; } + +.materialize-red.darken-2 { + background-color: #b9151b !important; } + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; } + +.materialize-red.darken-3 { + background-color: #a21318 !important; } + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; } + +.materialize-red.darken-4 { + background-color: #8b1014 !important; } + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; } + +.red.lighten-5 { + background-color: #FFEBEE !important; } + +.red-text.text-lighten-5 { + color: #FFEBEE !important; } + +.red.lighten-4 { + background-color: #FFCDD2 !important; } + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; } + +.red.lighten-3 { + background-color: #EF9A9A !important; } + +.red-text.text-lighten-3 { + color: #EF9A9A !important; } + +.red.lighten-2 { + background-color: #E57373 !important; } + +.red-text.text-lighten-2 { + color: #E57373 !important; } + +.red.lighten-1 { + background-color: #EF5350 !important; } + +.red-text.text-lighten-1 { + color: #EF5350 !important; } + +.red { + background-color: #F44336 !important; } + +.red-text { + color: #F44336 !important; } + +.red.darken-1 { + background-color: #E53935 !important; } + +.red-text.text-darken-1 { + color: #E53935 !important; } + +.red.darken-2 { + background-color: #D32F2F !important; } + +.red-text.text-darken-2 { + color: #D32F2F !important; } + +.red.darken-3 { + background-color: #C62828 !important; } + +.red-text.text-darken-3 { + color: #C62828 !important; } + +.red.darken-4 { + background-color: #B71C1C !important; } + +.red-text.text-darken-4 { + color: #B71C1C !important; } + +.red.accent-1 { + background-color: #FF8A80 !important; } + +.red-text.text-accent-1 { + color: #FF8A80 !important; } + +.red.accent-2 { + background-color: #FF5252 !important; } + +.red-text.text-accent-2 { + color: #FF5252 !important; } + +.red.accent-3 { + background-color: #FF1744 !important; } + +.red-text.text-accent-3 { + color: #FF1744 !important; } + +.red.accent-4 { + background-color: #D50000 !important; } + +.red-text.text-accent-4 { + color: #D50000 !important; } + +.pink.lighten-5 { + background-color: #fce4ec !important; } + +.pink-text.text-lighten-5 { + color: #fce4ec !important; } + +.pink.lighten-4 { + background-color: #f8bbd0 !important; } + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; } + +.pink.lighten-3 { + background-color: #f48fb1 !important; } + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; } + +.pink.lighten-2 { + background-color: #f06292 !important; } + +.pink-text.text-lighten-2 { + color: #f06292 !important; } + +.pink.lighten-1 { + background-color: #ec407a !important; } + +.pink-text.text-lighten-1 { + color: #ec407a !important; } + +.pink { + background-color: #e91e63 !important; } + +.pink-text { + color: #e91e63 !important; } + +.pink.darken-1 { + background-color: #d81b60 !important; } + +.pink-text.text-darken-1 { + color: #d81b60 !important; } + +.pink.darken-2 { + background-color: #c2185b !important; } + +.pink-text.text-darken-2 { + color: #c2185b !important; } + +.pink.darken-3 { + background-color: #ad1457 !important; } + +.pink-text.text-darken-3 { + color: #ad1457 !important; } + +.pink.darken-4 { + background-color: #880e4f !important; } + +.pink-text.text-darken-4 { + color: #880e4f !important; } + +.pink.accent-1 { + background-color: #ff80ab !important; } + +.pink-text.text-accent-1 { + color: #ff80ab !important; } + +.pink.accent-2 { + background-color: #ff4081 !important; } + +.pink-text.text-accent-2 { + color: #ff4081 !important; } + +.pink.accent-3 { + background-color: #f50057 !important; } + +.pink-text.text-accent-3 { + color: #f50057 !important; } + +.pink.accent-4 { + background-color: #c51162 !important; } + +.pink-text.text-accent-4 { + color: #c51162 !important; } + +.purple.lighten-5 { + background-color: #f3e5f5 !important; } + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; } + +.purple.lighten-4 { + background-color: #e1bee7 !important; } + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; } + +.purple.lighten-3 { + background-color: #ce93d8 !important; } + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; } + +.purple.lighten-2 { + background-color: #ba68c8 !important; } + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; } + +.purple.lighten-1 { + background-color: #ab47bc !important; } + +.purple-text.text-lighten-1 { + color: #ab47bc !important; } + +.purple { + background-color: #9c27b0 !important; } + +.purple-text { + color: #9c27b0 !important; } + +.purple.darken-1 { + background-color: #8e24aa !important; } + +.purple-text.text-darken-1 { + color: #8e24aa !important; } + +.purple.darken-2 { + background-color: #7b1fa2 !important; } + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; } + +.purple.darken-3 { + background-color: #6a1b9a !important; } + +.purple-text.text-darken-3 { + color: #6a1b9a !important; } + +.purple.darken-4 { + background-color: #4a148c !important; } + +.purple-text.text-darken-4 { + color: #4a148c !important; } + +.purple.accent-1 { + background-color: #ea80fc !important; } + +.purple-text.text-accent-1 { + color: #ea80fc !important; } + +.purple.accent-2 { + background-color: #e040fb !important; } + +.purple-text.text-accent-2 { + color: #e040fb !important; } + +.purple.accent-3 { + background-color: #d500f9 !important; } + +.purple-text.text-accent-3 { + color: #d500f9 !important; } + +.purple.accent-4 { + background-color: #aa00ff !important; } + +.purple-text.text-accent-4 { + color: #aa00ff !important; } + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; } + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; } + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; } + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; } + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; } + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; } + +.deep-purple.lighten-2 { + background-color: #9575cd !important; } + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; } + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; } + +.deep-purple-text.text-lighten-1 { + color: #7e57c2 !important; } + +.deep-purple { + background-color: #673ab7 !important; } + +.deep-purple-text { + color: #673ab7 !important; } + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; } + +.deep-purple-text.text-darken-1 { + color: #5e35b1 !important; } + +.deep-purple.darken-2 { + background-color: #512da8 !important; } + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; } + +.deep-purple.darken-3 { + background-color: #4527a0 !important; } + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; } + +.deep-purple.darken-4 { + background-color: #311b92 !important; } + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; } + +.deep-purple.accent-1 { + background-color: #b388ff !important; } + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; } + +.deep-purple.accent-2 { + background-color: #7c4dff !important; } + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; } + +.deep-purple.accent-3 { + background-color: #651fff !important; } + +.deep-purple-text.text-accent-3 { + color: #651fff !important; } + +.deep-purple.accent-4 { + background-color: #6200ea !important; } + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; } + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; } + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; } + +.indigo.lighten-4 { + background-color: #c5cae9 !important; } + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; } + +.indigo.lighten-3 { + background-color: #9fa8da !important; } + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; } + +.indigo.lighten-2 { + background-color: #7986cb !important; } + +.indigo-text.text-lighten-2 { + color: #7986cb !important; } + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; } + +.indigo-text.text-lighten-1 { + color: #5c6bc0 !important; } + +.indigo { + background-color: #3f51b5 !important; } + +.indigo-text { + color: #3f51b5 !important; } + +.indigo.darken-1 { + background-color: #3949ab !important; } + +.indigo-text.text-darken-1 { + color: #3949ab !important; } + +.indigo.darken-2 { + background-color: #303f9f !important; } + +.indigo-text.text-darken-2 { + color: #303f9f !important; } + +.indigo.darken-3 { + background-color: #283593 !important; } + +.indigo-text.text-darken-3 { + color: #283593 !important; } + +.indigo.darken-4 { + background-color: #1a237e !important; } + +.indigo-text.text-darken-4 { + color: #1a237e !important; } + +.indigo.accent-1 { + background-color: #8c9eff !important; } + +.indigo-text.text-accent-1 { + color: #8c9eff !important; } + +.indigo.accent-2 { + background-color: #536dfe !important; } + +.indigo-text.text-accent-2 { + color: #536dfe !important; } + +.indigo.accent-3 { + background-color: #3d5afe !important; } + +.indigo-text.text-accent-3 { + color: #3d5afe !important; } + +.indigo.accent-4 { + background-color: #304ffe !important; } + +.indigo-text.text-accent-4 { + color: #304ffe !important; } + +.blue.lighten-5 { + background-color: #E3F2FD !important; } + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; } + +.blue.lighten-4 { + background-color: #BBDEFB !important; } + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; } + +.blue.lighten-3 { + background-color: #90CAF9 !important; } + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; } + +.blue.lighten-2 { + background-color: #64B5F6 !important; } + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; } + +.blue.lighten-1 { + background-color: #42A5F5 !important; } + +.blue-text.text-lighten-1 { + color: #42A5F5 !important; } + +.blue { + background-color: #2196F3 !important; } + +.blue-text { + color: #2196F3 !important; } + +.blue.darken-1 { + background-color: #1E88E5 !important; } + +.blue-text.text-darken-1 { + color: #1E88E5 !important; } + +.blue.darken-2 { + background-color: #1976D2 !important; } + +.blue-text.text-darken-2 { + color: #1976D2 !important; } + +.blue.darken-3 { + background-color: #1565C0 !important; } + +.blue-text.text-darken-3 { + color: #1565C0 !important; } + +.blue.darken-4 { + background-color: #0D47A1 !important; } + +.blue-text.text-darken-4 { + color: #0D47A1 !important; } + +.blue.accent-1 { + background-color: #82B1FF !important; } + +.blue-text.text-accent-1 { + color: #82B1FF !important; } + +.blue.accent-2 { + background-color: #448AFF !important; } + +.blue-text.text-accent-2 { + color: #448AFF !important; } + +.blue.accent-3 { + background-color: #2979FF !important; } + +.blue-text.text-accent-3 { + color: #2979FF !important; } + +.blue.accent-4 { + background-color: #2962FF !important; } + +.blue-text.text-accent-4 { + color: #2962FF !important; } + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; } + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; } + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; } + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; } + +.light-blue.lighten-3 { + background-color: #81d4fa !important; } + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; } + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; } + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; } + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; } + +.light-blue-text.text-lighten-1 { + color: #29b6f6 !important; } + +.light-blue { + background-color: #03a9f4 !important; } + +.light-blue-text { + color: #03a9f4 !important; } + +.light-blue.darken-1 { + background-color: #039be5 !important; } + +.light-blue-text.text-darken-1 { + color: #039be5 !important; } + +.light-blue.darken-2 { + background-color: #0288d1 !important; } + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; } + +.light-blue.darken-3 { + background-color: #0277bd !important; } + +.light-blue-text.text-darken-3 { + color: #0277bd !important; } + +.light-blue.darken-4 { + background-color: #01579b !important; } + +.light-blue-text.text-darken-4 { + color: #01579b !important; } + +.light-blue.accent-1 { + background-color: #80d8ff !important; } + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; } + +.light-blue.accent-2 { + background-color: #40c4ff !important; } + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; } + +.light-blue.accent-3 { + background-color: #00b0ff !important; } + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; } + +.light-blue.accent-4 { + background-color: #0091ea !important; } + +.light-blue-text.text-accent-4 { + color: #0091ea !important; } + +.cyan.lighten-5 { + background-color: #e0f7fa !important; } + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; } + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; } + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; } + +.cyan.lighten-3 { + background-color: #80deea !important; } + +.cyan-text.text-lighten-3 { + color: #80deea !important; } + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; } + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; } + +.cyan.lighten-1 { + background-color: #26c6da !important; } + +.cyan-text.text-lighten-1 { + color: #26c6da !important; } + +.cyan { + background-color: #00bcd4 !important; } + +.cyan-text { + color: #00bcd4 !important; } + +.cyan.darken-1 { + background-color: #00acc1 !important; } + +.cyan-text.text-darken-1 { + color: #00acc1 !important; } + +.cyan.darken-2 { + background-color: #0097a7 !important; } + +.cyan-text.text-darken-2 { + color: #0097a7 !important; } + +.cyan.darken-3 { + background-color: #00838f !important; } + +.cyan-text.text-darken-3 { + color: #00838f !important; } + +.cyan.darken-4 { + background-color: #006064 !important; } + +.cyan-text.text-darken-4 { + color: #006064 !important; } + +.cyan.accent-1 { + background-color: #84ffff !important; } + +.cyan-text.text-accent-1 { + color: #84ffff !important; } + +.cyan.accent-2 { + background-color: #18ffff !important; } + +.cyan-text.text-accent-2 { + color: #18ffff !important; } + +.cyan.accent-3 { + background-color: #00e5ff !important; } + +.cyan-text.text-accent-3 { + color: #00e5ff !important; } + +.cyan.accent-4 { + background-color: #00b8d4 !important; } + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; } + +.teal.lighten-5 { + background-color: #e0f2f1 !important; } + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; } + +.teal.lighten-4 { + background-color: #b2dfdb !important; } + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; } + +.teal.lighten-3 { + background-color: #80cbc4 !important; } + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; } + +.teal.lighten-2 { + background-color: #4db6ac !important; } + +.teal-text.text-lighten-2 { + color: #4db6ac !important; } + +.teal.lighten-1 { + background-color: #26a69a !important; } + +.teal-text.text-lighten-1 { + color: #26a69a !important; } + +.teal { + background-color: #009688 !important; } + +.teal-text { + color: #009688 !important; } + +.teal.darken-1 { + background-color: #00897b !important; } + +.teal-text.text-darken-1 { + color: #00897b !important; } + +.teal.darken-2 { + background-color: #00796b !important; } + +.teal-text.text-darken-2 { + color: #00796b !important; } + +.teal.darken-3 { + background-color: #00695c !important; } + +.teal-text.text-darken-3 { + color: #00695c !important; } + +.teal.darken-4 { + background-color: #004d40 !important; } + +.teal-text.text-darken-4 { + color: #004d40 !important; } + +.teal.accent-1 { + background-color: #a7ffeb !important; } + +.teal-text.text-accent-1 { + color: #a7ffeb !important; } + +.teal.accent-2 { + background-color: #64ffda !important; } + +.teal-text.text-accent-2 { + color: #64ffda !important; } + +.teal.accent-3 { + background-color: #1de9b6 !important; } + +.teal-text.text-accent-3 { + color: #1de9b6 !important; } + +.teal.accent-4 { + background-color: #00bfa5 !important; } + +.teal-text.text-accent-4 { + color: #00bfa5 !important; } + +.green.lighten-5 { + background-color: #E8F5E9 !important; } + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; } + +.green.lighten-4 { + background-color: #C8E6C9 !important; } + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; } + +.green.lighten-3 { + background-color: #A5D6A7 !important; } + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; } + +.green.lighten-2 { + background-color: #81C784 !important; } + +.green-text.text-lighten-2 { + color: #81C784 !important; } + +.green.lighten-1 { + background-color: #66BB6A !important; } + +.green-text.text-lighten-1 { + color: #66BB6A !important; } + +.green { + background-color: #4CAF50 !important; } + +.green-text { + color: #4CAF50 !important; } + +.green.darken-1 { + background-color: #43A047 !important; } + +.green-text.text-darken-1 { + color: #43A047 !important; } + +.green.darken-2 { + background-color: #388E3C !important; } + +.green-text.text-darken-2 { + color: #388E3C !important; } + +.green.darken-3 { + background-color: #2E7D32 !important; } + +.green-text.text-darken-3 { + color: #2E7D32 !important; } + +.green.darken-4 { + background-color: #1B5E20 !important; } + +.green-text.text-darken-4 { + color: #1B5E20 !important; } + +.green.accent-1 { + background-color: #B9F6CA !important; } + +.green-text.text-accent-1 { + color: #B9F6CA !important; } + +.green.accent-2 { + background-color: #69F0AE !important; } + +.green-text.text-accent-2 { + color: #69F0AE !important; } + +.green.accent-3 { + background-color: #00E676 !important; } + +.green-text.text-accent-3 { + color: #00E676 !important; } + +.green.accent-4 { + background-color: #00C853 !important; } + +.green-text.text-accent-4 { + color: #00C853 !important; } + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; } + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; } + +.light-green.lighten-4 { + background-color: #dcedc8 !important; } + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; } + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; } + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; } + +.light-green.lighten-2 { + background-color: #aed581 !important; } + +.light-green-text.text-lighten-2 { + color: #aed581 !important; } + +.light-green.lighten-1 { + background-color: #9ccc65 !important; } + +.light-green-text.text-lighten-1 { + color: #9ccc65 !important; } + +.light-green { + background-color: #8bc34a !important; } + +.light-green-text { + color: #8bc34a !important; } + +.light-green.darken-1 { + background-color: #7cb342 !important; } + +.light-green-text.text-darken-1 { + color: #7cb342 !important; } + +.light-green.darken-2 { + background-color: #689f38 !important; } + +.light-green-text.text-darken-2 { + color: #689f38 !important; } + +.light-green.darken-3 { + background-color: #558b2f !important; } + +.light-green-text.text-darken-3 { + color: #558b2f !important; } + +.light-green.darken-4 { + background-color: #33691e !important; } + +.light-green-text.text-darken-4 { + color: #33691e !important; } + +.light-green.accent-1 { + background-color: #ccff90 !important; } + +.light-green-text.text-accent-1 { + color: #ccff90 !important; } + +.light-green.accent-2 { + background-color: #b2ff59 !important; } + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; } + +.light-green.accent-3 { + background-color: #76ff03 !important; } + +.light-green-text.text-accent-3 { + color: #76ff03 !important; } + +.light-green.accent-4 { + background-color: #64dd17 !important; } + +.light-green-text.text-accent-4 { + color: #64dd17 !important; } + +.lime.lighten-5 { + background-color: #f9fbe7 !important; } + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; } + +.lime.lighten-4 { + background-color: #f0f4c3 !important; } + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; } + +.lime.lighten-3 { + background-color: #e6ee9c !important; } + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; } + +.lime.lighten-2 { + background-color: #dce775 !important; } + +.lime-text.text-lighten-2 { + color: #dce775 !important; } + +.lime.lighten-1 { + background-color: #d4e157 !important; } + +.lime-text.text-lighten-1 { + color: #d4e157 !important; } + +.lime { + background-color: #cddc39 !important; } + +.lime-text { + color: #cddc39 !important; } + +.lime.darken-1 { + background-color: #c0ca33 !important; } + +.lime-text.text-darken-1 { + color: #c0ca33 !important; } + +.lime.darken-2 { + background-color: #afb42b !important; } + +.lime-text.text-darken-2 { + color: #afb42b !important; } + +.lime.darken-3 { + background-color: #9e9d24 !important; } + +.lime-text.text-darken-3 { + color: #9e9d24 !important; } + +.lime.darken-4 { + background-color: #827717 !important; } + +.lime-text.text-darken-4 { + color: #827717 !important; } + +.lime.accent-1 { + background-color: #f4ff81 !important; } + +.lime-text.text-accent-1 { + color: #f4ff81 !important; } + +.lime.accent-2 { + background-color: #eeff41 !important; } + +.lime-text.text-accent-2 { + color: #eeff41 !important; } + +.lime.accent-3 { + background-color: #c6ff00 !important; } + +.lime-text.text-accent-3 { + color: #c6ff00 !important; } + +.lime.accent-4 { + background-color: #aeea00 !important; } + +.lime-text.text-accent-4 { + color: #aeea00 !important; } + +.yellow.lighten-5 { + background-color: #fffde7 !important; } + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; } + +.yellow.lighten-4 { + background-color: #fff9c4 !important; } + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; } + +.yellow.lighten-3 { + background-color: #fff59d !important; } + +.yellow-text.text-lighten-3 { + color: #fff59d !important; } + +.yellow.lighten-2 { + background-color: #fff176 !important; } + +.yellow-text.text-lighten-2 { + color: #fff176 !important; } + +.yellow.lighten-1 { + background-color: #ffee58 !important; } + +.yellow-text.text-lighten-1 { + color: #ffee58 !important; } + +.yellow { + background-color: #ffeb3b !important; } + +.yellow-text { + color: #ffeb3b !important; } + +.yellow.darken-1 { + background-color: #fdd835 !important; } + +.yellow-text.text-darken-1 { + color: #fdd835 !important; } + +.yellow.darken-2 { + background-color: #fbc02d !important; } + +.yellow-text.text-darken-2 { + color: #fbc02d !important; } + +.yellow.darken-3 { + background-color: #f9a825 !important; } + +.yellow-text.text-darken-3 { + color: #f9a825 !important; } + +.yellow.darken-4 { + background-color: #f57f17 !important; } + +.yellow-text.text-darken-4 { + color: #f57f17 !important; } + +.yellow.accent-1 { + background-color: #ffff8d !important; } + +.yellow-text.text-accent-1 { + color: #ffff8d !important; } + +.yellow.accent-2 { + background-color: #ffff00 !important; } + +.yellow-text.text-accent-2 { + color: #ffff00 !important; } + +.yellow.accent-3 { + background-color: #ffea00 !important; } + +.yellow-text.text-accent-3 { + color: #ffea00 !important; } + +.yellow.accent-4 { + background-color: #ffd600 !important; } + +.yellow-text.text-accent-4 { + color: #ffd600 !important; } + +.amber.lighten-5 { + background-color: #fff8e1 !important; } + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; } + +.amber.lighten-4 { + background-color: #ffecb3 !important; } + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; } + +.amber.lighten-3 { + background-color: #ffe082 !important; } + +.amber-text.text-lighten-3 { + color: #ffe082 !important; } + +.amber.lighten-2 { + background-color: #ffd54f !important; } + +.amber-text.text-lighten-2 { + color: #ffd54f !important; } + +.amber.lighten-1 { + background-color: #ffca28 !important; } + +.amber-text.text-lighten-1 { + color: #ffca28 !important; } + +.amber { + background-color: #ffc107 !important; } + +.amber-text { + color: #ffc107 !important; } + +.amber.darken-1 { + background-color: #ffb300 !important; } + +.amber-text.text-darken-1 { + color: #ffb300 !important; } + +.amber.darken-2 { + background-color: #ffa000 !important; } + +.amber-text.text-darken-2 { + color: #ffa000 !important; } + +.amber.darken-3 { + background-color: #ff8f00 !important; } + +.amber-text.text-darken-3 { + color: #ff8f00 !important; } + +.amber.darken-4 { + background-color: #ff6f00 !important; } + +.amber-text.text-darken-4 { + color: #ff6f00 !important; } + +.amber.accent-1 { + background-color: #ffe57f !important; } + +.amber-text.text-accent-1 { + color: #ffe57f !important; } + +.amber.accent-2 { + background-color: #ffd740 !important; } + +.amber-text.text-accent-2 { + color: #ffd740 !important; } + +.amber.accent-3 { + background-color: #ffc400 !important; } + +.amber-text.text-accent-3 { + color: #ffc400 !important; } + +.amber.accent-4 { + background-color: #ffab00 !important; } + +.amber-text.text-accent-4 { + color: #ffab00 !important; } + +.orange.lighten-5 { + background-color: #fff3e0 !important; } + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; } + +.orange.lighten-4 { + background-color: #ffe0b2 !important; } + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; } + +.orange.lighten-3 { + background-color: #ffcc80 !important; } + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; } + +.orange.lighten-2 { + background-color: #ffb74d !important; } + +.orange-text.text-lighten-2 { + color: #ffb74d !important; } + +.orange.lighten-1 { + background-color: #ffa726 !important; } + +.orange-text.text-lighten-1 { + color: #ffa726 !important; } + +.orange { + background-color: #ff9800 !important; } + +.orange-text { + color: #ff9800 !important; } + +.orange.darken-1 { + background-color: #fb8c00 !important; } + +.orange-text.text-darken-1 { + color: #fb8c00 !important; } + +.orange.darken-2 { + background-color: #f57c00 !important; } + +.orange-text.text-darken-2 { + color: #f57c00 !important; } + +.orange.darken-3 { + background-color: #ef6c00 !important; } + +.orange-text.text-darken-3 { + color: #ef6c00 !important; } + +.orange.darken-4 { + background-color: #e65100 !important; } + +.orange-text.text-darken-4 { + color: #e65100 !important; } + +.orange.accent-1 { + background-color: #ffd180 !important; } + +.orange-text.text-accent-1 { + color: #ffd180 !important; } + +.orange.accent-2 { + background-color: #ffab40 !important; } + +.orange-text.text-accent-2 { + color: #ffab40 !important; } + +.orange.accent-3 { + background-color: #ff9100 !important; } + +.orange-text.text-accent-3 { + color: #ff9100 !important; } + +.orange.accent-4 { + background-color: #ff6d00 !important; } + +.orange-text.text-accent-4 { + color: #ff6d00 !important; } + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; } + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; } + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; } + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; } + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; } + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; } + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; } + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; } + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; } + +.deep-orange-text.text-lighten-1 { + color: #ff7043 !important; } + +.deep-orange { + background-color: #ff5722 !important; } + +.deep-orange-text { + color: #ff5722 !important; } + +.deep-orange.darken-1 { + background-color: #f4511e !important; } + +.deep-orange-text.text-darken-1 { + color: #f4511e !important; } + +.deep-orange.darken-2 { + background-color: #e64a19 !important; } + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; } + +.deep-orange.darken-3 { + background-color: #d84315 !important; } + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; } + +.deep-orange.darken-4 { + background-color: #bf360c !important; } + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; } + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; } + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; } + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; } + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; } + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; } + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; } + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; } + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; } + +.brown.lighten-5 { + background-color: #efebe9 !important; } + +.brown-text.text-lighten-5 { + color: #efebe9 !important; } + +.brown.lighten-4 { + background-color: #d7ccc8 !important; } + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; } + +.brown.lighten-3 { + background-color: #bcaaa4 !important; } + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; } + +.brown.lighten-2 { + background-color: #a1887f !important; } + +.brown-text.text-lighten-2 { + color: #a1887f !important; } + +.brown.lighten-1 { + background-color: #8d6e63 !important; } + +.brown-text.text-lighten-1 { + color: #8d6e63 !important; } + +.brown { + background-color: #795548 !important; } + +.brown-text { + color: #795548 !important; } + +.brown.darken-1 { + background-color: #6d4c41 !important; } + +.brown-text.text-darken-1 { + color: #6d4c41 !important; } + +.brown.darken-2 { + background-color: #5d4037 !important; } + +.brown-text.text-darken-2 { + color: #5d4037 !important; } + +.brown.darken-3 { + background-color: #4e342e !important; } + +.brown-text.text-darken-3 { + color: #4e342e !important; } + +.brown.darken-4 { + background-color: #3e2723 !important; } + +.brown-text.text-darken-4 { + color: #3e2723 !important; } + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; } + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; } + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; } + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; } + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; } + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; } + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; } + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; } + +.blue-grey.lighten-1 { + background-color: #78909c !important; } + +.blue-grey-text.text-lighten-1 { + color: #78909c !important; } + +.blue-grey { + background-color: #607d8b !important; } + +.blue-grey-text { + color: #607d8b !important; } + +.blue-grey.darken-1 { + background-color: #546e7a !important; } + +.blue-grey-text.text-darken-1 { + color: #546e7a !important; } + +.blue-grey.darken-2 { + background-color: #455a64 !important; } + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; } + +.blue-grey.darken-3 { + background-color: #37474f !important; } + +.blue-grey-text.text-darken-3 { + color: #37474f !important; } + +.blue-grey.darken-4 { + background-color: #263238 !important; } + +.blue-grey-text.text-darken-4 { + color: #263238 !important; } + +.grey.lighten-5 { + background-color: #fafafa !important; } + +.grey-text.text-lighten-5 { + color: #fafafa !important; } + +.grey.lighten-4 { + background-color: #f5f5f5 !important; } + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; } + +.grey.lighten-3 { + background-color: #eeeeee !important; } + +.grey-text.text-lighten-3 { + color: #eeeeee !important; } + +.grey.lighten-2 { + background-color: #e0e0e0 !important; } + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; } + +.grey.lighten-1 { + background-color: #bdbdbd !important; } + +.grey-text.text-lighten-1 { + color: #bdbdbd !important; } + +.grey { + background-color: #9e9e9e !important; } + +.grey-text { + color: #9e9e9e !important; } + +.grey.darken-1 { + background-color: #757575 !important; } + +.grey-text.text-darken-1 { + color: #757575 !important; } + +.grey.darken-2 { + background-color: #616161 !important; } + +.grey-text.text-darken-2 { + color: #616161 !important; } + +.grey.darken-3 { + background-color: #424242 !important; } + +.grey-text.text-darken-3 { + color: #424242 !important; } + +.grey.darken-4 { + background-color: #212121 !important; } + +.grey-text.text-darken-4 { + color: #212121 !important; } + +.shades.black { + background-color: #000000 !important; } + +.shades-text.text-black { + color: #000000 !important; } + +.shades.white { + background-color: #FFFFFF !important; } + +.shades-text.text-white { + color: #FFFFFF !important; } + +.shades.transparent { + background-color: transparent !important; } + +.shades-text.text-transparent { + color: transparent !important; } + +.black { + background-color: #000000 !important; } + +.black-text { + color: #000000 !important; } + +.white { + background-color: #FFFFFF !important; } + +.white-text { + color: #FFFFFF !important; } + +.transparent { + background-color: transparent !important; } + +.transparent-text { + color: transparent !important; } + +/*** Colors ***/ +/*** Badges ***/ +/*** Buttons ***/ +/*** Cards ***/ +/*** Collapsible ***/ +/*** Dropdown ***/ +/*** Fonts ***/ +/*** Forms ***/ +/*** Global ***/ +/*** Navbar ***/ +/*** SideNav ***/ +/*** Photo Slider ***/ +/*** Tabs ***/ +/*** Tables ***/ +/*** Toasts ***/ +/*** Typography ***/ +/*** Collections ***/ +/* Progress Bar */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +/* 1 */ +html input[type="button"], +button, +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + box-sizing: content-box; } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +html { + box-sizing: border-box; } + +*, *:before, *:after { + box-sizing: inherit; } + +ul { + list-style-type: none; } + +a { + color: #039be5; + text-decoration: none; + -webkit-tap-highlight-color: transparent; } + +.valign-wrapper { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; } + .valign-wrapper .valign { + display: block; } + +ul { + padding: 0; } + ul li { + list-style-type: none; } + +.clearfix { + clear: both; } + +.z-depth-0 { + box-shadow: none !important; } + +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); } + +.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); } + +.z-depth-2 { + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.z-depth-3 { + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); } + +.z-depth-4, .modal { + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); } + +.z-depth-5 { + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.divider { + height: 1px; + overflow: hidden; + background-color: #e0e0e0; } + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #ee6e73; } + +i { + line-height: inherit; } + i.left { + float: left; + margin-right: 15px; } + i.right { + float: right; + margin-left: 15px; } + i.tiny { + font-size: 1rem; } + i.small { + font-size: 2rem; } + i.medium { + font-size: 4rem; } + i.large { + font-size: 6rem; } + +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; } + +.pagination li { + float: left; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + border-radius: 2px; + text-align: center; } + .pagination li a { + color: #444; } + .pagination li.active a { + color: #fff; } + .pagination li.active { + background-color: #ee6e73; } + .pagination li.disabled a { + cursor: default; + color: #999; } + .pagination li i { + font-size: 2rem; } +.pagination li.pages ul li { + display: inline-block; + float: none; } + +@media only screen and (max-width: 992px) { + .pagination { + width: 100%; } + .pagination li.prev, + .pagination li.next { + width: 10%; } + .pagination li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; } } +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; } + +.parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; } + .parallax img { + display: none; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + transform: translateX(-50%); } + +.pin-top, .pin-bottom { + position: relative; } + +.pinned { + position: fixed !important; } + +/********************* + Transition Classes +**********************/ +ul.staggered-list li { + opacity: 0; } + +.fade-in { + opacity: 0; + transform-origin: 0 50%; } + +/********************* + Media Query Classes +**********************/ +@media only screen and (max-width: 600px) { + .hide-on-small-only, .hide-on-small-and-down { + display: none !important; } } + +@media only screen and (max-width: 992px) { + .hide-on-med-and-down { + display: none !important; } } + +@media only screen and (min-width: 601px) { + .hide-on-med-and-up { + display: none !important; } } + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .hide-on-med-only { + display: none !important; } } + +@media only screen and (min-width: 993px) { + .hide-on-large-only { + display: none !important; } } + +@media only screen and (min-width: 993px) { + .show-on-large { + display: initial !important; } } + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .show-on-medium { + display: initial !important; } } + +@media only screen and (max-width: 600px) { + .show-on-small { + display: initial !important; } } + +@media only screen and (min-width: 601px) { + .show-on-medium-and-up { + display: initial !important; } } + +@media only screen and (max-width: 992px) { + .show-on-medium-and-down { + display: initial !important; } } + +@media only screen and (max-width: 600px) { + .center-on-small-only { + text-align: center; } } + +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: #ee6e73; } + footer.page-footer .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255, 255, 255, 0.8); + background-color: rgba(51, 51, 51, 0.08); } + +table, th, td { + border: none; } + +table { + width: 100%; + display: table; } + table.bordered > thead > tr, table.bordered > tbody > tr { + border-bottom: 1px solid #d0d0d0; } + table.striped > tbody > tr:nth-child(odd) { + background-color: #f2f2f2; } + table.striped > tbody > tr > td { + border-radius: 0px; } + table.hoverable > tbody > tr { + -webkit-transition: background-color 0.25s ease; + -moz-transition: background-color 0.25s ease; + -o-transition: background-color 0.25s ease; + -ms-transition: background-color 0.25s ease; + transition: background-color 0.25s ease; } + table.hoverable > tbody > tr:hover { + background-color: #f2f2f2; } + table.centered thead tr th, table.centered tbody tr td { + text-align: center; } + +thead { + border-bottom: 1px solid #d0d0d0; } + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; } + +@media only screen and (max-width: 992px) { + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + /* sort out borders */ } + table.responsive-table th, + table.responsive-table td { + margin: 0; + vertical-align: top; } + table.responsive-table th { + text-align: left; } + table.responsive-table thead { + display: block; + float: left; } + table.responsive-table thead tr { + display: block; + padding: 0 10px 0 0; } + table.responsive-table thead tr th::before { + content: "\00a0"; } + table.responsive-table tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; } + table.responsive-table tbody tr { + display: inline-block; + vertical-align: top; } + table.responsive-table th { + display: block; + text-align: right; } + table.responsive-table td { + display: block; + min-height: 1.25em; + text-align: left; } + table.responsive-table tr { + padding: 0 10px; } + table.responsive-table thead { + border: 0; + border-right: 1px solid #d0d0d0; } + table.responsive-table.bordered th { + border-bottom: 0; + border-left: 0; } + table.responsive-table.bordered td { + border-left: 0; + border-right: 0; + border-bottom: 0; } + table.responsive-table.bordered tr { + border: 0; } + table.responsive-table.bordered tbody tr { + border-right: 1px solid #d0d0d0; } } +.collection { + margin: 0.5rem 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; + overflow: hidden; + position: relative; } + .collection .collection-item { + background-color: #fff; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid #e0e0e0; } + .collection .collection-item.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; } + .collection .collection-item.avatar .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; } + .collection .collection-item.avatar i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; } + .collection .collection-item.avatar .title { + font-size: 16px; } + .collection .collection-item.avatar p { + margin: 0; } + .collection .collection-item.avatar .secondary-content { + position: absolute; + top: 16px; + right: 16px; } + .collection .collection-item:last-child { + border-bottom: none; } + .collection .collection-item.active { + background-color: #26a69a; + color: #eafaf9; } + .collection a.collection-item { + display: block; + -webkit-transition: 0.25s; + -moz-transition: 0.25s; + -o-transition: 0.25s; + -ms-transition: 0.25s; + transition: 0.25s; + color: #26a69a; } + .collection a.collection-item:not(.active):hover { + background-color: #ddd; } + .collection.with-header .collection-header { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; } + .collection.with-header .collection-item { + padding-left: 30px; } + .collection.with-header .collection-item.avatar { + padding-left: 72px; } + +.secondary-content { + float: right; + color: #26a69a; } + +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: #757575; + position: absolute; + right: 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + span.badge.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: #26a69a; + border-radius: 2px; } + span.badge.new:after { + content: " new"; } + +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; } + .video-container.no-controls { + padding-top: 0; } + .video-container iframe, .video-container object, .video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: #acece6; + border-radius: 2px; + margin: 0.5rem 0 1rem 0; + overflow: hidden; } + .progress .determinate { + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + background-color: #26a69a; + -webkit-transition: width 0.3s linear; + -moz-transition: width 0.3s linear; + -o-transition: width 0.3s linear; + -ms-transition: width 0.3s linear; + transition: width 0.3s linear; } + .progress .indeterminate { + background-color: #26a69a; } + .progress .indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -moz-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -ms-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -o-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } + .progress .indeterminate:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -moz-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -ms-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -o-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + -moz-animation-delay: 1.15s; + -ms-animation-delay: 1.15s; + -o-animation-delay: 1.15s; + animation-delay: 1.15s; } + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + 60% { + left: 100%; + right: -90%; } + 100% { + left: 100%; + right: -90%; } } +@-moz-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + 60% { + left: 100%; + right: -90%; } + 100% { + left: 100%; + right: -90%; } } +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + 60% { + left: 100%; + right: -90%; } + 100% { + left: 100%; + right: -90%; } } +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + 60% { + left: 107%; + right: -8%; } + 100% { + left: 107%; + right: -8%; } } +@-moz-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + 60% { + left: 107%; + right: -8%; } + 100% { + left: 107%; + right: -8%; } } +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + 60% { + left: 107%; + right: -8%; } + 100% { + left: 107%; + right: -8%; } } +/******************* + Utility Classes +*******************/ +.hide { + display: none !important; } + +.left-align { + text-align: left; } + +.right-align { + text-align: right; } + +.center, .center-align { + text-align: center; } + +.left { + float: left !important; } + +.right { + float: right !important; } + +.no-select, input[type=range], input[type=range] + .thumb { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.circle { + border-radius: 50%; } + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; } + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +.no-padding { + padding: 0 !important; } + +@font-face { + font-family: "Material-Design-Icons"; + src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"), url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg"); + font-weight: normal; + font-style: normal; } +[class^="mdi-"], [class*="mdi-"] { + speak: none; + display: inline-block; + font-family: "Material-Design-Icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-rendering: auto; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); } + [class^="mdi-"]:before, [class*="mdi-"]:before { + display: inline-block; + speak: none; + text-decoration: inherit; } + [class^="mdi-"].pull-left, [class*="mdi-"].pull-left { + margin-right: .3em; } + [class^="mdi-"].pull-right, [class*="mdi-"].pull-right { + margin-left: .3em; } + [class^="mdi-"].mdi-lg:before, [class^="mdi-"].mdi-lg:after, [class*="mdi-"].mdi-lg:before, [class*="mdi-"].mdi-lg:after { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; } + [class^="mdi-"].mdi-2x:before, [class^="mdi-"].mdi-2x:after, [class*="mdi-"].mdi-2x:before, [class*="mdi-"].mdi-2x:after { + font-size: 2em; } + [class^="mdi-"].mdi-3x:before, [class^="mdi-"].mdi-3x:after, [class*="mdi-"].mdi-3x:before, [class*="mdi-"].mdi-3x:after { + font-size: 3em; } + [class^="mdi-"].mdi-4x:before, [class^="mdi-"].mdi-4x:after, [class*="mdi-"].mdi-4x:before, [class*="mdi-"].mdi-4x:after { + font-size: 4em; } + [class^="mdi-"].mdi-5x:before, [class^="mdi-"].mdi-5x:after, [class*="mdi-"].mdi-5x:before, [class*="mdi-"].mdi-5x:after { + font-size: 5em; } + +[class^="mdi-device-signal-cellular-"]:after, +[class^="mdi-device-battery-"]:after, +[class^="mdi-device-battery-charging-"]:after, +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after, +[class^="mdi-device-signal-wifi-"]:after, +[class^="mdi-device-signal-wifi-statusbar-not-connected"]:after, +.mdi-device-network-wifi:after { + opacity: .3; + position: absolute; + left: 0; + top: 0; + z-index: 1; + display: inline-block; + speak: none; + text-decoration: inherit; } + +[class^="mdi-device-signal-cellular-"]:after { + content: "\e758"; } + +[class^="mdi-device-battery-"]:after { + content: "\e735"; } + +[class^="mdi-device-battery-charging-"]:after { + content: "\e733"; } + +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after { + content: "\e75d"; } + +[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after { + content: "\e765"; } + +[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after { + content: "\e8f7"; } + +.mdi-device-signal-cellular-off:after, .mdi-device-signal-cellular-null:after, .mdi-device-signal-cellular-no-sim:after, .mdi-device-signal-wifi-off:after, .mdi-device-signal-wifi-4-bar:after, .mdi-device-signal-cellular-4-bar:after, .mdi-device-battery-alert:after, .mdi-device-signal-cellular-connected-no-internet-4-bar:after, .mdi-device-battery-std:after, .mdi-device-battery-full .mdi-device-battery-unknown:after { + content: ""; } + +.mdi-fw { + width: 1.28571429em; + text-align: center; } + +.mdi-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; } + +.mdi-ul > li { + position: relative; } + +.mdi-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; } + +.mdi-li.mdi-lg { + left: -1.85714286em; } + +.mdi-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; } + +.mdi-spin { + -webkit-animation: mdi-spin 2s infinite linear; + animation: mdi-spin 2s infinite linear; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +.mdi-pulse { + -webkit-animation: mdi-spin 1s steps(8) infinite; + animation: mdi-spin 1s steps(8) infinite; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +@-webkit-keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +@keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +.mdi-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } + +.mdi-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } + +.mdi-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } + +.mdi-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.mdi-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + +:root .mdi-rotate-90, +:root .mdi-rotate-180, +:root .mdi-rotate-270, +:root .mdi-flip-horizontal, +:root .mdi-flip-vertical { + filter: none; } + +.mdi-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; } + +.mdi-stack-1x, +.mdi-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; } + +.mdi-stack-1x { + line-height: inherit; } + +.mdi-stack-2x { + font-size: 2em; } + +.mdi-inverse { + color: #ffffff; } + +/* Start Icons */ +.mdi-action-3d-rotation:before { + content: "\e600"; } + +.mdi-action-accessibility:before { + content: "\e601"; } + +.mdi-action-account-balance-wallet:before { + content: "\e602"; } + +.mdi-action-account-balance:before { + content: "\e603"; } + +.mdi-action-account-box:before { + content: "\e604"; } + +.mdi-action-account-child:before { + content: "\e605"; } + +.mdi-action-account-circle:before { + content: "\e606"; } + +.mdi-action-add-shopping-cart:before { + content: "\e607"; } + +.mdi-action-alarm-add:before { + content: "\e608"; } + +.mdi-action-alarm-off:before { + content: "\e609"; } + +.mdi-action-alarm-on:before { + content: "\e60a"; } + +.mdi-action-alarm:before { + content: "\e60b"; } + +.mdi-action-android:before { + content: "\e60c"; } + +.mdi-action-announcement:before { + content: "\e60d"; } + +.mdi-action-aspect-ratio:before { + content: "\e60e"; } + +.mdi-action-assessment:before { + content: "\e60f"; } + +.mdi-action-assignment-ind:before { + content: "\e610"; } + +.mdi-action-assignment-late:before { + content: "\e611"; } + +.mdi-action-assignment-return:before { + content: "\e612"; } + +.mdi-action-assignment-returned:before { + content: "\e613"; } + +.mdi-action-assignment-turned-in:before { + content: "\e614"; } + +.mdi-action-assignment:before { + content: "\e615"; } + +.mdi-action-autorenew:before { + content: "\e616"; } + +.mdi-action-backup:before { + content: "\e617"; } + +.mdi-action-book:before { + content: "\e618"; } + +.mdi-action-bookmark-outline:before { + content: "\e619"; } + +.mdi-action-bookmark:before { + content: "\e61a"; } + +.mdi-action-bug-report:before { + content: "\e61b"; } + +.mdi-action-cached:before { + content: "\e61c"; } + +.mdi-action-check-circle:before { + content: "\e61d"; } + +.mdi-action-class:before { + content: "\e61e"; } + +.mdi-action-credit-card:before { + content: "\e61f"; } + +.mdi-action-dashboard:before { + content: "\e620"; } + +.mdi-action-delete:before { + content: "\e621"; } + +.mdi-action-description:before { + content: "\e622"; } + +.mdi-action-dns:before { + content: "\e623"; } + +.mdi-action-done-all:before { + content: "\e624"; } + +.mdi-action-done:before { + content: "\e625"; } + +.mdi-action-event:before { + content: "\e626"; } + +.mdi-action-exit-to-app:before { + content: "\e627"; } + +.mdi-action-explore:before { + content: "\e628"; } + +.mdi-action-extension:before { + content: "\e629"; } + +.mdi-action-face-unlock:before { + content: "\e62a"; } + +.mdi-action-favorite-outline:before { + content: "\e62b"; } + +.mdi-action-favorite:before { + content: "\e62c"; } + +.mdi-action-find-in-page:before { + content: "\e62d"; } + +.mdi-action-find-replace:before { + content: "\e62e"; } + +.mdi-action-flip-to-back:before { + content: "\e62f"; } + +.mdi-action-flip-to-front:before { + content: "\e630"; } + +.mdi-action-get-app:before { + content: "\e631"; } + +.mdi-action-grade:before { + content: "\e632"; } + +.mdi-action-group-work:before { + content: "\e633"; } + +.mdi-action-help:before { + content: "\e634"; } + +.mdi-action-highlight-remove:before { + content: "\e635"; } + +.mdi-action-history:before { + content: "\e636"; } + +.mdi-action-home:before { + content: "\e637"; } + +.mdi-action-https:before { + content: "\e638"; } + +.mdi-action-info-outline:before { + content: "\e639"; } + +.mdi-action-info:before { + content: "\e63a"; } + +.mdi-action-input:before { + content: "\e63b"; } + +.mdi-action-invert-colors:before { + content: "\e63c"; } + +.mdi-action-label-outline:before { + content: "\e63d"; } + +.mdi-action-label:before { + content: "\e63e"; } + +.mdi-action-language:before { + content: "\e63f"; } + +.mdi-action-launch:before { + content: "\e640"; } + +.mdi-action-list:before { + content: "\e641"; } + +.mdi-action-lock-open:before { + content: "\e642"; } + +.mdi-action-lock-outline:before { + content: "\e643"; } + +.mdi-action-lock:before { + content: "\e644"; } + +.mdi-action-loyalty:before { + content: "\e645"; } + +.mdi-action-markunread-mailbox:before { + content: "\e646"; } + +.mdi-action-note-add:before { + content: "\e647"; } + +.mdi-action-open-in-browser:before { + content: "\e648"; } + +.mdi-action-open-in-new:before { + content: "\e649"; } + +.mdi-action-open-with:before { + content: "\e64a"; } + +.mdi-action-pageview:before { + content: "\e64b"; } + +.mdi-action-payment:before { + content: "\e64c"; } + +.mdi-action-perm-camera-mic:before { + content: "\e64d"; } + +.mdi-action-perm-contact-cal:before { + content: "\e64e"; } + +.mdi-action-perm-data-setting:before { + content: "\e64f"; } + +.mdi-action-perm-device-info:before { + content: "\e650"; } + +.mdi-action-perm-identity:before { + content: "\e651"; } + +.mdi-action-perm-media:before { + content: "\e652"; } + +.mdi-action-perm-phone-msg:before { + content: "\e653"; } + +.mdi-action-perm-scan-wifi:before { + content: "\e654"; } + +.mdi-action-picture-in-picture:before { + content: "\e655"; } + +.mdi-action-polymer:before { + content: "\e656"; } + +.mdi-action-print:before { + content: "\e657"; } + +.mdi-action-query-builder:before { + content: "\e658"; } + +.mdi-action-question-answer:before { + content: "\e659"; } + +.mdi-action-receipt:before { + content: "\e65a"; } + +.mdi-action-redeem:before { + content: "\e65b"; } + +.mdi-action-reorder:before { + content: "\e65c"; } + +.mdi-action-report-problem:before { + content: "\e65d"; } + +.mdi-action-restore:before { + content: "\e65e"; } + +.mdi-action-room:before { + content: "\e65f"; } + +.mdi-action-schedule:before { + content: "\e660"; } + +.mdi-action-search:before { + content: "\e661"; } + +.mdi-action-settings-applications:before { + content: "\e662"; } + +.mdi-action-settings-backup-restore:before { + content: "\e663"; } + +.mdi-action-settings-bluetooth:before { + content: "\e664"; } + +.mdi-action-settings-cell:before { + content: "\e665"; } + +.mdi-action-settings-display:before { + content: "\e666"; } + +.mdi-action-settings-ethernet:before { + content: "\e667"; } + +.mdi-action-settings-input-antenna:before { + content: "\e668"; } + +.mdi-action-settings-input-component:before { + content: "\e669"; } + +.mdi-action-settings-input-composite:before { + content: "\e66a"; } + +.mdi-action-settings-input-hdmi:before { + content: "\e66b"; } + +.mdi-action-settings-input-svideo:before { + content: "\e66c"; } + +.mdi-action-settings-overscan:before { + content: "\e66d"; } + +.mdi-action-settings-phone:before { + content: "\e66e"; } + +.mdi-action-settings-power:before { + content: "\e66f"; } + +.mdi-action-settings-remote:before { + content: "\e670"; } + +.mdi-action-settings-voice:before { + content: "\e671"; } + +.mdi-action-settings:before { + content: "\e672"; } + +.mdi-action-shop-two:before { + content: "\e673"; } + +.mdi-action-shop:before { + content: "\e674"; } + +.mdi-action-shopping-basket:before { + content: "\e675"; } + +.mdi-action-shopping-cart:before { + content: "\e676"; } + +.mdi-action-speaker-notes:before { + content: "\e677"; } + +.mdi-action-spellcheck:before { + content: "\e678"; } + +.mdi-action-star-rate:before { + content: "\e679"; } + +.mdi-action-stars:before { + content: "\e67a"; } + +.mdi-action-store:before { + content: "\e67b"; } + +.mdi-action-subject:before { + content: "\e67c"; } + +.mdi-action-supervisor-account:before { + content: "\e67d"; } + +.mdi-action-swap-horiz:before { + content: "\e67e"; } + +.mdi-action-swap-vert-circle:before { + content: "\e67f"; } + +.mdi-action-swap-vert:before { + content: "\e680"; } + +.mdi-action-system-update-tv:before { + content: "\e681"; } + +.mdi-action-tab-unselected:before { + content: "\e682"; } + +.mdi-action-tab:before { + content: "\e683"; } + +.mdi-action-theaters:before { + content: "\e684"; } + +.mdi-action-thumb-down:before { + content: "\e685"; } + +.mdi-action-thumb-up:before { + content: "\e686"; } + +.mdi-action-thumbs-up-down:before { + content: "\e687"; } + +.mdi-action-toc:before { + content: "\e688"; } + +.mdi-action-today:before { + content: "\e689"; } + +.mdi-action-track-changes:before { + content: "\e68a"; } + +.mdi-action-translate:before { + content: "\e68b"; } + +.mdi-action-trending-down:before { + content: "\e68c"; } + +.mdi-action-trending-neutral:before { + content: "\e68d"; } + +.mdi-action-trending-up:before { + content: "\e68e"; } + +.mdi-action-turned-in-not:before { + content: "\e68f"; } + +.mdi-action-turned-in:before { + content: "\e690"; } + +.mdi-action-verified-user:before { + content: "\e691"; } + +.mdi-action-view-agenda:before { + content: "\e692"; } + +.mdi-action-view-array:before { + content: "\e693"; } + +.mdi-action-view-carousel:before { + content: "\e694"; } + +.mdi-action-view-column:before { + content: "\e695"; } + +.mdi-action-view-day:before { + content: "\e696"; } + +.mdi-action-view-headline:before { + content: "\e697"; } + +.mdi-action-view-list:before { + content: "\e698"; } + +.mdi-action-view-module:before { + content: "\e699"; } + +.mdi-action-view-quilt:before { + content: "\e69a"; } + +.mdi-action-view-stream:before { + content: "\e69b"; } + +.mdi-action-view-week:before { + content: "\e69c"; } + +.mdi-action-visibility-off:before { + content: "\e69d"; } + +.mdi-action-visibility:before { + content: "\e69e"; } + +.mdi-action-wallet-giftcard:before { + content: "\e69f"; } + +.mdi-action-wallet-membership:before { + content: "\e6a0"; } + +.mdi-action-wallet-travel:before { + content: "\e6a1"; } + +.mdi-action-work:before { + content: "\e6a2"; } + +.mdi-alert-error:before { + content: "\e6a3"; } + +.mdi-alert-warning:before { + content: "\e6a4"; } + +.mdi-av-album:before { + content: "\e6a5"; } + +.mdi-av-closed-caption:before { + content: "\e6a6"; } + +.mdi-av-equalizer:before { + content: "\e6a7"; } + +.mdi-av-explicit:before { + content: "\e6a8"; } + +.mdi-av-fast-forward:before { + content: "\e6a9"; } + +.mdi-av-fast-rewind:before { + content: "\e6aa"; } + +.mdi-av-games:before { + content: "\e6ab"; } + +.mdi-av-hearing:before { + content: "\e6ac"; } + +.mdi-av-high-quality:before { + content: "\e6ad"; } + +.mdi-av-loop:before { + content: "\e6ae"; } + +.mdi-av-mic-none:before { + content: "\e6af"; } + +.mdi-av-mic-off:before { + content: "\e6b0"; } + +.mdi-av-mic:before { + content: "\e6b1"; } + +.mdi-av-movie:before { + content: "\e6b2"; } + +.mdi-av-my-library-add:before { + content: "\e6b3"; } + +.mdi-av-my-library-books:before { + content: "\e6b4"; } + +.mdi-av-my-library-music:before { + content: "\e6b5"; } + +.mdi-av-new-releases:before { + content: "\e6b6"; } + +.mdi-av-not-interested:before { + content: "\e6b7"; } + +.mdi-av-pause-circle-fill:before { + content: "\e6b8"; } + +.mdi-av-pause-circle-outline:before { + content: "\e6b9"; } + +.mdi-av-pause:before { + content: "\e6ba"; } + +.mdi-av-play-arrow:before { + content: "\e6bb"; } + +.mdi-av-play-circle-fill:before { + content: "\e6bc"; } + +.mdi-av-play-circle-outline:before { + content: "\e6bd"; } + +.mdi-av-play-shopping-bag:before { + content: "\e6be"; } + +.mdi-av-playlist-add:before { + content: "\e6bf"; } + +.mdi-av-queue-music:before { + content: "\e6c0"; } + +.mdi-av-queue:before { + content: "\e6c1"; } + +.mdi-av-radio:before { + content: "\e6c2"; } + +.mdi-av-recent-actors:before { + content: "\e6c3"; } + +.mdi-av-repeat-one:before { + content: "\e6c4"; } + +.mdi-av-repeat:before { + content: "\e6c5"; } + +.mdi-av-replay:before { + content: "\e6c6"; } + +.mdi-av-shuffle:before { + content: "\e6c7"; } + +.mdi-av-skip-next:before { + content: "\e6c8"; } + +.mdi-av-skip-previous:before { + content: "\e6c9"; } + +.mdi-av-snooze:before { + content: "\e6ca"; } + +.mdi-av-stop:before { + content: "\e6cb"; } + +.mdi-av-subtitles:before { + content: "\e6cc"; } + +.mdi-av-surround-sound:before { + content: "\e6cd"; } + +.mdi-av-timer:before { + content: "\e6ce"; } + +.mdi-av-video-collection:before { + content: "\e6cf"; } + +.mdi-av-videocam-off:before { + content: "\e6d0"; } + +.mdi-av-videocam:before { + content: "\e6d1"; } + +.mdi-av-volume-down:before { + content: "\e6d2"; } + +.mdi-av-volume-mute:before { + content: "\e6d3"; } + +.mdi-av-volume-off:before { + content: "\e6d4"; } + +.mdi-av-volume-up:before { + content: "\e6d5"; } + +.mdi-av-web:before { + content: "\e6d6"; } + +.mdi-communication-business:before { + content: "\e6d7"; } + +.mdi-communication-call-end:before { + content: "\e6d8"; } + +.mdi-communication-call-made:before { + content: "\e6d9"; } + +.mdi-communication-call-merge:before { + content: "\e6da"; } + +.mdi-communication-call-missed:before { + content: "\e6db"; } + +.mdi-communication-call-received:before { + content: "\e6dc"; } + +.mdi-communication-call-split:before { + content: "\e6dd"; } + +.mdi-communication-call:before { + content: "\e6de"; } + +.mdi-communication-chat:before { + content: "\e6df"; } + +.mdi-communication-clear-all:before { + content: "\e6e0"; } + +.mdi-communication-comment:before { + content: "\e6e1"; } + +.mdi-communication-contacts:before { + content: "\e6e2"; } + +.mdi-communication-dialer-sip:before { + content: "\e6e3"; } + +.mdi-communication-dialpad:before { + content: "\e6e4"; } + +.mdi-communication-dnd-on:before { + content: "\e6e5"; } + +.mdi-communication-email:before { + content: "\e6e6"; } + +.mdi-communication-forum:before { + content: "\e6e7"; } + +.mdi-communication-import-export:before { + content: "\e6e8"; } + +.mdi-communication-invert-colors-off:before { + content: "\e6e9"; } + +.mdi-communication-invert-colors-on:before { + content: "\e6ea"; } + +.mdi-communication-live-help:before { + content: "\e6eb"; } + +.mdi-communication-location-off:before { + content: "\e6ec"; } + +.mdi-communication-location-on:before { + content: "\e6ed"; } + +.mdi-communication-message:before { + content: "\e6ee"; } + +.mdi-communication-messenger:before { + content: "\e6ef"; } + +.mdi-communication-no-sim:before { + content: "\e6f0"; } + +.mdi-communication-phone:before { + content: "\e6f1"; } + +.mdi-communication-portable-wifi-off:before { + content: "\e6f2"; } + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f3"; } + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f4"; } + +.mdi-communication-ring-volume:before { + content: "\e6f5"; } + +.mdi-communication-stay-current-landscape:before { + content: "\e6f6"; } + +.mdi-communication-stay-current-portrait:before { + content: "\e6f7"; } + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f8"; } + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f9"; } + +.mdi-communication-swap-calls:before { + content: "\e6fa"; } + +.mdi-communication-textsms:before { + content: "\e6fb"; } + +.mdi-communication-voicemail:before { + content: "\e6fc"; } + +.mdi-communication-vpn-key:before { + content: "\e6fd"; } + +.mdi-content-add-box:before { + content: "\e6fe"; } + +.mdi-content-add-circle-outline:before { + content: "\e6ff"; } + +.mdi-content-add-circle:before { + content: "\e700"; } + +.mdi-content-add:before { + content: "\e701"; } + +.mdi-content-archive:before { + content: "\e702"; } + +.mdi-content-backspace:before { + content: "\e703"; } + +.mdi-content-block:before { + content: "\e704"; } + +.mdi-content-clear:before { + content: "\e705"; } + +.mdi-content-content-copy:before { + content: "\e706"; } + +.mdi-content-content-cut:before { + content: "\e707"; } + +.mdi-content-content-paste:before { + content: "\e708"; } + +.mdi-content-create:before { + content: "\e709"; } + +.mdi-content-drafts:before { + content: "\e70a"; } + +.mdi-content-filter-list:before { + content: "\e70b"; } + +.mdi-content-flag:before { + content: "\e70c"; } + +.mdi-content-forward:before { + content: "\e70d"; } + +.mdi-content-gesture:before { + content: "\e70e"; } + +.mdi-content-inbox:before { + content: "\e70f"; } + +.mdi-content-link:before { + content: "\e710"; } + +.mdi-content-mail:before { + content: "\e711"; } + +.mdi-content-markunread:before { + content: "\e712"; } + +.mdi-content-redo:before { + content: "\e713"; } + +.mdi-content-remove-circle-outline:before { + content: "\e714"; } + +.mdi-content-remove-circle:before { + content: "\e715"; } + +.mdi-content-remove:before { + content: "\e716"; } + +.mdi-content-reply-all:before { + content: "\e717"; } + +.mdi-content-reply:before { + content: "\e718"; } + +.mdi-content-report:before { + content: "\e719"; } + +.mdi-content-save:before { + content: "\e71a"; } + +.mdi-content-select-all:before { + content: "\e71b"; } + +.mdi-content-send:before { + content: "\e71c"; } + +.mdi-content-sort:before { + content: "\e71d"; } + +.mdi-content-text-format:before { + content: "\e71e"; } + +.mdi-content-undo:before { + content: "\e71f"; } + +.mdi-editor-attach-file:before { + content: "\e776"; } + +.mdi-editor-attach-money:before { + content: "\e777"; } + +.mdi-editor-border-all:before { + content: "\e778"; } + +.mdi-editor-border-bottom:before { + content: "\e779"; } + +.mdi-editor-border-clear:before { + content: "\e77a"; } + +.mdi-editor-border-color:before { + content: "\e77b"; } + +.mdi-editor-border-horizontal:before { + content: "\e77c"; } + +.mdi-editor-border-inner:before { + content: "\e77d"; } + +.mdi-editor-border-left:before { + content: "\e77e"; } + +.mdi-editor-border-outer:before { + content: "\e77f"; } + +.mdi-editor-border-right:before { + content: "\e780"; } + +.mdi-editor-border-style:before { + content: "\e781"; } + +.mdi-editor-border-top:before { + content: "\e782"; } + +.mdi-editor-border-vertical:before { + content: "\e783"; } + +.mdi-editor-format-align-center:before { + content: "\e784"; } + +.mdi-editor-format-align-justify:before { + content: "\e785"; } + +.mdi-editor-format-align-left:before { + content: "\e786"; } + +.mdi-editor-format-align-right:before { + content: "\e787"; } + +.mdi-editor-format-bold:before { + content: "\e788"; } + +.mdi-editor-format-clear:before { + content: "\e789"; } + +.mdi-editor-format-color-fill:before { + content: "\e78a"; } + +.mdi-editor-format-color-reset:before { + content: "\e78b"; } + +.mdi-editor-format-color-text:before { + content: "\e78c"; } + +.mdi-editor-format-indent-decrease:before { + content: "\e78d"; } + +.mdi-editor-format-indent-increase:before { + content: "\e78e"; } + +.mdi-editor-format-italic:before { + content: "\e78f"; } + +.mdi-editor-format-line-spacing:before { + content: "\e790"; } + +.mdi-editor-format-list-bulleted:before { + content: "\e791"; } + +.mdi-editor-format-list-numbered:before { + content: "\e792"; } + +.mdi-editor-format-paint:before { + content: "\e793"; } + +.mdi-editor-format-quote:before { + content: "\e794"; } + +.mdi-editor-format-size:before { + content: "\e795"; } + +.mdi-editor-format-strikethrough:before { + content: "\e796"; } + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e797"; } + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e798"; } + +.mdi-editor-format-underline:before { + content: "\e799"; } + +.mdi-editor-functions:before { + content: "\e79a"; } + +.mdi-editor-insert-chart:before { + content: "\e79b"; } + +.mdi-editor-insert-comment:before { + content: "\e79c"; } + +.mdi-editor-insert-drive-file:before { + content: "\e79d"; } + +.mdi-editor-insert-emoticon:before { + content: "\e79e"; } + +.mdi-editor-insert-invitation:before { + content: "\e79f"; } + +.mdi-editor-insert-link:before { + content: "\e7a0"; } + +.mdi-editor-insert-photo:before { + content: "\e7a1"; } + +.mdi-editor-merge-type:before { + content: "\e7a2"; } + +.mdi-editor-mode-comment:before { + content: "\e7a3"; } + +.mdi-editor-mode-edit:before { + content: "\e7a4"; } + +.mdi-editor-publish:before { + content: "\e7a5"; } + +.mdi-editor-vertical-align-bottom:before { + content: "\e7a6"; } + +.mdi-editor-vertical-align-center:before { + content: "\e7a7"; } + +.mdi-editor-vertical-align-top:before { + content: "\e7a8"; } + +.mdi-editor-wrap-text:before { + content: "\e7a9"; } + +.mdi-file-attachment:before { + content: "\e7aa"; } + +.mdi-file-cloud-circle:before { + content: "\e7ab"; } + +.mdi-file-cloud-done:before { + content: "\e7ac"; } + +.mdi-file-cloud-download:before { + content: "\e7ad"; } + +.mdi-file-cloud-off:before { + content: "\e7ae"; } + +.mdi-file-cloud-queue:before { + content: "\e7af"; } + +.mdi-file-cloud-upload:before { + content: "\e7b0"; } + +.mdi-file-cloud:before { + content: "\e7b1"; } + +.mdi-file-file-download:before { + content: "\e7b2"; } + +.mdi-file-file-upload:before { + content: "\e7b3"; } + +.mdi-file-folder-open:before { + content: "\e7b4"; } + +.mdi-file-folder-shared:before { + content: "\e7b5"; } + +.mdi-file-folder:before { + content: "\e7b6"; } + +.mdi-device-access-alarm:before { + content: "\e720"; } + +.mdi-device-access-alarms:before { + content: "\e721"; } + +.mdi-device-access-time:before { + content: "\e722"; } + +.mdi-device-add-alarm:before { + content: "\e723"; } + +.mdi-device-airplanemode-off:before { + content: "\e724"; } + +.mdi-device-airplanemode-on:before { + content: "\e725"; } + +.mdi-device-battery-20:before { + content: "\e726"; } + +.mdi-device-battery-30:before { + content: "\e727"; } + +.mdi-device-battery-50:before { + content: "\e728"; } + +.mdi-device-battery-60:before { + content: "\e729"; } + +.mdi-device-battery-80:before { + content: "\e72a"; } + +.mdi-device-battery-90:before { + content: "\e72b"; } + +.mdi-device-battery-alert:before { + content: "\e72c"; } + +.mdi-device-battery-charging-20:before { + content: "\e72d"; } + +.mdi-device-battery-charging-30:before { + content: "\e72e"; } + +.mdi-device-battery-charging-50:before { + content: "\e72f"; } + +.mdi-device-battery-charging-60:before { + content: "\e730"; } + +.mdi-device-battery-charging-80:before { + content: "\e731"; } + +.mdi-device-battery-charging-90:before { + content: "\e732"; } + +.mdi-device-battery-charging-full:before { + content: "\e733"; } + +.mdi-device-battery-full:before { + content: "\e734"; } + +.mdi-device-battery-std:before { + content: "\e735"; } + +.mdi-device-battery-unknown:before { + content: "\e736"; } + +.mdi-device-bluetooth-connected:before { + content: "\e737"; } + +.mdi-device-bluetooth-disabled:before { + content: "\e738"; } + +.mdi-device-bluetooth-searching:before { + content: "\e739"; } + +.mdi-device-bluetooth:before { + content: "\e73a"; } + +.mdi-device-brightness-auto:before { + content: "\e73b"; } + +.mdi-device-brightness-high:before { + content: "\e73c"; } + +.mdi-device-brightness-low:before { + content: "\e73d"; } + +.mdi-device-brightness-medium:before { + content: "\e73e"; } + +.mdi-device-data-usage:before { + content: "\e73f"; } + +.mdi-device-developer-mode:before { + content: "\e740"; } + +.mdi-device-devices:before { + content: "\e741"; } + +.mdi-device-dvr:before { + content: "\e742"; } + +.mdi-device-gps-fixed:before { + content: "\e743"; } + +.mdi-device-gps-not-fixed:before { + content: "\e744"; } + +.mdi-device-gps-off:before { + content: "\e745"; } + +.mdi-device-location-disabled:before { + content: "\e746"; } + +.mdi-device-location-searching:before { + content: "\e747"; } + +.mdi-device-multitrack-audio:before { + content: "\e748"; } + +.mdi-device-network-cell:before { + content: "\e749"; } + +.mdi-device-network-wifi:before { + content: "\e74a"; } + +.mdi-device-nfc:before { + content: "\e74b"; } + +.mdi-device-now-wallpaper:before { + content: "\e74c"; } + +.mdi-device-now-widgets:before { + content: "\e74d"; } + +.mdi-device-screen-lock-landscape:before { + content: "\e74e"; } + +.mdi-device-screen-lock-portrait:before { + content: "\e74f"; } + +.mdi-device-screen-lock-rotation:before { + content: "\e750"; } + +.mdi-device-screen-rotation:before { + content: "\e751"; } + +.mdi-device-sd-storage:before { + content: "\e752"; } + +.mdi-device-settings-system-daydream:before { + content: "\e753"; } + +.mdi-device-signal-cellular-0-bar:before { + content: "\e754"; } + +.mdi-device-signal-cellular-1-bar:before { + content: "\e755"; } + +.mdi-device-signal-cellular-2-bar:before { + content: "\e756"; } + +.mdi-device-signal-cellular-3-bar:before { + content: "\e757"; } + +.mdi-device-signal-cellular-4-bar:before { + content: "\e758"; } + +.mdi-signal-wifi-statusbar-connected-no-internet-after:before { + content: "\e8f6"; } + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e759"; } + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e75a"; } + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e75b"; } + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e75c"; } + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75d"; } + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75e"; } + +.mdi-device-signal-cellular-null:before { + content: "\e75f"; } + +.mdi-device-signal-cellular-off:before { + content: "\e760"; } + +.mdi-device-signal-wifi-0-bar:before { + content: "\e761"; } + +.mdi-device-signal-wifi-1-bar:before { + content: "\e762"; } + +.mdi-device-signal-wifi-2-bar:before { + content: "\e763"; } + +.mdi-device-signal-wifi-3-bar:before { + content: "\e764"; } + +.mdi-device-signal-wifi-4-bar:before { + content: "\e765"; } + +.mdi-device-signal-wifi-off:before { + content: "\e766"; } + +.mdi-device-signal-wifi-statusbar-1-bar:before { + content: "\e767"; } + +.mdi-device-signal-wifi-statusbar-2-bar:before { + content: "\e768"; } + +.mdi-device-signal-wifi-statusbar-3-bar:before { + content: "\e769"; } + +.mdi-device-signal-wifi-statusbar-4-bar:before { + content: "\e76a"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { + content: "\e76b"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet:before { + content: "\e76f"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { + content: "\e76c"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { + content: "\e76d"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { + content: "\e76e"; } + +.mdi-signal-wifi-statusbar-not-connected-after:before { + content: "\e8f7"; } + +.mdi-device-signal-wifi-statusbar-not-connected:before { + content: "\e770"; } + +.mdi-device-signal-wifi-statusbar-null:before { + content: "\e771"; } + +.mdi-device-storage:before { + content: "\e772"; } + +.mdi-device-usb:before { + content: "\e773"; } + +.mdi-device-wifi-lock:before { + content: "\e774"; } + +.mdi-device-wifi-tethering:before { + content: "\e775"; } + +.mdi-hardware-cast-connected:before { + content: "\e7b7"; } + +.mdi-hardware-cast:before { + content: "\e7b8"; } + +.mdi-hardware-computer:before { + content: "\e7b9"; } + +.mdi-hardware-desktop-mac:before { + content: "\e7ba"; } + +.mdi-hardware-desktop-windows:before { + content: "\e7bb"; } + +.mdi-hardware-dock:before { + content: "\e7bc"; } + +.mdi-hardware-gamepad:before { + content: "\e7bd"; } + +.mdi-hardware-headset-mic:before { + content: "\e7be"; } + +.mdi-hardware-headset:before { + content: "\e7bf"; } + +.mdi-hardware-keyboard-alt:before { + content: "\e7c0"; } + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7c1"; } + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7c2"; } + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7c3"; } + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7c4"; } + +.mdi-hardware-keyboard-backspace:before { + content: "\e7c5"; } + +.mdi-hardware-keyboard-capslock:before { + content: "\e7c6"; } + +.mdi-hardware-keyboard-control:before { + content: "\e7c7"; } + +.mdi-hardware-keyboard-hide:before { + content: "\e7c8"; } + +.mdi-hardware-keyboard-return:before { + content: "\e7c9"; } + +.mdi-hardware-keyboard-tab:before { + content: "\e7ca"; } + +.mdi-hardware-keyboard-voice:before { + content: "\e7cb"; } + +.mdi-hardware-keyboard:before { + content: "\e7cc"; } + +.mdi-hardware-laptop-chromebook:before { + content: "\e7cd"; } + +.mdi-hardware-laptop-mac:before { + content: "\e7ce"; } + +.mdi-hardware-laptop-windows:before { + content: "\e7cf"; } + +.mdi-hardware-laptop:before { + content: "\e7d0"; } + +.mdi-hardware-memory:before { + content: "\e7d1"; } + +.mdi-hardware-mouse:before { + content: "\e7d2"; } + +.mdi-hardware-phone-android:before { + content: "\e7d3"; } + +.mdi-hardware-phone-iphone:before { + content: "\e7d4"; } + +.mdi-hardware-phonelink-off:before { + content: "\e7d5"; } + +.mdi-hardware-phonelink:before { + content: "\e7d6"; } + +.mdi-hardware-security:before { + content: "\e7d7"; } + +.mdi-hardware-sim-card:before { + content: "\e7d8"; } + +.mdi-hardware-smartphone:before { + content: "\e7d9"; } + +.mdi-hardware-speaker:before { + content: "\e7da"; } + +.mdi-hardware-tablet-android:before { + content: "\e7db"; } + +.mdi-hardware-tablet-mac:before { + content: "\e7dc"; } + +.mdi-hardware-tablet:before { + content: "\e7dd"; } + +.mdi-hardware-tv:before { + content: "\e7de"; } + +.mdi-hardware-watch:before { + content: "\e7df"; } + +.mdi-image-add-to-photos:before { + content: "\e7e0"; } + +.mdi-image-adjust:before { + content: "\e7e1"; } + +.mdi-image-assistant-photo:before { + content: "\e7e2"; } + +.mdi-image-audiotrack:before { + content: "\e7e3"; } + +.mdi-image-blur-circular:before { + content: "\e7e4"; } + +.mdi-image-blur-linear:before { + content: "\e7e5"; } + +.mdi-image-blur-off:before { + content: "\e7e6"; } + +.mdi-image-blur-on:before { + content: "\e7e7"; } + +.mdi-image-brightness-1:before { + content: "\e7e8"; } + +.mdi-image-brightness-2:before { + content: "\e7e9"; } + +.mdi-image-brightness-3:before { + content: "\e7ea"; } + +.mdi-image-brightness-4:before { + content: "\e7eb"; } + +.mdi-image-brightness-5:before { + content: "\e7ec"; } + +.mdi-image-brightness-6:before { + content: "\e7ed"; } + +.mdi-image-brightness-7:before { + content: "\e7ee"; } + +.mdi-image-brush:before { + content: "\e7ef"; } + +.mdi-image-camera-alt:before { + content: "\e7f0"; } + +.mdi-image-camera-front:before { + content: "\e7f1"; } + +.mdi-image-camera-rear:before { + content: "\e7f2"; } + +.mdi-image-camera-roll:before { + content: "\e7f3"; } + +.mdi-image-camera:before { + content: "\e7f4"; } + +.mdi-image-center-focus-strong:before { + content: "\e7f5"; } + +.mdi-image-center-focus-weak:before { + content: "\e7f6"; } + +.mdi-image-collections:before { + content: "\e7f7"; } + +.mdi-image-color-lens:before { + content: "\e7f8"; } + +.mdi-image-colorize:before { + content: "\e7f9"; } + +.mdi-image-compare:before { + content: "\e7fa"; } + +.mdi-image-control-point-duplicate:before { + content: "\e7fb"; } + +.mdi-image-control-point:before { + content: "\e7fc"; } + +.mdi-image-crop-3-2:before { + content: "\e7fd"; } + +.mdi-image-crop-5-4:before { + content: "\e7fe"; } + +.mdi-image-crop-7-5:before { + content: "\e7ff"; } + +.mdi-image-crop-16-9:before { + content: "\e800"; } + +.mdi-image-crop-din:before { + content: "\e801"; } + +.mdi-image-crop-free:before { + content: "\e802"; } + +.mdi-image-crop-landscape:before { + content: "\e803"; } + +.mdi-image-crop-original:before { + content: "\e804"; } + +.mdi-image-crop-portrait:before { + content: "\e805"; } + +.mdi-image-crop-square:before { + content: "\e806"; } + +.mdi-image-crop:before { + content: "\e807"; } + +.mdi-image-dehaze:before { + content: "\e808"; } + +.mdi-image-details:before { + content: "\e809"; } + +.mdi-image-edit:before { + content: "\e80a"; } + +.mdi-image-exposure-minus-1:before { + content: "\e80b"; } + +.mdi-image-exposure-minus-2:before { + content: "\e80c"; } + +.mdi-image-exposure-plus-1:before { + content: "\e80d"; } + +.mdi-image-exposure-plus-2:before { + content: "\e80e"; } + +.mdi-image-exposure-zero:before { + content: "\e80f"; } + +.mdi-image-exposure:before { + content: "\e810"; } + +.mdi-image-filter-1:before { + content: "\e811"; } + +.mdi-image-filter-2:before { + content: "\e812"; } + +.mdi-image-filter-3:before { + content: "\e813"; } + +.mdi-image-filter-4:before { + content: "\e814"; } + +.mdi-image-filter-5:before { + content: "\e815"; } + +.mdi-image-filter-6:before { + content: "\e816"; } + +.mdi-image-filter-7:before { + content: "\e817"; } + +.mdi-image-filter-8:before { + content: "\e818"; } + +.mdi-image-filter-9-plus:before { + content: "\e819"; } + +.mdi-image-filter-9:before { + content: "\e81a"; } + +.mdi-image-filter-b-and-w:before { + content: "\e81b"; } + +.mdi-image-filter-center-focus:before { + content: "\e81c"; } + +.mdi-image-filter-drama:before { + content: "\e81d"; } + +.mdi-image-filter-frames:before { + content: "\e81e"; } + +.mdi-image-filter-hdr:before { + content: "\e81f"; } + +.mdi-image-filter-none:before { + content: "\e820"; } + +.mdi-image-filter-tilt-shift:before { + content: "\e821"; } + +.mdi-image-filter-vintage:before { + content: "\e822"; } + +.mdi-image-filter:before { + content: "\e823"; } + +.mdi-image-flare:before { + content: "\e824"; } + +.mdi-image-flash-auto:before { + content: "\e825"; } + +.mdi-image-flash-off:before { + content: "\e826"; } + +.mdi-image-flash-on:before { + content: "\e827"; } + +.mdi-image-flip:before { + content: "\e828"; } + +.mdi-image-gradient:before { + content: "\e829"; } + +.mdi-image-grain:before { + content: "\e82a"; } + +.mdi-image-grid-off:before { + content: "\e82b"; } + +.mdi-image-grid-on:before { + content: "\e82c"; } + +.mdi-image-hdr-off:before { + content: "\e82d"; } + +.mdi-image-hdr-on:before { + content: "\e82e"; } + +.mdi-image-hdr-strong:before { + content: "\e82f"; } + +.mdi-image-hdr-weak:before { + content: "\e830"; } + +.mdi-image-healing:before { + content: "\e831"; } + +.mdi-image-image-aspect-ratio:before { + content: "\e832"; } + +.mdi-image-image:before { + content: "\e833"; } + +.mdi-image-iso:before { + content: "\e834"; } + +.mdi-image-landscape:before { + content: "\e835"; } + +.mdi-image-leak-add:before { + content: "\e836"; } + +.mdi-image-leak-remove:before { + content: "\e837"; } + +.mdi-image-lens:before { + content: "\e838"; } + +.mdi-image-looks-3:before { + content: "\e839"; } + +.mdi-image-looks-4:before { + content: "\e83a"; } + +.mdi-image-looks-5:before { + content: "\e83b"; } + +.mdi-image-looks-6:before { + content: "\e83c"; } + +.mdi-image-looks-one:before { + content: "\e83d"; } + +.mdi-image-looks-two:before { + content: "\e83e"; } + +.mdi-image-looks:before { + content: "\e83f"; } + +.mdi-image-loupe:before { + content: "\e840"; } + +.mdi-image-movie-creation:before { + content: "\e841"; } + +.mdi-image-nature-people:before { + content: "\e842"; } + +.mdi-image-nature:before { + content: "\e843"; } + +.mdi-image-navigate-before:before { + content: "\e844"; } + +.mdi-image-navigate-next:before { + content: "\e845"; } + +.mdi-image-palette:before { + content: "\e846"; } + +.mdi-image-panorama-fisheye:before { + content: "\e847"; } + +.mdi-image-panorama-horizontal:before { + content: "\e848"; } + +.mdi-image-panorama-vertical:before { + content: "\e849"; } + +.mdi-image-panorama-wide-angle:before { + content: "\e84a"; } + +.mdi-image-panorama:before { + content: "\e84b"; } + +.mdi-image-photo-album:before { + content: "\e84c"; } + +.mdi-image-photo-camera:before { + content: "\e84d"; } + +.mdi-image-photo-library:before { + content: "\e84e"; } + +.mdi-image-photo:before { + content: "\e84f"; } + +.mdi-image-portrait:before { + content: "\e850"; } + +.mdi-image-remove-red-eye:before { + content: "\e851"; } + +.mdi-image-rotate-left:before { + content: "\e852"; } + +.mdi-image-rotate-right:before { + content: "\e853"; } + +.mdi-image-slideshow:before { + content: "\e854"; } + +.mdi-image-straighten:before { + content: "\e855"; } + +.mdi-image-style:before { + content: "\e856"; } + +.mdi-image-switch-camera:before { + content: "\e857"; } + +.mdi-image-switch-video:before { + content: "\e858"; } + +.mdi-image-tag-faces:before { + content: "\e859"; } + +.mdi-image-texture:before { + content: "\e85a"; } + +.mdi-image-timelapse:before { + content: "\e85b"; } + +.mdi-image-timer-3:before { + content: "\e85c"; } + +.mdi-image-timer-10:before { + content: "\e85d"; } + +.mdi-image-timer-auto:before { + content: "\e85e"; } + +.mdi-image-timer-off:before { + content: "\e85f"; } + +.mdi-image-timer:before { + content: "\e860"; } + +.mdi-image-tonality:before { + content: "\e861"; } + +.mdi-image-transform:before { + content: "\e862"; } + +.mdi-image-tune:before { + content: "\e863"; } + +.mdi-image-wb-auto:before { + content: "\e864"; } + +.mdi-image-wb-cloudy:before { + content: "\e865"; } + +.mdi-image-wb-incandescent:before { + content: "\e866"; } + +.mdi-image-wb-irradescent:before { + content: "\e867"; } + +.mdi-image-wb-sunny:before { + content: "\e868"; } + +.mdi-maps-beenhere:before { + content: "\e869"; } + +.mdi-maps-directions-bike:before { + content: "\e86a"; } + +.mdi-maps-directions-bus:before { + content: "\e86b"; } + +.mdi-maps-directions-car:before { + content: "\e86c"; } + +.mdi-maps-directions-ferry:before { + content: "\e86d"; } + +.mdi-maps-directions-subway:before { + content: "\e86e"; } + +.mdi-maps-directions-train:before { + content: "\e86f"; } + +.mdi-maps-directions-transit:before { + content: "\e870"; } + +.mdi-maps-directions-walk:before { + content: "\e871"; } + +.mdi-maps-directions:before { + content: "\e872"; } + +.mdi-maps-flight:before { + content: "\e873"; } + +.mdi-maps-hotel:before { + content: "\e874"; } + +.mdi-maps-layers-clear:before { + content: "\e875"; } + +.mdi-maps-layers:before { + content: "\e876"; } + +.mdi-maps-local-airport:before { + content: "\e877"; } + +.mdi-maps-local-atm:before { + content: "\e878"; } + +.mdi-maps-local-attraction:before { + content: "\e879"; } + +.mdi-maps-local-bar:before { + content: "\e87a"; } + +.mdi-maps-local-cafe:before { + content: "\e87b"; } + +.mdi-maps-local-car-wash:before { + content: "\e87c"; } + +.mdi-maps-local-convenience-store:before { + content: "\e87d"; } + +.mdi-maps-local-drink:before { + content: "\e87e"; } + +.mdi-maps-local-florist:before { + content: "\e87f"; } + +.mdi-maps-local-gas-station:before { + content: "\e880"; } + +.mdi-maps-local-grocery-store:before { + content: "\e881"; } + +.mdi-maps-local-hospital:before { + content: "\e882"; } + +.mdi-maps-local-hotel:before { + content: "\e883"; } + +.mdi-maps-local-laundry-service:before { + content: "\e884"; } + +.mdi-maps-local-library:before { + content: "\e885"; } + +.mdi-maps-local-mall:before { + content: "\e886"; } + +.mdi-maps-local-movies:before { + content: "\e887"; } + +.mdi-maps-local-offer:before { + content: "\e888"; } + +.mdi-maps-local-parking:before { + content: "\e889"; } + +.mdi-maps-local-pharmacy:before { + content: "\e88a"; } + +.mdi-maps-local-phone:before { + content: "\e88b"; } + +.mdi-maps-local-pizza:before { + content: "\e88c"; } + +.mdi-maps-local-play:before { + content: "\e88d"; } + +.mdi-maps-local-post-office:before { + content: "\e88e"; } + +.mdi-maps-local-print-shop:before { + content: "\e88f"; } + +.mdi-maps-local-restaurant:before { + content: "\e890"; } + +.mdi-maps-local-see:before { + content: "\e891"; } + +.mdi-maps-local-shipping:before { + content: "\e892"; } + +.mdi-maps-local-taxi:before { + content: "\e893"; } + +.mdi-maps-location-history:before { + content: "\e894"; } + +.mdi-maps-map:before { + content: "\e895"; } + +.mdi-maps-my-location:before { + content: "\e896"; } + +.mdi-maps-navigation:before { + content: "\e897"; } + +.mdi-maps-pin-drop:before { + content: "\e898"; } + +.mdi-maps-place:before { + content: "\e899"; } + +.mdi-maps-rate-review:before { + content: "\e89a"; } + +.mdi-maps-restaurant-menu:before { + content: "\e89b"; } + +.mdi-maps-satellite:before { + content: "\e89c"; } + +.mdi-maps-store-mall-directory:before { + content: "\e89d"; } + +.mdi-maps-terrain:before { + content: "\e89e"; } + +.mdi-maps-traffic:before { + content: "\e89f"; } + +.mdi-navigation-apps:before { + content: "\e8a0"; } + +.mdi-navigation-arrow-back:before { + content: "\e8a1"; } + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e8a2"; } + +.mdi-navigation-arrow-drop-down:before { + content: "\e8a3"; } + +.mdi-navigation-arrow-drop-up:before { + content: "\e8a4"; } + +.mdi-navigation-arrow-forward:before { + content: "\e8a5"; } + +.mdi-navigation-cancel:before { + content: "\e8a6"; } + +.mdi-navigation-check:before { + content: "\e8a7"; } + +.mdi-navigation-chevron-left:before { + content: "\e8a8"; } + +.mdi-navigation-chevron-right:before { + content: "\e8a9"; } + +.mdi-navigation-close:before { + content: "\e8aa"; } + +.mdi-navigation-expand-less:before { + content: "\e8ab"; } + +.mdi-navigation-expand-more:before { + content: "\e8ac"; } + +.mdi-navigation-fullscreen-exit:before { + content: "\e8ad"; } + +.mdi-navigation-fullscreen:before { + content: "\e8ae"; } + +.mdi-navigation-menu:before { + content: "\e8af"; } + +.mdi-navigation-more-horiz:before { + content: "\e8b0"; } + +.mdi-navigation-more-vert:before { + content: "\e8b1"; } + +.mdi-navigation-refresh:before { + content: "\e8b2"; } + +.mdi-navigation-unfold-less:before { + content: "\e8b3"; } + +.mdi-navigation-unfold-more:before { + content: "\e8b4"; } + +.mdi-notification-adb:before { + content: "\e8b5"; } + +.mdi-notification-bluetooth-audio:before { + content: "\e8b6"; } + +.mdi-notification-disc-full:before { + content: "\e8b7"; } + +.mdi-notification-dnd-forwardslash:before { + content: "\e8b8"; } + +.mdi-notification-do-not-disturb:before { + content: "\e8b9"; } + +.mdi-notification-drive-eta:before { + content: "\e8ba"; } + +.mdi-notification-event-available:before { + content: "\e8bb"; } + +.mdi-notification-event-busy:before { + content: "\e8bc"; } + +.mdi-notification-event-note:before { + content: "\e8bd"; } + +.mdi-notification-folder-special:before { + content: "\e8be"; } + +.mdi-notification-mms:before { + content: "\e8bf"; } + +.mdi-notification-more:before { + content: "\e8c0"; } + +.mdi-notification-network-locked:before { + content: "\e8c1"; } + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8c2"; } + +.mdi-notification-phone-forwarded:before { + content: "\e8c3"; } + +.mdi-notification-phone-in-talk:before { + content: "\e8c4"; } + +.mdi-notification-phone-locked:before { + content: "\e8c5"; } + +.mdi-notification-phone-missed:before { + content: "\e8c6"; } + +.mdi-notification-phone-paused:before { + content: "\e8c7"; } + +.mdi-notification-play-download:before { + content: "\e8c8"; } + +.mdi-notification-play-install:before { + content: "\e8c9"; } + +.mdi-notification-sd-card:before { + content: "\e8ca"; } + +.mdi-notification-sim-card-alert:before { + content: "\e8cb"; } + +.mdi-notification-sms-failed:before { + content: "\e8cc"; } + +.mdi-notification-sms:before { + content: "\e8cd"; } + +.mdi-notification-sync-disabled:before { + content: "\e8ce"; } + +.mdi-notification-sync-problem:before { + content: "\e8cf"; } + +.mdi-notification-sync:before { + content: "\e8d0"; } + +.mdi-notification-system-update:before { + content: "\e8d1"; } + +.mdi-notification-tap-and-play:before { + content: "\e8d2"; } + +.mdi-notification-time-to-leave:before { + content: "\e8d3"; } + +.mdi-notification-vibration:before { + content: "\e8d4"; } + +.mdi-notification-voice-chat:before { + content: "\e8d5"; } + +.mdi-notification-vpn-lock:before { + content: "\e8d6"; } + +.mdi-social-cake:before { + content: "\e8d7"; } + +.mdi-social-domain:before { + content: "\e8d8"; } + +.mdi-social-group-add:before { + content: "\e8d9"; } + +.mdi-social-group:before { + content: "\e8da"; } + +.mdi-social-location-city:before { + content: "\e8db"; } + +.mdi-social-mood:before { + content: "\e8dc"; } + +.mdi-social-notifications-none:before { + content: "\e8dd"; } + +.mdi-social-notifications-off:before { + content: "\e8de"; } + +.mdi-social-notifications-on:before { + content: "\e8df"; } + +.mdi-social-notifications-paused:before { + content: "\e8e0"; } + +.mdi-social-notifications:before { + content: "\e8e1"; } + +.mdi-social-pages:before { + content: "\e8e2"; } + +.mdi-social-party-mode:before { + content: "\e8e3"; } + +.mdi-social-people-outline:before { + content: "\e8e4"; } + +.mdi-social-people:before { + content: "\e8e5"; } + +.mdi-social-person-add:before { + content: "\e8e6"; } + +.mdi-social-person-outline:before { + content: "\e8e7"; } + +.mdi-social-person:before { + content: "\e8e8"; } + +.mdi-social-plus-one:before { + content: "\e8e9"; } + +.mdi-social-poll:before { + content: "\e8ea"; } + +.mdi-social-public:before { + content: "\e8eb"; } + +.mdi-social-school:before { + content: "\e8ec"; } + +.mdi-social-share:before { + content: "\e8ed"; } + +.mdi-social-whatshot:before { + content: "\e8ee"; } + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8ef"; } + +.mdi-toggle-check-box:before { + content: "\e8f0"; } + +.mdi-toggle-radio-button-off:before { + content: "\e8f1"; } + +.mdi-toggle-radio-button-on:before { + content: "\e8f2"; } + +.mdi-toggle-star-half:before { + content: "\e8f3"; } + +.mdi-toggle-star-outline:before { + content: "\e8f4"; } + +.mdi-toggle-star:before { + content: "\e8f5"; } + +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; } + +@media only screen and (min-width: 601px) { + .container { + width: 85%; } } +@media only screen and (min-width: 993px) { + .container { + width: 70%; } } +.container .row { + margin-left: -0.75rem; + margin-right: -0.75rem; } + +.section { + padding-top: 1rem; + padding-bottom: 1rem; } + .section.no-pad { + padding: 0; } + .section.no-pad-bot { + padding-bottom: 0; } + .section.no-pad-top { + padding-top: 0; } + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; } + .row:after { + content: ""; + display: table; + clear: both; } + .row .col { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 0.75rem; } + .row .col.s1 { + width: 8.33333%; + margin-left: 0; } + .row .col.s2 { + width: 16.66667%; + margin-left: 0; } + .row .col.s3 { + width: 25%; + margin-left: 0; } + .row .col.s4 { + width: 33.33333%; + margin-left: 0; } + .row .col.s5 { + width: 41.66667%; + margin-left: 0; } + .row .col.s6 { + width: 50%; + margin-left: 0; } + .row .col.s7 { + width: 58.33333%; + margin-left: 0; } + .row .col.s8 { + width: 66.66667%; + margin-left: 0; } + .row .col.s9 { + width: 75%; + margin-left: 0; } + .row .col.s10 { + width: 83.33333%; + margin-left: 0; } + .row .col.s11 { + width: 91.66667%; + margin-left: 0; } + .row .col.s12 { + width: 100%; + margin-left: 0; } + .row .col.offset-s1 { + margin-left: 8.33333%; } + .row .col.offset-s2 { + margin-left: 16.66667%; } + .row .col.offset-s3 { + margin-left: 25%; } + .row .col.offset-s4 { + margin-left: 33.33333%; } + .row .col.offset-s5 { + margin-left: 41.66667%; } + .row .col.offset-s6 { + margin-left: 50%; } + .row .col.offset-s7 { + margin-left: 58.33333%; } + .row .col.offset-s8 { + margin-left: 66.66667%; } + .row .col.offset-s9 { + margin-left: 75%; } + .row .col.offset-s10 { + margin-left: 83.33333%; } + .row .col.offset-s11 { + margin-left: 91.66667%; } + .row .col.offset-s12 { + margin-left: 100%; } + @media only screen and (min-width: 601px) { + .row .col.m1 { + width: 8.33333%; + margin-left: 0; } + .row .col.m2 { + width: 16.66667%; + margin-left: 0; } + .row .col.m3 { + width: 25%; + margin-left: 0; } + .row .col.m4 { + width: 33.33333%; + margin-left: 0; } + .row .col.m5 { + width: 41.66667%; + margin-left: 0; } + .row .col.m6 { + width: 50%; + margin-left: 0; } + .row .col.m7 { + width: 58.33333%; + margin-left: 0; } + .row .col.m8 { + width: 66.66667%; + margin-left: 0; } + .row .col.m9 { + width: 75%; + margin-left: 0; } + .row .col.m10 { + width: 83.33333%; + margin-left: 0; } + .row .col.m11 { + width: 91.66667%; + margin-left: 0; } + .row .col.m12 { + width: 100%; + margin-left: 0; } + .row .col.offset-m1 { + margin-left: 8.33333%; } + .row .col.offset-m2 { + margin-left: 16.66667%; } + .row .col.offset-m3 { + margin-left: 25%; } + .row .col.offset-m4 { + margin-left: 33.33333%; } + .row .col.offset-m5 { + margin-left: 41.66667%; } + .row .col.offset-m6 { + margin-left: 50%; } + .row .col.offset-m7 { + margin-left: 58.33333%; } + .row .col.offset-m8 { + margin-left: 66.66667%; } + .row .col.offset-m9 { + margin-left: 75%; } + .row .col.offset-m10 { + margin-left: 83.33333%; } + .row .col.offset-m11 { + margin-left: 91.66667%; } + .row .col.offset-m12 { + margin-left: 100%; } } + @media only screen and (min-width: 993px) { + .row .col.l1 { + width: 8.33333%; + margin-left: 0; } + .row .col.l2 { + width: 16.66667%; + margin-left: 0; } + .row .col.l3 { + width: 25%; + margin-left: 0; } + .row .col.l4 { + width: 33.33333%; + margin-left: 0; } + .row .col.l5 { + width: 41.66667%; + margin-left: 0; } + .row .col.l6 { + width: 50%; + margin-left: 0; } + .row .col.l7 { + width: 58.33333%; + margin-left: 0; } + .row .col.l8 { + width: 66.66667%; + margin-left: 0; } + .row .col.l9 { + width: 75%; + margin-left: 0; } + .row .col.l10 { + width: 83.33333%; + margin-left: 0; } + .row .col.l11 { + width: 91.66667%; + margin-left: 0; } + .row .col.l12 { + width: 100%; + margin-left: 0; } + .row .col.offset-l1 { + margin-left: 8.33333%; } + .row .col.offset-l2 { + margin-left: 16.66667%; } + .row .col.offset-l3 { + margin-left: 25%; } + .row .col.offset-l4 { + margin-left: 33.33333%; } + .row .col.offset-l5 { + margin-left: 41.66667%; } + .row .col.offset-l6 { + margin-left: 50%; } + .row .col.offset-l7 { + margin-left: 58.33333%; } + .row .col.offset-l8 { + margin-left: 66.66667%; } + .row .col.offset-l9 { + margin-left: 75%; } + .row .col.offset-l10 { + margin-left: 83.33333%; } + .row .col.offset-l11 { + margin-left: 91.66667%; } + .row .col.offset-l12 { + margin-left: 100%; } } + +nav { + color: #fff; + background-color: #ee6e73; + width: 100%; + height: 56px; + line-height: 56px; } + nav a { + color: #fff; } + nav .nav-wrapper { + position: relative; + height: 100%; } + nav .nav-wrapper i { + display: block; + font-size: 2rem; } + @media only screen and (min-width: 993px) { + nav a.button-collapse { + display: none; } } + nav .button-collapse { + float: left; + position: relative; + z-index: 1; + height: 56px; } + nav .button-collapse i { + font-size: 2.7rem; + height: 56px; + line-height: 56px; } + nav .brand-logo { + position: absolute; + color: #fff; + display: inline-block; + font-size: 2.1rem; + padding: 0; + white-space: nowrap; } + nav .brand-logo.center { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } + @media only screen and (max-width: 992px) { + nav .brand-logo { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } } + nav .brand-logo.right { + right: 0.5rem; + padding: 0; } + nav ul { + margin: 0; } + nav ul li { + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + -o-transition: background-color 0.3s; + -ms-transition: background-color 0.3s; + transition: background-color 0.3s; + float: left; + padding: 0; } + nav ul li:hover, nav ul li.active { + background-color: rgba(0, 0, 0, 0.1); } + nav ul a { + font-size: 1rem; + color: #fff; + display: block; + padding: 0 15px; } + nav ul.left { + float: left; } + nav .input-field { + margin: 0; } + nav .input-field input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; } + nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { + border: none; + box-shadow: none; } + nav .input-field label { + top: 0; + left: 0; } + nav .input-field label i { + color: rgba(255, 255, 255, 0.7); + -webkit-transition: color 0.3s; + -moz-transition: color 0.3s; + -o-transition: color 0.3s; + -ms-transition: color 0.3s; + transition: color 0.3s; } + nav .input-field label.active i { + color: #fff; } + nav .input-field label.active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + +.navbar-fixed { + position: relative; + height: 56px; + z-index: 998; } + .navbar-fixed nav { + position: fixed; } + +@media only screen and (min-width: 601px) { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: 64px; + line-height: 64px; } + + .navbar-fixed { + height: 64px; } } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Thin.woff2") format("woff2"), url("../font/roboto/Roboto-Thin.woff") format("woff"), url("../font/roboto/Roboto-Thin.ttf") format("truetype"); + font-weight: 200; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Light.woff2") format("woff2"), url("../font/roboto/Roboto-Light.woff") format("woff"), url("../font/roboto/Roboto-Light.ttf") format("truetype"); + font-weight: 300; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Regular.woff2") format("woff2"), url("../font/roboto/Roboto-Regular.woff") format("woff"), url("../font/roboto/Roboto-Regular.ttf") format("truetype"); + font-weight: 400; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Medium.woff2") format("woff2"), url("../font/roboto/Roboto-Medium.woff") format("woff"), url("../font/roboto/Roboto-Medium.ttf") format("truetype"); + font-weight: 500; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Bold.woff2") format("woff2"), url("../font/roboto/Roboto-Bold.woff") format("woff"), url("../font/roboto/Roboto-Bold.ttf") format("truetype"); + font-weight: 700; } +a { + text-decoration: none; } + +html { + line-height: 1.5; + font-family: "Roboto", sans-serif; + font-weight: normal; + color: rgba(0, 0, 0, 0.87); } + @media only screen and (min-width: 0) { + html { + font-size: 14px; } } + @media only screen and (min-width: 992px) { + html { + font-size: 14.5px; } } + @media only screen and (min-width: 1200px) { + html { + font-size: 15px; } } + +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.1; } + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; } + +h1 { + font-size: 4.2rem; + line-height: 110%; + margin: 2.1rem 0 1.68rem 0; } + +h2 { + font-size: 3.56rem; + line-height: 110%; + margin: 1.78rem 0 1.424rem 0; } + +h3 { + font-size: 2.92rem; + line-height: 110%; + margin: 1.46rem 0 1.168rem 0; } + +h4 { + font-size: 2.28rem; + line-height: 110%; + margin: 1.14rem 0 0.912rem 0; } + +h5 { + font-size: 1.64rem; + line-height: 110%; + margin: 0.82rem 0 0.656rem 0; } + +h6 { + font-size: 1rem; + line-height: 110%; + margin: 0.5rem 0 0.4rem 0; } + +em { + font-style: italic; } + +strong { + font-weight: 500; } + +small { + font-size: 75%; } + +.light, footer.page-footer .footer-copyright { + font-weight: 300; } + +.thin { + font-weight: 200; } + +.flow-text { + font-weight: 300; } + @media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + @media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; } } + @media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; } } + @media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; } } + @media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; } } + @media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; } } + @media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; } } + @media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; } } + @media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; } } + @media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; } } + @media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; } } + @media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; } } + @media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; } } + @media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; } } + @media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; } } + @media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; } } + @media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; } } + @media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; } } + @media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; } } + @media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; } } + @media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; } } + @media only screen and (max-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + +.card-panel { + transition: box-shadow .25s; + padding: 20px; + margin: 0.5rem 0 1rem 0; + border-radius: 2px; + background-color: #fff; } + +.card { + position: relative; + overflow: hidden; + margin: 0.5rem 0 1rem 0; + background-color: #fff; + transition: box-shadow .25s; + border-radius: 2px; } + .card .card-title { + color: #fff; + font-size: 24px; + font-weight: 300; } + .card .card-title.activator { + cursor: pointer; } + .card.small, .card.medium, .card.large { + position: relative; } + .card.small .card-image, .card.medium .card-image, .card.large .card-image { + overflow: hidden; } + .card.small .card-content, .card.medium .card-content, .card.large .card-content { + overflow: hidden; } + .card.small .card-action, .card.medium .card-action, .card.large .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; } + .card.small { + height: 300px; } + .card.small .card-image { + height: 150px; } + .card.small .card-content { + height: 150px; } + .card.medium { + height: 400px; } + .card.medium .card-image { + height: 250px; } + .card.medium .card-content { + height: 150px; } + .card.large { + height: 500px; } + .card.large .card-image { + height: 330px; } + .card.large .card-content { + height: 170px; } + .card .card-image { + position: relative; } + .card .card-image img { + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; } + .card .card-image .card-title { + position: absolute; + bottom: 0; + left: 0; + padding: 20px; } + .card .card-content { + padding: 20px; + border-radius: 0 0 2px 2px; } + .card .card-content p { + margin: 0; + color: inherit; } + .card .card-content .card-title { + line-height: 48px; } + .card .card-action { + border-top: 1px solid rgba(160, 160, 160, 0.2); + padding: 20px; } + .card .card-action a { + color: #ffab40; + margin-right: 20px; + -webkit-transition: color 0.3s ease; + -moz-transition: color 0.3s ease; + -o-transition: color 0.3s ease; + -ms-transition: color 0.3s ease; + transition: color 0.3s ease; + text-transform: uppercase; } + .card .card-action a:hover { + color: #ffd8a6; } + .card .card-reveal { + padding: 20px; + position: absolute; + background-color: #fff; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 1; + display: none; } + .card .card-reveal .card-title { + cursor: pointer; + display: block; } + +#toast-container { + display: block; + position: fixed; + z-index: 1001; } + @media only screen and (max-width: 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; } } + @media only screen and (min-width: 601px) and (max-width: 992px) { + #toast-container { + min-width: 30%; + left: 5%; + bottom: 7%; } } + @media only screen and (min-width: 993px) { + #toast-container { + min-width: 8%; + top: 10%; + right: 7%; } } + +.toast { + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width: 100%; + height: 48px; + line-height: 48px; + background-color: #323232; + padding: 0 25px; + font-size: 1.1rem; + font-weight: 300; + color: #fff; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: space-between; + justify-content: space-between; } + .toast .btn, .toast .btn-large, .toast .btn-flat { + margin: 0; + margin-left: 3rem; } + .toast.rounded { + border-radius: 24px; } + @media only screen and (max-width: 600px) { + .toast { + width: 100%; + border-radius: 0; } } + @media only screen and (min-width: 601px) and (max-width: 992px) { + .toast { + float: left; } } + @media only screen and (min-width: 993px) { + .toast { + float: right; } } + +.tabs { + position: relative; + height: 48px; + background-color: #fff; + margin: 0 auto; + width: 100%; + white-space: nowrap; } + .tabs .tab { + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; } + .tabs .tab a { + color: #ee6e73; + display: block; + width: 100%; + height: 100%; + -webkit-transition: color 0.28s ease; + -moz-transition: color 0.28s ease; + -o-transition: color 0.28s ease; + -ms-transition: color 0.28s ease; + transition: color 0.28s ease; } + .tabs .tab a:hover { + color: #f9c9cb; } + .tabs .tab.disabled a { + color: #f9c9cb; + cursor: default; } + .tabs .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: #f6b2b5; + will-change: left, right; } + +.tabs .tab { + padding: 0; } + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 1rem; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left: 0; + top: 0; + will-change: top, left; } + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 14px 14px; + background-color: #323232; + z-index: -1; + -webkit-transform-origin: 50% 10%; + -moz-transform-origin: 50% 10%; + -ms-transform-origin: 50% 10%; + -o-transform-origin: 50% 10%; + transform-origin: 50% 10%; + will-change: transform, opacity; } + +.btn, .btn-large, .btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: 36px; + line-height: 36px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; } + +.btn.disabled, .disabled.btn-large, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-large:disabled, .btn-floating:disabled { + background-color: #DFDFDF !important; + box-shadow: none; + color: #9F9F9F !important; + cursor: default; } + .btn.disabled *, .disabled.btn-large *, .btn-floating.disabled *, .btn-large.disabled *, .btn:disabled *, .btn-large:disabled *, .btn-large:disabled *, .btn-floating:disabled * { + pointer-events: none; } + .btn.disabled:hover, .disabled.btn-large:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn:disabled:hover, .btn-large:disabled:hover, .btn-large:disabled:hover, .btn-floating:disabled:hover { + background-color: #DFDFDF; + color: #9F9F9F; } + +.btn i, .btn-large i, .btn-floating i, .btn-large i, .btn-flat i { + font-size: 1.3rem; + line-height: inherit; } + +.btn, .btn-large { + text-decoration: none; + color: #fff; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + -webkit-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -ms-transition: 0.2s ease-out; + transition: 0.2s ease-out; + cursor: pointer; } + .btn:hover, .btn-large:hover { + background-color: #2bbbad; } + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #26a69a; + border-radius: 50%; + transition: .3s; + cursor: pointer; + vertical-align: middle; } + .btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 37px; } + .btn-floating:before { + border-radius: 0; } + .btn-floating.btn-large { + width: 55.5px; + height: 55.5px; } + .btn-floating.btn-large i { + line-height: 55.5px; } + +button.btn-floating { + border: none; } + +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; } + .fixed-action-btn ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; } + .fixed-action-btn ul li { + margin-bottom: 15px; } + .fixed-action-btn ul a.btn-floating { + opacity: 0; } + +.btn-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; } + .btn-flat.disabled { + color: #b3b3b3; + cursor: default; } + +.btn-large { + height: 54px; + line-height: 56px; } + .btn-large i { + font-size: 1.6rem; } + +.btn-block { + display: block; } + +.dropdown-content { + background-color: #fff; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; } + .dropdown-content li { + clear: both; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; } + .dropdown-content li:hover, .dropdown-content li.active { + background-color: #eee; } + .dropdown-content li > a, .dropdown-content li > span { + font-size: 1.2rem; + color: #26a69a; + display: block; + padding: 1rem 1rem; } + .dropdown-content li > a > i { + height: inherit; + line-height: inherit; } + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; } + .waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + -moz-transition: all 0.7s ease-out; + -o-transition: all 0.7s ease-out; + -ms-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; } + .waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); } + .waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); } + .waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); } + .waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); } + .waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); } + .waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); } + .waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); } + +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; } + +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; } + .waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; } + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; } + +.waves-block { + display: block; } + +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; } + +.modal { + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + border-radius: 2px; + will-change: top, opacity; } + @media only screen and (max-width: 992px) { + .modal { + width: 80%; } } + .modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; } + .modal .modal-content { + padding: 24px; } + .modal .modal-close { + cursor: pointer; } + .modal .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; } + .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { + float: right; + margin: 6px 0; } + +.lean-overlay { + position: fixed; + z-index: 999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + will-change: opacity; } + +.modal.modal-fixed-footer { + padding: 0; + height: 70%; } + .modal.modal-fixed-footer .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; } + .modal.modal-fixed-footer .modal-footer { + border-top: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; } + +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; } + +.collapsible { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; + margin: 0.5rem 0 1rem 0; } + +.collapsible-header { + display: block; + cursor: pointer; + height: 3rem; + line-height: 3rem; + padding: 0 1rem; + background-color: #fff; + border-bottom: 1px solid #ddd; } + .collapsible-header i { + width: 2rem; + font-size: 1.6rem; + line-height: 3rem; + display: block; + float: left; + text-align: center; + margin-right: 1rem; } + +.collapsible-body { + display: none; + border-bottom: 1px solid #ddd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + .collapsible-body p { + margin: 0; + padding: 2rem; } + +.side-nav .collapsible { + border: none; + box-shadow: none; } + .side-nav .collapsible li { + padding: 0; } +.side-nav .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + margin: 0 1rem; } + .side-nav .collapsible-header i { + line-height: inherit; } +.side-nav .collapsible-body { + border: 0; + background-color: #fff; } + .side-nav .collapsible-body li a { + margin: 0 1rem 0 2rem; } + +.collapsible.popout { + border: none; + box-shadow: none; } + .collapsible.popout > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + margin: 0 24px; + transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } + .collapsible.popout > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; } + +.materialboxed { + cursor: zoom-in; + position: relative; + -webkit-transition: opacity 0.4s; + -moz-transition: opacity 0.4s; + -o-transition: opacity 0.4s; + -ms-transition: opacity 0.4s; + transition: opacity 0.4s; } + .materialboxed:hover { + will-change: left, top, width, height; } + .materialboxed:hover:not(.active) { + opacity: .8; } + +.materialboxed.active { + cursor: zoom-out; } + +#materialbox-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 999; + will-change: opacity; } + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; } + +/* Remove Focus Boxes */ +select:focus { + outline: 1px solid #c9f3ef; } + +button:focus { + outline: none; + background-color: #2ab7a9; } + +label { + font-size: 0.8rem; + color: #9e9e9e; } + +/*************************** + Text Inputs + Textarea +****************************/ +::-webkit-input-placeholder { + color: #d1d1d1; } + +:-moz-placeholder { + /* Firefox 18- */ + color: #d1d1d1; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #d1d1d1; } + +:-ms-input-placeholder { + color: #d1d1d1; } + +input[type=text], +input[type=password], +input[type=email], +input[type=url], +input[type=time], +input[type=date], +input[type=datetime-local], +input[type=tel], +input[type=number], +input[type=search], +textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + box-shadow: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + transition: all .3s; } + input[type=text]:disabled, input[type=text][readonly="readonly"], + input[type=password]:disabled, + input[type=password][readonly="readonly"], + input[type=email]:disabled, + input[type=email][readonly="readonly"], + input[type=url]:disabled, + input[type=url][readonly="readonly"], + input[type=time]:disabled, + input[type=time][readonly="readonly"], + input[type=date]:disabled, + input[type=date][readonly="readonly"], + input[type=datetime-local]:disabled, + input[type=datetime-local][readonly="readonly"], + input[type=tel]:disabled, + input[type=tel][readonly="readonly"], + input[type=number]:disabled, + input[type=number][readonly="readonly"], + input[type=search]:disabled, + input[type=search][readonly="readonly"], + textarea.materialize-textarea:disabled, + textarea.materialize-textarea[readonly="readonly"] { + color: rgba(0, 0, 0, 0.26); + border-bottom: 1px dotted rgba(0, 0, 0, 0.26); } + input[type=text]:disabled + label, input[type=text][readonly="readonly"] + label, + input[type=password]:disabled + label, + input[type=password][readonly="readonly"] + label, + input[type=email]:disabled + label, + input[type=email][readonly="readonly"] + label, + input[type=url]:disabled + label, + input[type=url][readonly="readonly"] + label, + input[type=time]:disabled + label, + input[type=time][readonly="readonly"] + label, + input[type=date]:disabled + label, + input[type=date][readonly="readonly"] + label, + input[type=datetime-local]:disabled + label, + input[type=datetime-local][readonly="readonly"] + label, + input[type=tel]:disabled + label, + input[type=tel][readonly="readonly"] + label, + input[type=number]:disabled + label, + input[type=number][readonly="readonly"] + label, + input[type=search]:disabled + label, + input[type=search][readonly="readonly"] + label, + textarea.materialize-textarea:disabled + label, + textarea.materialize-textarea[readonly="readonly"] + label { + color: rgba(0, 0, 0, 0.26); } + input[type=text]:focus:not([readonly]), + input[type=password]:focus:not([readonly]), + input[type=email]:focus:not([readonly]), + input[type=url]:focus:not([readonly]), + input[type=time]:focus:not([readonly]), + input[type=date]:focus:not([readonly]), + input[type=datetime-local]:focus:not([readonly]), + input[type=tel]:focus:not([readonly]), + input[type=number]:focus:not([readonly]), + input[type=search]:focus:not([readonly]), + textarea.materialize-textarea:focus:not([readonly]) { + border-bottom: 1px solid #26a69a; + box-shadow: 0 1px 0 0 #26a69a; } + input[type=text]:focus:not([readonly]) + label, + input[type=password]:focus:not([readonly]) + label, + input[type=email]:focus:not([readonly]) + label, + input[type=url]:focus:not([readonly]) + label, + input[type=time]:focus:not([readonly]) + label, + input[type=date]:focus:not([readonly]) + label, + input[type=datetime-local]:focus:not([readonly]) + label, + input[type=tel]:focus:not([readonly]) + label, + input[type=number]:focus:not([readonly]) + label, + input[type=search]:focus:not([readonly]) + label, + textarea.materialize-textarea:focus:not([readonly]) + label { + color: #26a69a; } + input[type=text].valid, input[type=text]:focus.valid, + input[type=password].valid, + input[type=password]:focus.valid, + input[type=email].valid, + input[type=email]:focus.valid, + input[type=url].valid, + input[type=url]:focus.valid, + input[type=time].valid, + input[type=time]:focus.valid, + input[type=date].valid, + input[type=date]:focus.valid, + input[type=datetime-local].valid, + input[type=datetime-local]:focus.valid, + input[type=tel].valid, + input[type=tel]:focus.valid, + input[type=number].valid, + input[type=number]:focus.valid, + input[type=search].valid, + input[type=search]:focus.valid, + textarea.materialize-textarea.valid, + textarea.materialize-textarea:focus.valid { + border-bottom: 1px solid #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; } + input[type=text].valid + label:after, input[type=text]:focus.valid + label:after, + input[type=password].valid + label:after, + input[type=password]:focus.valid + label:after, + input[type=email].valid + label:after, + input[type=email]:focus.valid + label:after, + input[type=url].valid + label:after, + input[type=url]:focus.valid + label:after, + input[type=time].valid + label:after, + input[type=time]:focus.valid + label:after, + input[type=date].valid + label:after, + input[type=date]:focus.valid + label:after, + input[type=datetime-local].valid + label:after, + input[type=datetime-local]:focus.valid + label:after, + input[type=tel].valid + label:after, + input[type=tel]:focus.valid + label:after, + input[type=number].valid + label:after, + input[type=number]:focus.valid + label:after, + input[type=search].valid + label:after, + input[type=search]:focus.valid + label:after, + textarea.materialize-textarea.valid + label:after, + textarea.materialize-textarea:focus.valid + label:after { + content: attr(data-success); + color: #4CAF50; + opacity: 1; } + input[type=text].invalid, input[type=text]:focus.invalid, + input[type=password].invalid, + input[type=password]:focus.invalid, + input[type=email].invalid, + input[type=email]:focus.invalid, + input[type=url].invalid, + input[type=url]:focus.invalid, + input[type=time].invalid, + input[type=time]:focus.invalid, + input[type=date].invalid, + input[type=date]:focus.invalid, + input[type=datetime-local].invalid, + input[type=datetime-local]:focus.invalid, + input[type=tel].invalid, + input[type=tel]:focus.invalid, + input[type=number].invalid, + input[type=number]:focus.invalid, + input[type=search].invalid, + input[type=search]:focus.invalid, + textarea.materialize-textarea.invalid, + textarea.materialize-textarea:focus.invalid { + border-bottom: 1px solid #F44336; + box-shadow: 0 1px 0 0 #F44336; } + input[type=text].invalid + label:after, input[type=text]:focus.invalid + label:after, + input[type=password].invalid + label:after, + input[type=password]:focus.invalid + label:after, + input[type=email].invalid + label:after, + input[type=email]:focus.invalid + label:after, + input[type=url].invalid + label:after, + input[type=url]:focus.invalid + label:after, + input[type=time].invalid + label:after, + input[type=time]:focus.invalid + label:after, + input[type=date].invalid + label:after, + input[type=date]:focus.invalid + label:after, + input[type=datetime-local].invalid + label:after, + input[type=datetime-local]:focus.invalid + label:after, + input[type=tel].invalid + label:after, + input[type=tel]:focus.invalid + label:after, + input[type=number].invalid + label:after, + input[type=number]:focus.invalid + label:after, + input[type=search].invalid + label:after, + input[type=search]:focus.invalid + label:after, + textarea.materialize-textarea.invalid + label:after, + textarea.materialize-textarea:focus.invalid + label:after { + content: attr(data-error); + color: #F44336; + opacity: 1; } + input[type=text] + label:after, + input[type=password] + label:after, + input[type=email] + label:after, + input[type=url] + label:after, + input[type=time] + label:after, + input[type=date] + label:after, + input[type=datetime-local] + label:after, + input[type=tel] + label:after, + input[type=number] + label:after, + input[type=search] + label:after, + textarea.materialize-textarea + label:after { + display: block; + content: ""; + position: absolute; + top: 65px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; } + +.input-field { + position: relative; + margin-top: 1rem; } + .input-field label { + color: #9e9e9e; + position: absolute; + top: 0.8rem; + left: 0.75rem; + font-size: 1rem; + cursor: text; + -webkit-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -ms-transition: 0.2s ease-out; + transition: 0.2s ease-out; } + .input-field label.active { + font-size: 0.8rem; + -webkit-transform: translateY(-140%); + -moz-transform: translateY(-140%); + -ms-transform: translateY(-140%); + -o-transform: translateY(-140%); + transform: translateY(-140%); } + .input-field .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + -webkit-transition: color 0.2s; + -moz-transition: color 0.2s; + -o-transition: color 0.2s; + -ms-transition: color 0.2s; + transition: color 0.2s; } + .input-field .prefix.active { + color: #26a69a; } + .input-field .prefix ~ input, + .input-field .prefix ~ textarea { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); } + .input-field .prefix ~ textarea { + padding-top: .8rem; } + .input-field .prefix ~ label { + margin-left: 3rem; } + @media only screen and (max-width: 992px) { + .input-field .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); } } + @media only screen and (max-width: 600px) { + .input-field .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); } } + +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); } + .input-field input[type=search]:focus { + background-color: #fff; + border: 0; + box-shadow: none; + color: #444; } + .input-field input[type=search]:focus + label i, .input-field input[type=search]:focus ~ .mdi-navigation-close { + color: #444; } + .input-field input[type=search] + label { + left: 1rem; } + .input-field input[type=search] ~ .mdi-navigation-close { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; } + +textarea { + width: 100%; + height: 3rem; + background-color: transparent; } + textarea.materialize-textarea { + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: 1.6rem 0; + /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; } + +.hiddendiv { + display: none; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; + /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; + /* prevents text jump on Enter keypress */ } + +/*************** + Radio Buttons +***************/ +/* Remove default Radio Buttons */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="radio"]:not(:checked) + label, +[type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-transition: 0.28s ease; + -moz-transition: 0.28s ease; + -o-transition: 0.28s ease; + -ms-transition: 0.28s ease; + transition: 0.28s ease; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ } + +[type="radio"] + label:before, +[type="radio"] + label:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + -webkit-transition: 0.28s ease; + -moz-transition: 0.28s ease; + -o-transition: 0.28s ease; + -ms-transition: 0.28s ease; + transition: 0.28s ease; } + +/* Unchecked styles */ +[type="radio"]:not(:checked) + label:before { + border-radius: 50%; + border: 2px solid #5a5a5a; } + +[type="radio"]:not(:checked) + label:after { + border-radius: 50%; + border: 2px solid #5a5a5a; + z-index: -1; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); } + +/* Checked styles */ +[type="radio"]:checked + label:before { + border-radius: 50%; + border: 2px solid transparent; } + +[type="radio"]:checked + label:after { + border-radius: 50%; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; + -webkit-transform: scale(1.02); + -moz-transform: scale(1.02); + -ms-transform: scale(1.02); + -o-transform: scale(1.02); + transform: scale(1.02); } + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:before { + border-radius: 50%; + border: 2px solid #26a69a; } + +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; + -webkit-transform: scale(0.5); + -moz-transform: scale(0.5); + -ms-transform: scale(0.5); + -o-transform: scale(0.5); + transform: scale(0.5); } + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid rgba(0, 0, 0, 0.26); } + +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, +[type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled + label { + color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:not(:checked) + label:before { + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:checked + label:after { + background-color: rgba(0, 0, 0, 0.26); + border-color: #BDBDBD; } + +/*************** + Checkboxes +***************/ +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; } + +form p:last-child { + margin-bottom: 0; } + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="checkbox"] { + /* checkbox aspect */ } + [type="checkbox"] + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ } + [type="checkbox"] + label:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 2px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + -ms-transition: 0.2s; + transition: 0.2s; } + [type="checkbox"]:not(:checked):disabled + label:before { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +[type="checkbox"]:checked + label:before { + top: -4px; + left: -3px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #26a69a; + border-bottom: 2px solid #26a69a; + -webkit-transform: rotate(40deg); + -moz-transform: rotate(40deg); + -ms-transform: rotate(40deg); + -o-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:checked:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + border-bottom: 2px solid rgba(0, 0, 0, 0.26); } + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate + label:before { + left: -10px; + top: -11px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid #26a69a; + border-bottom: none; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:indeterminate:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + background-color: transparent; } + +[type="checkbox"].filled-in + label:after { + border-radius: 2px; } +[type="checkbox"].filled-in + label:before, +[type="checkbox"].filled-in + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; } +[type="checkbox"].filled-in:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; } +[type="checkbox"].filled-in:checked + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:checked + label:after { + top: 0px; + width: 20px; + height: 20px; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:before { + background-color: transparent; + border: 2px solid transparent; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: #BDBDBD; } +[type="checkbox"].filled-in:disabled:checked + label:before { + background-color: transparent; } +[type="checkbox"].filled-in:disabled:checked + label:after { + background-color: #BDBDBD; + border-color: #BDBDBD; } + +/*************** + Switch +***************/ +.switch, +.switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; } + +.switch label { + cursor: pointer; } + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; } + +.switch label input[type=checkbox]:checked + .lever { + background-color: #84c7c1; } + +.switch label input[type=checkbox]:checked + .lever:after { + background-color: #26a69a; } + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: #818181; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; } + +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: #F1F1F1; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; } + +input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); } + +input[type=checkbox]:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); } + +.switch label input[type=checkbox]:checked + .lever:after { + left: 24px; } + +.switch input[type=checkbox][disabled] + .lever { + cursor: default; } + +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: #BDBDBD; } + +/*************** + Select Field +***************/ +.select-label { + position: absolute; } + +.select-wrapper { + position: relative; } + .select-wrapper input.select-dropdown { + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; } + .select-wrapper span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; } + .select-wrapper span.caret.disabled { + color: rgba(0, 0, 0, 0.26); } + .select-wrapper + label { + position: absolute; + top: -14px; + font-size: 0.8rem; } + +select { + display: none; } + +select.browser-default { + display: block; } + +select:disabled { + color: rgba(0, 0, 0, 0.3); } + +.select-wrapper input.select-dropdown:disabled { + color: rgba(0, 0, 0, 0.3); + cursor: default; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -ms-user-select: none; + /* IE10+ */ + border-bottom: 1px solid rgba(0, 0, 0, 0.3); } + +.select-wrapper i { + color: rgba(0, 0, 0, 0.3); } + +.select-dropdown li.disabled { + color: rgba(0, 0, 0, 0.3); + background-color: transparent; } + +/********************* + File Input +**********************/ +.file-field { + position: relative; } + .file-field .file-path-wrapper { + overflow: hidden; + padding-left: 10px; } + .file-field input.file-path { + width: 100%; } + .file-field .btn, .file-field .btn-large { + float: left; + height: 3rem; + line-height: 3rem; } + .file-field span { + cursor: pointer; } + .file-field input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); } + +/*************** + Range +***************/ +.range-field { + position: relative; } + +input[type=range], input[type=range] + .thumb { + cursor: pointer; } + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0px; + padding: 0; } + +input[type=range] + .thumb { + position: absolute; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: #26a69a; + top: 10px; + margin-left: -6px; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + input[type=range] + .thumb .value { + display: block; + width: 30px; + text-align: center; + color: #26a69a; + font-size: 0; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + input[type=range] + .thumb.active { + border-radius: 50% 50% 50% 0; } + input[type=range] + .thumb.active .value { + color: #fff; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; } + +input[type=range]:focus { + outline: none; } + +input[type=range] { + -webkit-appearance: none; } + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; } + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background-color: #26a69a; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + -webkit-transition: 0.3s; + -moz-transition: 0.3s; + -o-transition: 0.3s; + -ms-transition: 0.3s; + transition: 0.3s; } + +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ccc; } + +input[type=range] { + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + /*required for proper track sizing in FF*/ } + +input[type=range]::-moz-range-track { + height: 3px; + background: #ddd; + border: none; } + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; + margin-top: -5px; } + +/*hide the outline behind the border*/ +input[type=range]:-moz-focusring { + outline: 1px solid white; + outline-offset: -1px; } + +input[type=range]:focus::-moz-range-track { + background: #ccc; } + +input[type=range]::-ms-track { + height: 3px; + /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ + background: transparent; + /*leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + /*remove default tick marks*/ + color: transparent; } + +input[type=range]::-ms-fill-lower { + background: #777; } + +input[type=range]::-ms-fill-upper { + background: #ddd; } + +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; } + +input[type=range]:focus::-ms-fill-lower { + background: #888; } + +input[type=range]:focus::-ms-fill-upper { + background: #ccc; } + +/*************************** + Text Inputs + Textarea +****************************/ +select { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; } + +/*************** + Nav List +***************/ +.table-of-contents.fixed { + position: fixed; } +.table-of-contents li { + padding: 2px 0; } +.table-of-contents a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 20px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; } + .table-of-contents a:hover { + color: #a8a8a8; + padding-left: 19px; + border-left: 1px solid #ea4a4f; } + .table-of-contents a.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid #ea4a4f; } + +.side-nav { + position: fixed; + width: 240px; + left: -105%; + top: 0; + margin: 0; + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); + padding-bottom: 60px; + background-color: #fff; + z-index: 999; + overflow-y: auto; + will-change: left; } + .side-nav.right-aligned { + will-change: right; + right: -105%; + left: auto; } + .side-nav .collapsible { + margin: 0; } + .side-nav li { + float: none; + padding: 0 15px; } + .side-nav li:hover, .side-nav li.active { + background-color: #ddd; } + .side-nav a { + color: #444; + display: block; + font-size: 1rem; + height: 64px; + line-height: 64px; + padding: 0 15px; } + +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; } + +.side-nav.fixed a { + display: block; + padding: 0 15px; + color: #444; } + +.side-nav.fixed { + left: 0; + position: fixed; } + .side-nav.fixed.right-aligned { + right: 0; + left: auto; } + +@media only screen and (max-width: 992px) { + .side-nav.fixed { + left: -105%; } + .side-nav.fixed.right-aligned { + right: -105%; + left: auto; } } +.side-nav .collapsible-body li.active, +.side-nav.fixed .collapsible-body li.active { + background-color: #ee6e73; } + .side-nav .collapsible-body li.active a, + .side-nav.fixed .collapsible-body li.active a { + color: #fff; } + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 120vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 997; + will-change: opacity; } + +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ +.preloader-wrapper { + display: inline-block; + position: relative; + width: 48px; + height: 48px; } + .preloader-wrapper.small { + width: 36px; + height: 36px; } + .preloader-wrapper.big { + width: 64px; + height: 64px; } + .preloader-wrapper.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; } + +@-webkit-keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); } } +@keyframes container-rotate { + to { + transform: rotate(360deg); } } +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; } + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; } + +.spinner-red, +.spinner-red-only { + border-color: #db4437; } + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; } + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; } + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); } + /* 4 * ARCSIZE */ } +@keyframes fill-unfill-rotate { + 12.5% { + transform: rotate(135deg); } + /* 0.5 * ARCSIZE */ + 25% { + transform: rotate(270deg); } + /* 1 * ARCSIZE */ + 37.5% { + transform: rotate(405deg); } + /* 1.5 * ARCSIZE */ + 50% { + transform: rotate(540deg); } + /* 2 * ARCSIZE */ + 62.5% { + transform: rotate(675deg); } + /* 2.5 * ARCSIZE */ + 75% { + transform: rotate(810deg); } + /* 3 * ARCSIZE */ + 87.5% { + transform: rotate(945deg); } + /* 3.5 * ARCSIZE */ + to { + transform: rotate(1080deg); } + /* 4 * ARCSIZE */ } +@-webkit-keyframes blue-fade-in-out { + from { + opacity: 1; } + 25% { + opacity: 1; } + 26% { + opacity: 0; } + 89% { + opacity: 0; } + 90% { + opacity: 1; } + 100% { + opacity: 1; } } +@keyframes blue-fade-in-out { + from { + opacity: 1; } + 25% { + opacity: 1; } + 26% { + opacity: 0; } + 89% { + opacity: 0; } + 90% { + opacity: 1; } + 100% { + opacity: 1; } } +@-webkit-keyframes red-fade-in-out { + from { + opacity: 0; } + 15% { + opacity: 0; } + 25% { + opacity: 1; } + 50% { + opacity: 1; } + 51% { + opacity: 0; } } +@keyframes red-fade-in-out { + from { + opacity: 0; } + 15% { + opacity: 0; } + 25% { + opacity: 1; } + 50% { + opacity: 1; } + 51% { + opacity: 0; } } +@-webkit-keyframes yellow-fade-in-out { + from { + opacity: 0; } + 40% { + opacity: 0; } + 50% { + opacity: 1; } + 75% { + opacity: 1; } + 76% { + opacity: 0; } } +@keyframes yellow-fade-in-out { + from { + opacity: 0; } + 40% { + opacity: 0; } + 50% { + opacity: 1; } + 75% { + opacity: 1; } + 76% { + opacity: 0; } } +@-webkit-keyframes green-fade-in-out { + from { + opacity: 0; } + 65% { + opacity: 0; } + 75% { + opacity: 1; } + 90% { + opacity: 1; } + 100% { + opacity: 0; } } +@keyframes green-fade-in-out { + from { + opacity: 0; } + 65% { + opacity: 0; } + 75% { + opacity: 1; } + 90% { + opacity: 1; } + 100% { + opacity: 0; } } +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; } + +.gap-patch .circle { + width: 1000%; + left: -450%; } + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; } + .circle-clipper .circle { + width: 200%; + height: 100%; + border-width: 3px; + /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; } + .circle-clipper.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); } + .circle-clipper.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); } + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +@-webkit-keyframes left-spin { + from { + -webkit-transform: rotate(130deg); } + 50% { + -webkit-transform: rotate(-5deg); } + to { + -webkit-transform: rotate(130deg); } } +@keyframes left-spin { + from { + transform: rotate(130deg); } + 50% { + transform: rotate(-5deg); } + to { + transform: rotate(130deg); } } +@-webkit-keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); } + 50% { + -webkit-transform: rotate(5deg); } + to { + -webkit-transform: rotate(-130deg); } } +@keyframes right-spin { + from { + transform: rotate(-130deg); } + 50% { + transform: rotate(5deg); } + to { + transform: rotate(-130deg); } } +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); } + +@-webkit-keyframes fade-out { + from { + opacity: 1; } + to { + opacity: 0; } } +@keyframes fade-out { + from { + opacity: 1; } + to { + opacity: 0; } } +.slider { + position: relative; + height: 400px; + width: 100%; } + .slider.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; } + .slider.fullscreen ul.slides { + height: 100%; } + .slider.fullscreen ul.indicators { + z-index: 2; + bottom: 30px; } + .slider .slides { + background-color: #9e9e9e; + margin: 0; + height: 400px; } + .slider .slides li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; } + .slider .slides li img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; } + .slider .slides li .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; } + .slider .slides li .caption p { + color: #e0e0e0; } + .slider .slides li.active { + z-index: 2; } + .slider .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; } + .slider .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: #e0e0e0; + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + -o-transition: background-color 0.3s; + -ms-transition: background-color 0.3s; + transition: background-color 0.3s; + border-radius: 50%; } + .slider .indicators .indicator-item.active { + background-color: #4CAF50; } + +/* ========================================================================== + $BASE-PICKER + ========================================================================== */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000000; + position: absolute; + z-index: 10000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +/** + * The picker input element. + */ +.picker__input { + cursor: default; } + +/** + * When the picker is opened, the input element is "activated". + */ +.picker__input.picker__input--active { + border-color: #0089ec; } + +/** + * The holder is the only "scrollable" top-level container element. + */ +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; } + +/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +/** + * Make the holder and frame fullscreen. + */ +.picker__holder, +.picker__frame { + bottom: 0; + left: 0; + right: 0; + top: 100%; } + +/** + * The holder should overlay the entire screen. + */ +.picker__holder { + position: fixed; + -webkit-transition: background 0.15s ease-out, top 0s 0.15s; + -moz-transition: background 0.15s ease-out, top 0s 0.15s; + transition: background 0.15s ease-out, top 0s 0.15s; + -webkit-backface-visibility: hidden; } + +/** + * The frame that bounds the box contents of the picker. + */ +.picker__frame { + position: absolute; + margin: 0 auto; + min-width: 256px; + width: 300px; + max-height: 350px; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transition: all 0.15s ease-out; + -moz-transition: all 0.15s ease-out; + transition: all 0.15s ease-out; } + +@media (min-height: 28.875em) { + .picker__frame { + overflow: visible; + top: auto; + bottom: -100%; + max-height: 80%; } } +@media (min-height: 40.125em) { + .picker__frame { + margin-bottom: 7.5%; } } +/** + * The wrapper sets the stage to vertically align the box contents. + */ +.picker__wrap { + display: table; + width: 100%; + height: 100%; } + +@media (min-height: 28.875em) { + .picker__wrap { + display: block; } } +/** + * The box contains all the picker contents. + */ +.picker__box { + background: #ffffff; + display: table-cell; + vertical-align: middle; } + +@media (min-height: 28.875em) { + .picker__box { + display: block; + border: 1px solid #777777; + border-top-color: #898989; + border-bottom-width: 0; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); } } +/** + * When the picker opens... + */ +.picker--opened .picker__holder { + top: 0; + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; + zoom: 1; + background: rgba(0, 0, 0, 0.32); + -webkit-transition: background 0.15s ease-out; + -moz-transition: background 0.15s ease-out; + transition: background 0.15s ease-out; } + +.picker--opened .picker__frame { + top: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; } + +@media (min-height: 35.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: 20% auto; } } +/** + * For `large` screens, transform into an inline picker. + */ +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__input.picker__input--active { + border-color: #E3F2FD; } + +.picker__frame { + margin: 0 auto; + max-width: 325px; } + +@media (min-height: 38.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; } } +/* ========================================================================== + $BASE-DATE-PICKER + ========================================================================== */ +/** + * The picker box. + */ +.picker__box { + padding: 0 1em; } + +/** + * The header containing the month and year stuff. + */ +.picker__header { + text-align: center; + position: relative; + margin-top: .75em; } + +/** + * The month and year labels. + */ +.picker__month, +.picker__year { + display: inline-block; + margin-left: .25em; + margin-right: .25em; } + +/** + * The month and year selectors. + */ +.picker__select--month, +.picker__select--year { + height: 2em; + padding: 0; + margin-left: .25em; + margin-right: .25em; } + +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; } + +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 25%; } + +.picker__select--month:focus, +.picker__select--year:focus { + border-color: rgba(0, 0, 0, 0.05); } + +/** + * The month navigation buttons. + */ +.picker__nav--prev, +.picker__nav--next { + position: absolute; + padding: .5em 1.25em; + width: 1em; + height: 1em; + box-sizing: content-box; + top: -0.25em; } + +.picker__nav--prev { + left: -1em; + padding-right: 1.25em; } + +.picker__nav--next { + right: -1em; + padding-left: 1.25em; } + +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: none; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; } + +/** + * The calendar table of dates + */ +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: 1rem; + width: 100%; + margin-top: .75em; + margin-bottom: .5em; } + +.picker__table th, .picker__table td { + text-align: center; } + +.picker__table td { + margin: 0; + padding: 0; } + +/** + * The weekday labels + */ +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999999; + font-weight: 500; + /* Increase the spacing a tad */ } + +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: .5em; } } +/** + * The days on the calendar + */ +.picker__day--today { + position: relative; + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; } + +.picker__day--disabled:before { + border-top-color: #aaaaaa; } + +.picker__day--infocus:hover { + cursor: pointer; + color: #000; + font-weight: 500; } + +.picker__day--outfocus { + display: none; + padding: .75rem 0; + color: #fff; } + +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; + font-weight: 500; } + +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + cursor: pointer; } + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.75); + -moz-transform: scale(0.75); + -ms-transform: scale(0.75); + -o-transform: scale(0.75); + transform: scale(0.75); + background: #0089ec; + color: #ffffff; } + +.picker__day--disabled, +.picker__day--disabled:hover, +.picker--focused .picker__day--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; } + +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; } + +/** + * The footer containing the "today", "clear", and "close" buttons. + */ +.picker__footer { + text-align: center; + display: flex; + align-items: center; + justify-content: space-between; } + +.picker__button--today, +.picker__button--clear, +.picker__button--close { + border: 1px solid #ffffff; + background: #ffffff; + font-size: .8em; + padding: .66em 0; + font-weight: bold; + width: 33%; + display: inline-block; + vertical-align: bottom; } + +.picker__button--today:hover, +.picker__button--clear:hover, +.picker__button--close:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; } + +.picker__button--today:focus, +.picker__button--clear:focus, +.picker__button--close:focus { + background: #b1dcfb; + border-color: rgba(0, 0, 0, 0.05); + outline: none; } + +.picker__button--today:before, +.picker__button--clear:before, +.picker__button--close:before { + position: relative; + display: inline-block; + height: 0; } + +.picker__button--today:before, +.picker__button--clear:before { + content: " "; + margin-right: .45em; } + +.picker__button--today:before { + top: -0.05em; + width: 0; + border-top: 0.66em solid #0059bc; + border-left: .66em solid transparent; } + +.picker__button--clear:before { + top: -0.25em; + width: .66em; + border-top: 3px solid #ee2200; } + +.picker__button--close:before { + content: "\D7"; + top: -0.1em; + vertical-align: top; + font-size: 1.1em; + margin-right: .35em; + color: #777777; } + +.picker__button--today[disabled], +.picker__button--today[disabled]:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; } + +.picker__button--today[disabled]:before { + border-top-color: #aaaaaa; } + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__box { + border-radius: 2px; + overflow: hidden; } + +.picker__date-display { + text-align: center; + background-color: #26a69a; + color: #fff; + padding-bottom: 15px; + font-weight: 300; } + +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: #a1ded8; } + +.picker__weekday-display { + background-color: #1f897f; + padding: 10px; + font-weight: 200; + letter-spacing: .5; + font-size: 1rem; + margin-bottom: 15px; } + +.picker__month-display { + text-transform: uppercase; + font-size: 2rem; } + +.picker__day-display { + font-size: 4.5rem; + font-weight: 400; } + +.picker__year-display { + font-size: 1.8rem; + color: rgba(255, 255, 255, 0.4); } + +.picker__box { + padding: 0; } + +.picker__calendar-container { + padding: 0 1rem; } + .picker__calendar-container thead { + border: none; } + +.picker__table { + margin-top: 0; + margin-bottom: .5em; } + +.picker__day--infocus { + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; } + +.picker__day.picker__day--today { + color: #26a69a; } + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; } + +.picker__weekday { + font-size: .9rem; } + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.9); + -moz-transform: scale(0.9); + -ms-transform: scale(0.9); + -o-transform: scale(0.9); + transform: scale(0.9); + background-color: #26a69a; + color: #ffffff; } + .picker__day--selected.picker__day--outfocus, + .picker__day--selected:hover.picker__day--outfocus, + .picker--focused .picker__day--selected.picker__day--outfocus { + background-color: #a1ded8; } + +.picker__footer { + text-align: right; + padding: 5px 10px; } + +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 1rem; + color: #26a69a; } + +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: 0.75em solid #676767; + width: 0; + height: 0; + display: block; + margin: 0 auto; } + +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #676767; } + +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: #a1ded8; } + +/* ========================================================================== + $BASE-TIME-PICKER + ========================================================================== */ +/** + * The list of times. + */ +.picker__list { + list-style: none; + padding: 0.75em 0 4.2em; + margin: 0; } + +/** + * The times on the clock. + */ +.picker__list-item { + border-bottom: 1px solid #dddddd; + border-top: 1px solid #dddddd; + margin-bottom: -1px; + position: relative; + background: #ffffff; + padding: .75em 1.25em; } + +@media (min-height: 46.75em) { + .picker__list-item { + padding: .5em 1em; } } +/* Hovered time */ +.picker__list-item:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; } + +/* Highlighted and hovered/focused time */ +.picker__list-item--highlighted { + border-color: #0089ec; + z-index: 10; } + +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + cursor: pointer; + color: #000000; + background: #b1dcfb; } + +/* Selected and hovered/focused time */ +.picker__list-item--selected, +.picker__list-item--selected:hover, +.picker--focused .picker__list-item--selected { + background: #0089ec; + color: #ffffff; + z-index: 10; } + +/* Disabled time */ +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; + border-color: #dddddd; + z-index: auto; } + +/** + * The clear button + */ +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: none; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666; } + +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000000; + background: #b1dcfb; + background: #ee2200; + border-color: #ee2200; + cursor: pointer; + color: #ffffff; + outline: none; } + +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: bold; } + +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; } + +/* ========================================================================== + $DEFAULT-TIME-PICKER + ========================================================================== */ +/** + * The frame the bounds the time picker. + */ +.picker--time .picker__frame { + min-width: 256px; + max-width: 320px; } + +/** + * The picker box. + */ +.picker--time .picker__box { + font-size: 1em; + background: #f2f2f2; + padding: 0; } + +@media (min-height: 40.125em) { + .picker--time .picker__box { + margin-bottom: 5em; } } + +/*# sourceMappingURL=materialize.css.map */ diff --git a/system/admin/static/editor/css/materialize.css.map b/system/admin/static/editor/css/materialize.css.map new file mode 100644 index 0000000..ec81214 --- /dev/null +++ b/system/admin/static/editor/css/materialize.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../sass/components/_color.scss","../sass/components/_normalize.scss","../sass/components/_global.scss","../sass/components/_variables.scss","../sass/components/_prefixer.scss","../sass/components/_icons-material-design.scss","../sass/components/_grid.scss","../sass/components/_navbar.scss","../sass/components/_roboto.scss","../sass/components/_typography.scss","../sass/components/_cards.scss","../sass/components/_toast.scss","../sass/components/_tabs.scss","../sass/components/_tooltip.scss","../sass/components/_buttons.scss","../sass/components/_dropdown.scss","../sass/components/_waves.scss","../sass/components/_modal.scss","../sass/components/_collapsible.scss","../sass/components/_materialbox.scss","../sass/components/_form.scss","../sass/components/_table_of_contents.scss","../sass/components/_sideNav.scss","../sass/components/_preloader.scss","../sass/components/_slider.scss","../sass/components/date_picker/_default.scss","../sass/components/date_picker/_default.date.scss","../sass/components/date_picker/_default.time.scss"], +"names": [], +"file": "materialize.css" +} diff --git a/system/admin/static/editor/font/roboto/Roboto-Bold.ttf b/system/admin/static/editor/font/roboto/Roboto-Bold.ttf Binary files differnew file mode 100644 index 0000000..68822ca --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Bold.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Bold.woff b/system/admin/static/editor/font/roboto/Roboto-Bold.woff Binary files differnew file mode 100644 index 0000000..1f75afd --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Bold.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Bold.woff2 b/system/admin/static/editor/font/roboto/Roboto-Bold.woff2 Binary files differnew file mode 100644 index 0000000..350d1c3 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Bold.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Light.ttf b/system/admin/static/editor/font/roboto/Roboto-Light.ttf Binary files differnew file mode 100644 index 0000000..aa45340 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Light.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Light.woff b/system/admin/static/editor/font/roboto/Roboto-Light.woff Binary files differnew file mode 100644 index 0000000..3480c6c --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Light.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Light.woff2 b/system/admin/static/editor/font/roboto/Roboto-Light.woff2 Binary files differnew file mode 100644 index 0000000..9a4d98c --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Light.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Medium.ttf b/system/admin/static/editor/font/roboto/Roboto-Medium.ttf Binary files differnew file mode 100644 index 0000000..a3c1a1f --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Medium.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Medium.woff b/system/admin/static/editor/font/roboto/Roboto-Medium.woff Binary files differnew file mode 100644 index 0000000..1186773 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Medium.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Medium.woff2 b/system/admin/static/editor/font/roboto/Roboto-Medium.woff2 Binary files differnew file mode 100644 index 0000000..d10a592 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Medium.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Regular.ttf b/system/admin/static/editor/font/roboto/Roboto-Regular.ttf Binary files differnew file mode 100644 index 0000000..0e58508 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Regular.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Regular.woff b/system/admin/static/editor/font/roboto/Roboto-Regular.woff Binary files differnew file mode 100644 index 0000000..f823258 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Regular.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Regular.woff2 b/system/admin/static/editor/font/roboto/Roboto-Regular.woff2 Binary files differnew file mode 100644 index 0000000..b7082ef --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Regular.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Thin.ttf b/system/admin/static/editor/font/roboto/Roboto-Thin.ttf Binary files differnew file mode 100644 index 0000000..8779333 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Thin.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Thin.woff b/system/admin/static/editor/font/roboto/Roboto-Thin.woff Binary files differnew file mode 100644 index 0000000..2a98c1e --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Thin.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Thin.woff2 b/system/admin/static/editor/font/roboto/Roboto-Thin.woff2 Binary files differnew file mode 100644 index 0000000..a38025a --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Thin.woff2 diff --git a/system/admin/static/editor/js/ckMaterializeOverrides.js b/system/admin/static/editor/js/ckMaterializeOverrides.js new file mode 100644 index 0000000..fd1b2db --- /dev/null +++ b/system/admin/static/editor/js/ckMaterializeOverrides.js @@ -0,0 +1,172 @@ +(function ($) { + $.fn.ckTooltip = function (options) { + var timeout = null, + counter = null, + started = false, + counterInterval = null, + margin = 5; + + // Defaults + var defaults = { + delay: 350 + }; + options = $.extend(defaults, options); + + return this.each(function(){ + var origin = $(this); + + // Create Text span + var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip')); + + // Create tooltip + var newTooltip = $('<div></div>'); + newTooltip.addClass('material-tooltip').append(tooltip_text); + newTooltip.appendTo($('body')); + + var backdrop = $('<div></div>').addClass('backdrop'); + backdrop.appendTo(newTooltip); + backdrop.css({ top: 0, left:0 }); + + //Destroy previously binded events + //$(this).off('mouseenter mouseleave'); + + $.event.special.destroyed = { + remove: function(o) { + if (o.handler) { + o.handler(); + } + } + }; + $(this).bind('destroyed', function() { + newTooltip.remove(); + }); + + // Mouse In + $(this).on({ + mouseenter: function(e) { + var tooltip_delay = origin.data("delay"); + + tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay; + counter = 0; + counterInterval = setInterval(function(){ + counter += 10; + + if (counter >= tooltip_delay && started === false) { + started = true; + newTooltip.css({ display: 'block', left: '0px', top: '0px' }); + + // Set Tooltip text + newTooltip.children('span').text(origin.attr('data-tooltip')); + + // Tooltip positioning + var originWidth = origin.outerWidth(); + var originHeight = origin.outerHeight(); + var tooltipPosition = origin.attr('data-position'); + var tooltipHeight = newTooltip.outerHeight(); + var tooltipWidth = newTooltip.outerWidth(); + var tooltipVerticalMovement = '0px'; + var tooltipHorizontalMovement = '0px'; + var scale_factor = 8; + + if (tooltipPosition === "top") { + // Top Position + newTooltip.css({ + top: origin.offset().top - tooltipHeight - margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '-10px'; + backdrop.css({ + borderRadius: '14px 14px 0 0', + transformOrigin: '50% 90%', + marginTop: tooltipHeight, + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + + }); + } + // Left Position + else if (tooltipPosition === "left") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left - tooltipWidth - margin + }); + tooltipHorizontalMovement = '-10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '14px 0 0 14px', + transformOrigin: '95% 50%', + marginTop: tooltipHeight/2, + marginLeft: tooltipWidth + }); + } + // Right Position + else if (tooltipPosition === "right") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left + originWidth + margin + }); + tooltipHorizontalMovement = '+10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '0 14px 14px 0', + transformOrigin: '5% 50%', + marginTop: tooltipHeight/2, + marginLeft: '0px' + }); + } + else { + // Bottom Position + newTooltip.css({ + top: origin.offset().top + origin.outerHeight() + margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '+10px'; + backdrop.css({ + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + }); + } + + // Calculate Scale to fill + scale_factor = tooltipWidth / 8; + if (scale_factor < 8) { + scale_factor = 8; + } + if (tooltipPosition === "right" || tooltipPosition === "left") { + scale_factor = tooltipWidth / 10; + if (scale_factor < 6) + scale_factor = 6; + } + + newTooltip.velocity({ opacity: 1, marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 150, queue: false }); + backdrop.css({ display: 'block' }) + .velocity({opacity:1},{duration: 50, delay: 0, queue: false}) + .velocity({scale: scale_factor}, {duration: 150, delay: 0, queue: false, easing: 'easeInOutQuad'}); + } + }, 10); // End Interval + + // Mouse Out + }, + mouseleave: function(){ + // Reset State + clearInterval(counterInterval); + counter = 0; + + // Animate back + newTooltip.velocity({ + opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 150, queue: false, delay: 50 } + ); + backdrop.velocity({opacity: 0, scale: 1}, { + duration:150, + delay: 50, queue: false, + complete: function(){ + backdrop.css('display', 'none'); + newTooltip.css('display', 'none'); + started = false;} + }); + } + }); + }); + }; + +}(jQuery)); diff --git a/system/admin/static/editor/js/materialNote.js b/system/admin/static/editor/js/materialNote.js new file mode 100644 index 0000000..02e1bd2 --- /dev/null +++ b/system/admin/static/editor/js/materialNote.js @@ -0,0 +1,7469 @@ +/** + * MaterialNote v1.2.1 + * Super simple wysiwyg editor on Materialize + * a fork of materialnote.js => http://materialnote.org/ + * + * original summernote credits: + * summernote.js + * Copyright 2013-2015 Alan Hong. and other contributors + * summernote (and so materialNote) may be freely distributed under the MIT license./ + * (https://raw.githubusercontent.com/Cerealkillerway/materialNote/master/license.txt) + * + * edited by CK (http://www.web-forge.info) + * thanks to Tox for code review (http://emanuele.itoscano.com/) + */ +(function(factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals: jQuery + factory(window.jQuery); + } +}(function($) { + + if (!Array.prototype.reduce) { + /** + * Array.prototype.reduce polyfill + * @param {Function} callback + * @param {Value} [initialValue] + * @return {Value} + * @see http://goo.gl/WNriQD + */ + Array.prototype.reduce = function(callback) { + var t = Object(this), len = t.length >>> 0, k = 0, value; + + if (arguments.length === 2) { + value = arguments[1]; + } else { + while (k < len && !(k in t)) { + k++; + } + if (k >= len) { + throw new TypeError('Reduce of empty array with no initial value'); + } + value = t[k++]; + } + for (; k < len; k++) { + if (k in t) { + value = callback(value, t[k], k, t); + } + } + return value; + }; + } + + if ('function' !== typeof Array.prototype.filter) { + /** + * Array.prototype.filter polyfill + * @param {Function} func + * @return {Array} + * @see http://goo.gl/T1KFnq + */ + Array.prototype.filter = function(func) { + var t = Object(this), len = t.length >>> 0; + var res = []; + var thisArg = arguments.length >= 2 ? arguments[1] : void 0; + + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; + + if (func.call(thisArg, val, i, t)) { + res.push(val); + } + } + } + return res; + }; + } + +var isSupportAmd = typeof define === 'function' && define.amd; + +/** +* returns whether font is installed or not. +* @param {String} fontName +* @return {Boolean} +*/ +var isFontInstalled = function(fontName) { + if (fontName === "Roboto") return true; + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var $tester = $('<div>').css({ + position: 'absolute', + left: '-9999px', + top: '-9999px', + fontSize: '200px' + }).text('mmmmmmmmmwwwwwww').appendTo(document.body); + + var originalWidth = $tester.css('fontFamily', testFontName).width(); + var width = $tester.css('fontFamily', fontName + ',' + testFontName).width(); + + $tester.remove(); + + return originalWidth !== width; +}; + + +var userAgent = navigator.userAgent; + +/** +* @class core.agent +* Object which check platform and agent +* @singleton +* @alternateClassName agent +*/ +var agent = { + /** @property {Boolean} [isMac=false] true if this agent is Mac */ + isMac: navigator.appVersion.indexOf('Mac') > -1, + /** @property {Boolean} [isMSIE=false] true if this agent is a Internet Explorer */ + isMSIE: /MSIE|Trident/i.test(userAgent), + /** @property {Boolean} [isFF=false] true if this agent is a Firefox */ + isFF: /firefox/i.test(userAgent), + isWebkit: /webkit/i.test(userAgent), + /** @property {Boolean} [isSafari=false] true if this agent is a Safari */ + isSafari: /safari/i.test(userAgent), + /** @property {String} jqueryVersion current jQuery version string */ + jqueryVersion: parseFloat($.fn.jquery), + isSupportAmd: isSupportAmd, + hasCodeMirror: isSupportAmd ? require.specified('CodeMirror') : !!window.CodeMirror, + isFontInstalled: isFontInstalled, + isW3CRangeSupport: !!document.createRange +}; + +/** +* @class core.func +* func utils (for high-order func's arg) +* @singleton +* @alternateClassName func +*/ +var func = (function() { + var eq = function(itemA) { + return function(itemB) { + return itemA === itemB; + }; + }; + + var eq2 = function(itemA, itemB) { + return itemA === itemB; + }; + + var peq2 = function(propName) { + return function(itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; + }; + + var ok = function() { + return true; + }; + + var fail = function() { + return false; + }; + + var not = function(f) { + return function() { + return !f.apply(f, arguments); + }; + }; + + var and = function(fA, fB) { + return function(item) { + return fA(item) && fB(item); + }; + }; + + var self = function(a) { + return a; + }; + + var idCounter = 0; + + /** + * generate a globally-unique id + * @param {String} [prefix] + */ + var uniqueId = function(prefix) { + var id = ++idCounter + ''; + + return prefix ? prefix + id : id; + }; + + /** + * returns bnd (bounds) from rect + * - IE Compatability Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + var rect2bnd = function(rect) { + var $document = $(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + }; + + /** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + var invertObject = function(obj) { + var inverted = {}; + + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + inverted[obj[key]] = key; + } + } + return inverted; + }; + + /** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + var namespaceToCamel = function(namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function(name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); + }; + + return { + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: self, + not: not, + and: and, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel + }; +})(); //end func + + +/** +* @class core.list +* list utils +* @singleton +* @alternateClassName list +*/ +var list = (function() { + /** + * returns the first item of an array. + * @param {Array} array + */ + var head = function(array) { + return array[0]; + }; + + /** + * returns the last item of an array. + * @param {Array} array + */ + var last = function(array) { + return array[array.length - 1]; + }; + + /** + * returns everything but the last entry of the array. + * @param {Array} array + */ + var initial = function(array) { + return array.slice(0, array.length - 1); + }; + + /** + * returns the rest of the items in an array. + * @param {Array} array + */ + var tail = function(array) { + return array.slice(1); + }; + + /** + * returns item of array + */ + var find = function(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + var item = array[idx]; + + if (pred(item)) { + return item; + } + } + }; + + /** + * returns true if all of the values in the array pass the predicate truth test. + */ + var all = function(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!pred(array[idx])) { + return false; + } + } + return true; + }; + + /** + * returns true if the value is present in the list. + */ + var contains = function(array, item) { + return $.inArray(item, array) !== -1; + }; + + /** + * get sum from a list + * @param {Array} array - array + * @param {Function} fn - iterator + */ + var sum = function(array, fn) { + fn = fn || func.self; + return array.reduce(function(memo, v) { + return memo + fn(v); + }, 0); + }; + + /** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + var from = function(collection) { + var result = [], idx = -1, length = collection.length; + while (++idx < length) { + result[idx] = collection[idx]; + } + return result; + }; + + /** + * cluster elements by predicate function. + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + var clusterBy = function(array, fn) { + if (!array.length) { return []; } + var aTail = tail(array); + + return aTail.reduce(function(memo, v) { + var aLast = last(memo); + if (fn(last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + return memo; + }, [[head(array)]]); + }; + + /** + * returns a copy of the array with all falsy values removed + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + var compact = function(array) { + var aResult = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (array[idx]) { aResult.push(array[idx]); } + } + return aResult; + }; + + /** + * produces a duplicate-free version of the array + * @param {Array} array + */ + var unique = function(array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + return results; + }; + + /** + * returns next item. + * @param {Array} array + */ + var next = function(array, item) { + var idx = array.indexOf(item); + + if (idx === -1) {return null;} + return array[idx + 1]; + }; + + /** + * returns prev item. + * @param {Array} array + */ + var prev = function(array, item) { + var idx = array.indexOf(item); + + if (idx === -1) {return null;} + return array[idx - 1]; + }; + + + return {head: head, last: last, initial: initial, tail: tail, prev: prev, next: next, find: find, contains: contains, all: all, sum: sum, from: from, clusterBy: clusterBy, compact: compact, unique: unique}; +})(); //end list + + +var NBSP_CHAR = String.fromCharCode(160); +var ZERO_WIDTH_NBSP_CHAR = '\ufeff'; + +/** +* @class core.dom +* Dom functions +* @singleton +* @alternateClassName dom +*/ +var dom = (function() { + /** + * @method isEditable + * returns whether node is `note-editable` or not. + * @param {Node} node + * @return {Boolean} + */ + var isEditable = function(node) { + return node && $(node).hasClass('note-editable'); + }; + + /** + * @method isControlSizing + * returns whether node is `note-control-sizing` or not. + * @param {Node} node + * @return {Boolean} + */ + var isControlSizing = function(node) { + return node && $(node).hasClass('note-control-sizing'); + }; + + /** + * @method buildLayoutInfo + * build layoutInfo from $editor(.note-editor) + * @param {jQuery} $editor + * @return {Object} + * @return {Function} return.editor + * @return {Node} return.dropzone + * @return {Node} return.toolbar + * @return {Node} return.editable + * @return {Node} return.codable + * @return {Node} return.popover + * @return {Node} return.handle + * @return {Node} return.dialog + */ + var buildLayoutInfo = function($editor) { + var makeFinder; + + // air mode + if ($editor.hasClass('note-air-editor')) { + var id = list.last($editor.attr('id').split('-')); + + makeFinder = function(sIdPrefix) { + return function() { return $(sIdPrefix + id); }; + }; + + return { + editor: function() { return $editor; }, + holder : function() { return $editor.data('holder'); }, + editable: function() { return $editor; }, + popover: makeFinder('#note-popover-'), + handle: makeFinder('#note-handle-'), + dialog: makeFinder('#note-dialog-') + }; + // frame mode + } else { + makeFinder = function(sClassName) { + return function() { return $editor.find(sClassName); }; + }; + return { + editor: function() { return $editor; }, + holder : function() { return $editor.data('holder'); }, + dropzone: makeFinder('.note-dropzone'), + toolbar: makeFinder('.note-toolbar'), + editable: makeFinder('.note-editable'), + codable: makeFinder('.note-codable'), + statusbar: makeFinder('.note-statusbar'), + popover: makeFinder('.note-popover'), + handle: makeFinder('.note-handle'), + dialog: makeFinder('.note-dialog') + }; + } + }; + + /** + * returns makeLayoutInfo from editor's descendant node. + * @private + * @param {Node} descendant + * @return {Object} + */ + var makeLayoutInfo = function(descendant) { + var $target = $(descendant).closest('.note-editor, .note-air-editor, .note-air-layout'); + + if (!$target.length) { + return null; + } + var $editor; + + if ($target.is('.note-editor, .note-air-editor')) { + $editor = $target; + } else { + $editor = $('#note-editor-' + list.last($target.attr('id').split('-'))); + } + return buildLayoutInfo($editor); + }; + + /** + * @method makePredByNodeName + * returns predicate which judge whether nodeName is same + * @param {String} nodeName + * @return {Function} + */ + var makePredByNodeName = function(nodeName) { + nodeName = nodeName.toUpperCase(); + return function(node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; + }; + + /** + * @method isText + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + var isText = function(node) { + return node && node.nodeType === 3; + }; + + /** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + var isVoid = function(node) { + return node && /^BR|^IMG|^HR/.test(node.nodeName.toUpperCase()); + }; + + var isPara = function(node) { + if (isEditable(node)) { + return false; + } + // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isLi = makePredByNodeName('LI'); + + var isPurePara = function(node) { + return isPara(node) && !isLi(node); + }; + + var isTable = makePredByNodeName('TABLE'); + + var isInline = function(node) { + return !isBodyContainer(node) && !isList(node) && !isPara(node) && !isTable(node) && !isBlockquote(node); + }; + + var isList = function(node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); + }; + + var isCell = function(node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); + }; + + var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + + var isBodyContainer = function(node) { + return isCell(node) || isBlockquote(node) || isEditable(node); + }; + + var isAnchor = makePredByNodeName('A'); + + var isParaInline = function(node) { + return isInline(node) && !!ancestor(node, isPara); + }; + + var isBodyInline = function(node) { + return isInline(node) && !ancestor(node, isPara); + }; + + var isBody = makePredByNodeName('BODY'); + + /** + * returns whether nodeB is closest sibling of nodeA + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + var isClosestSibling = function(nodeA, nodeB) { + return nodeA.nextSibling === nodeB || nodeA.previousSibling === nodeB; + }; + + /** + * returns array of closest siblings with node + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + var withClosestSiblings = function(node, pred) { + pred = pred || func.ok; + var siblings = []; + + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + siblings.push(node); + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + return siblings; + }; + + /** + * blank HTML for cursor position + * - [workaround] for MSIE IE doesn't works with bogus br + */ + var blankHTML = agent.isMSIE ? ' ' : '<br>'; + + /** + * @method nodeLength + * returns #text's text size or element's childNodes size + * @param {Node} node + */ + var nodeLength = function(node) { + if (isText(node)) { + return node.nodeValue.length; + } + return node.childNodes.length; + }; + + /** + * returns whether node is empty or not. + * @param {Node} node + * @return {Boolean} + */ + var isEmpty = function(node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + return true; + } else if (list.all(node.childNodes, isText) && node.innerHTML === '') { + return true; + } + return false; + }; + + /** + * padding blankHTML if node is empty (for cursor position) + */ + var paddingBlankHTML = function(node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } + }; + + /** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var ancestor = function(node, pred) { + while (node) { + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var singleChildAncestor = function(node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { break; } + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listAncestor = function(node, pred) { + pred = pred || func.fail; + + var ancestors = []; + ancestor(node, function(el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; + }; + + /** + * find farthest ancestor predicate hit + */ + var lastAncestor = function(node, pred) { + var ancestors = listAncestor(node); + return list.last(ancestors.filter(pred)); + }; + + /** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + var commonAncestor = function(nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + for (var n = nodeB; n; n = n.parentNode) { + if ($.inArray(n, ancestors) > -1) { return n; } + } + return null; // difference document area + }; + + /** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listPrev = function(node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.previousSibling; + } + return nodes; + }; + + /** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listNext = function(node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.nextSibling; + } + return nodes; + }; + + /** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listDescendant = function(node, pred) { + var descendents = []; + pred = pred || func.ok; + + // start DFS(depth first search) with node + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendents.push(current); + } + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendents; + }; + + /** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + var wrap = function(node, wrapperName) { + var parent = node.parentNode; + var wrapper = $('<' + wrapperName + '>')[0]; + + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + + return wrapper; + }; + + /** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + var insertAfter = function(node, preceding) { + var next = preceding.nextSibling, parent = preceding.parentNode; + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + return node; + }; + + /** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + var appendChildNodes = function(node, aChild) { + $.each(aChild, function(idx, child) { + node.appendChild(child); + }); + return node; + }; + + /** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isLeftEdgePoint = function(point) { + return point.offset === 0; + }; + + /** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isRightEdgePoint = function(point) { + return point.offset === nodeLength(point.node); + }; + + /** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isEdgePoint = function(point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); + }; + + /** + * returns wheter node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgeOf = function(node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== 0) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgeOf = function(node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns offset from parent. + * + * @param {Node} node + */ + var position = function(node) { + var offset = 0; + while ((node = node.previousSibling)) { + offset += 1; + } + return offset; + }; + + var hasChildren = function(node) { + return !!(node && node.childNodes && node.childNodes.length); + }; + + /** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var prevPoint = function(point, isSkipInnerOffset) { + var node, offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var nextPoint = function(point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node) + 1; + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + var isSamePoint = function(pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; + }; + + /** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isVisiblePoint = function(point) { + if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; + }; + + /** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var prevPointUntil = function(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = prevPoint(point); + } + + return null; + }; + + /** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var nextPointUntil = function(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = nextPoint(point); + } + + return null; + }; + + /** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + var isCharPoint = function(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && (ch !== ' ' && ch !== NBSP_CHAR); + }; + + /** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + var walkPoint = function(startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && + startPoint.node !== point.node && + endPoint.node !== point.node; + point = nextPoint(point, isSkipOffset); + } + }; + + /** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + var makeOffsetPath = function(ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return $.map(ancestors, position).reverse(); + }; + + /** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + var fromOffsetPath = function(ancestor, offsets) { + var current = ancestor; + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + return current; + }; + + /** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitNode = function(point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + + // edge case + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } + + // split #text + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + return clone; + } + }; + + /** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitTree = function(root, point, options) { + // ex) [#text, <span>, <p>] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function(node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom.position(node) : nodeLength(parent) + }, options); + }); + }; + + /** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + var splitPoint = function(point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = list.last(ancestors) || point.node; + + var splitRoot, container; + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } + + // if splitRoot is exists, split with splitTree + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); + + // if container is point.node, find pivot with point.offset + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; + }; + + var create = function(nodeName) { + return document.createElement(nodeName); + }; + + var createText = function(text) { + return document.createTextNode(text); + }; + + /** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + var remove = function(node, isRemoveChild) { + if (!node || !node.parentNode) { return; } + if (node.removeNode) { return node.removeNode(isRemoveChild); } + + var parent = node.parentNode; + if (!isRemoveChild) { + var nodes = []; + var i, len; + for (i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (i = 0, len = nodes.length; i < len; i++) { + parent.insertBefore(nodes[i], node); + } + } + + parent.removeChild(node); + }; + + /** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + var removeWhile = function(node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } + }; + + /** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + var replace = function(node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, list.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + + return newNode; + }; + + var isTextarea = makePredByNodeName('TEXTAREA'); + + /** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + var value = function($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + return val; + }; + + /** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + var html = function($node, isNewlineOnBlock) { + var markup = value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function(match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && + !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + + return match + ((isEndOfInlineContainer || isBlockNode) ? '\n' : ''); + }); + markup = $.trim(markup); + } + + return markup; + }; + + return { + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + /** @property {String} blank */ + blank: blankHTML, + /** @property {String} emptyPara */ + emptyPara: '<p>' + blankHTML + '</p>', + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + buildLayoutInfo: buildLayoutInfo, + makeLayoutInfo: makeLayoutInfo, + isText: isText, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isInline: isInline, + isBlock: func.not(isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isList: isList, + isTable: isTable, + isCell: isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + isEmpty: isEmpty, + isEmptyAnchor: func.and(isAnchor, isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + prevPoint: prevPoint, + nextPoint: nextPoint, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + walkPoint: walkPoint, + ancestor: ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: replace, + html: html, + value: value + }; + })(); + + + var range = (function() { + + /** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + var textRangeToPoint = function(textRange, isStart) { + var container = textRange.parentElement(), offset; + + var tester = document.body.createTextRange(), prevContainer; + var childNodes = list.from(container.childNodes); + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + tester.moveToElementText(childNodes[offset]); + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(), curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + /* jshint ignore:start */ + var dummy = curTextNode.nodeValue; // enforce IE to re-reference curTextNode, hack + /* jshint ignore:end */ + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && + textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; + }; + + /** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + var pointToTextRange = function(point) { + var textRangeInfo = function(container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = list.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += list.sum(list.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; + }; + + /** + * Wrapped Range + * + * @constructor + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + var WrappedRange = function(sc, so, ec, eo) { + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; + + // nativeRange: get nativeRange from sc, so, ec, eo + var nativeRange = function() { + if (agent.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(sc, so); + w3cRange.setEnd(ec, eo); + + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: sc, + offset: so + }); + + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: ec, + offset: eo + })); + + return textRange; + } + }; + + this.getPoints = function() { + return { + sc: sc, + so: so, + ec: ec, + eo: eo + }; + }; + + this.getStartPoint = function() { + return { + node: sc, + offset: so + }; + }; + + this.getEndPoint = function() { + return { + node: ec, + offset: eo + }; + }; + + /** + * select update visible range + */ + this.select = function() { + var nativeRng = nativeRange(); + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + + return this; + }; + + /** + * @return {WrappedRange} + */ + this.normalize = function() { + + /** + * @param {BoundaryPoint} point + * @return {BoundaryPoint} + */ + var getVisiblePoint = function(point) { + if (!dom.isVisiblePoint(point)) { + if (dom.isLeftEdgePoint(point)) { + point = dom.nextPointUntil(point, dom.isVisiblePoint); + } else { + point = dom.prevPointUntil(point, dom.isVisiblePoint); + } + } + return point; + }; + + var startPoint = getVisiblePoint(this.getStartPoint()); + var endPoint = getVisiblePoint(this.getEndPoint()); + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + this.nodes = function(pred, options) { + pred = pred || func.ok; + + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; + + // TODO compare points and sort + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + + var nodes = []; + var leftEdgeNodes = []; + + dom.walkPoint(startPoint, endPoint, function(point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + if (dom.isRightEdgePoint(point) && list.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + + return list.unique(nodes); + }; + + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + this.commonAncestor = function() { + return dom.commonAncestor(sc, ec); + }; + + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + this.expand = function(pred) { + var startAncestor = dom.ancestor(sc, pred); + var endAncestor = dom.ancestor(ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(sc, so, ec, eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + this.collapse = function(isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(sc, so, sc, so); + } else { + return new WrappedRange(ec, eo, ec, eo); + } + }; + + /** + * splitText on range + */ + this.splitText = function() { + var isSameContainer = sc === ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(ec) && !dom.isEdgePoint(this.getEndPoint())) { + ec.splitText(eo); + } + + if (dom.isText(sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = sc.splitText(so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = eo - so; + } + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * delete contents on range + * @return {WrappedRange} + */ + this.deleteContents = function() { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); + + // find new cursor point + var point = dom.prevPointUntil(rng.getStartPoint(), function(point) { + return !list.contains(nodes, point.node); + }); + + var emptyParents = []; + $.each(nodes, function(idx, node) { + // find empty parents + var parent = node.parentNode; + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + dom.remove(node, false); + }); + + // remove empty parents + $.each(emptyParents, function(idx, node) { + dom.remove(node, false); + }); + + return new WrappedRange( + point.node, + point.offset, + point.node, + point.offset + ).normalize(); + }; + + /** + * makeIsOn: return isOn(pred) function + */ + var makeIsOn = function(pred) { + return function() { + var ancestor = dom.ancestor(sc, pred); + return !!ancestor && (ancestor === dom.ancestor(ec, pred)); + }; + }; + + // isOnEditable: judge whether range is on editable or not + this.isOnEditable = makeIsOn(dom.isEditable); + // isOnList: judge whether range is on list node or not + this.isOnList = makeIsOn(dom.isList); + // isOnAnchor: judge whether range is on anchor node or not + this.isOnAnchor = makeIsOn(dom.isAnchor); + // isOnAnchor: judge whether range is on cell node or not + this.isOnCell = makeIsOn(dom.isCell); + + /** + * @param {Function} pred + * @return {Boolean} + */ + this.isLeftEdgeOf = function(pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + }; + + /** + * returns whether range was collapsed or not + */ + this.isCollapsed = function() { + return sc === ec && so === eo; + }; + + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + this.wrapBodyInlineWithPara = function() { + if (dom.isBodyContainer(sc) && dom.isEmpty(sc)) { + sc.innerHTML = dom.emptyPara; + return new WrappedRange(sc.firstChild, 0, sc.firstChild, 0); + } + + if (dom.isParaInline(sc) || dom.isPara(sc)) { + return this.normalize(); + } + + // find inline top ancestor + var topAncestor; + if (dom.isInline(sc)) { + var ancestors = dom.listAncestor(sc, func.not(dom.isInline)); + topAncestor = list.last(ancestors); + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || sc.childNodes[so]; + } + } else { + topAncestor = sc.childNodes[so > 0 ? so - 1 : 0]; + } + + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); + + // wrap with paragraph + if (inlineSiblings.length) { + var para = dom.wrap(list.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, list.tail(inlineSiblings)); + } + + return this.normalize(); + }; + + /** + * insert node at current cursor + * + * @param {Node} node + * @return {Node} + */ + this.insertNode = function(node) { + var rng = this.wrapBodyInlineWithPara().deleteContents(); + var info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node)); + + if (info.rightNode) { + info.rightNode.parentNode.insertBefore(node, info.rightNode); + } else { + info.container.appendChild(node); + } + + return node; + }; + + + /** + * insert html at current cursor + */ + this.pasteHTML = function(markup) { + var self = this; + var contentsContainer = $('<div></div>').html(markup)[0]; + var childNodes = list.from(contentsContainer.childNodes); + + this.wrapBodyInlineWithPara().deleteContents(); + + return $.map(childNodes.reverse(), function(childNode) { + return self.insertNode(childNode); + }).reverse(); + }; + + /** + * returns text in range + * + * @return {String} + */ + this.toString = function() { + var nativeRng = nativeRange(); + return agent.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + }; + + /** + * returns range for word before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + this.getWordRange = function(findAfter) { + var endPoint = this.getEndPoint(); + + if (!dom.isCharPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, function(point) { + return !dom.isCharPoint(point); + }); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, function(point) { + return !dom.isCharPoint(point); + }); + } + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * create offsetPath bookmark + * + * @param {Node} editable + */ + this.bookmark = function(editable) { + return { + s: { + path: dom.makeOffsetPath(editable, sc), + offset: so + }, + e: { + path: dom.makeOffsetPath(editable, ec), + offset: eo + } + }; + }; + + /** + * create offsetPath bookmark base on paragraph + * + * @param {Node[]} paras + */ + this.paraBookmark = function(paras) { + return { + s: { + path: list.tail(dom.makeOffsetPath(list.head(paras), sc)), + offset: so + }, + e: { + path: list.tail(dom.makeOffsetPath(list.last(paras), ec)), + offset: eo + } + }; + }; + + /** + * getClientRects + * @return {Rect[]} + */ + this.getClientRects = function() { + var nativeRng = nativeRange(); + return nativeRng.getClientRects(); + }; + }; + + /** + * @class core.range + * + * Data structure + * * BoundaryPoint: a point of dom tree + * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range + * + * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + * + * @singleton + * @alternateClassName range + */ + return { + /** + * @method + * + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + * @return {WrappedRange} + */ + create : function(sc, so, ec, eo) { + if (!arguments.length) { // from Browser Selection + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (!selection || selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + + var startPoint = textRangeToPoint(textRangeStart, true), + endPoint = textRangeToPoint(textRangeEnd, false); + + // same visible point case: range was collapsed. + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && + dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && + endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + } else if (arguments.length === 2) { //collapsed + ec = sc; + eo = so; + } + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function(node) { + var sc = node; + var so = 0; + var ec = node; + var eo = dom.nodeLength(ec); + + // browsers can't target a picture or void node + if (dom.isVoid(sc)) { + so = dom.listPrev(sc).length - 1; + sc = sc.parentNode; + } + if (dom.isBR(ec)) { + eo = dom.listPrev(ec).length - 1; + ec = ec.parentNode; + } else if (dom.isVoid(ec)) { + eo = dom.listPrev(ec).length; + ec = ec.parentNode; + } + + return this.create(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeBefore: function(node) { + return this.createFromNode(node).collapse(true); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeAfter: function(node) { + return this.createFromNode(node).collapse(); + }, + + /** + * @method + * + * create WrappedRange from bookmark + * + * @param {Node} editable + * @param {Object} bookmark + * @return {WrappedRange} + */ + createFromBookmark : function(editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from paraBookmark + * + * @param {Object} bookmark + * @param {Node[]} paras + * @return {WrappedRange} + */ + createFromParaBookmark: function(bookmark, paras) { + var so = bookmark.s.offset; + var eo = bookmark.e.offset; + var sc = dom.fromOffsetPath(list.head(paras), bookmark.s.path); + var ec = dom.fromOffsetPath(list.last(paras), bookmark.e.path); + + return new WrappedRange(sc, so, ec, eo); + } + }; + })(); + + /** + * @class defaults + * @singleton + */ + // >>>>>>> CK + var defaults = { + /** @property */ + version: '0.6.9', + + /** + * for event options, reference to EventHandler.attach + * @property {Object} options + * @property {String/Number} [options.width=null] set editor width + * @property {String/Number} [options.height=null] set editor height, ex) 300 + * @property {String/Number} options.minHeight set minimum height of editor + * @property {String/Number} options.maxHeight + * @property {String/Number} options.focus + * @property {Number} options.tabsize + * @property {Boolean} options.styleWithSpan + * @property {Object} options.codemirror + * @property {Object} [options.codemirror.mode='text/html'] + * @property {Object} [options.codemirror.htmlMode=true] + * @property {Object} [options.codemirror.lineNumbers=true] + * @property {String} [options.lang=en-US] language 'en-US', 'ko-KR', ... + * @property {String} [options.direction=null] text direction, ex) 'rtl' + * @property {Array} [options.toolbar] + * @property {Boolean} [options.airMode=false] + * @property {Array} [options.airPopover] + * @property {Fucntion} [options.onInit] initialize + * @property {Fucntion} [options.onsubmit] + */ + options: { + // >>>>>>> CK extra options + defaultTextColor: '#212121', // default text color (used by color tool) + defaultBackColor: '#ddd', // default text color (used by color tool) + followingToolbar: true, // make the toolbar follow on window scroll + otherStaticBarClass: "staticTop", // default class for other static bars eventually used on webapp + + width: null, // set editor width + height: null, // set editor height, ex) 300 + + minHeight: null, // set minimum height of editor + maxHeight: null, // set maximum height of editor + + focus: false, // set focus to editable area after initializing materialnote + + tabsize: 4, // size of tab ex) 2 or 4 + styleWithSpan: true, // style with span (Chrome and FF only) + + disableLinkTarget: false, // hide link Target Checkbox + disableDragAndDrop: false, // disable drag and drop event + disableResizeEditor: false, // disable resizing editor + + shortcuts: true, // enable keyboard shortcuts + + placeholder: false, // enable placeholder text + prettifyHtml: true, // enable prettifying html while toggling codeview + + iconPrefix: '', // prefix for css icon classes + icons: { + font: { + bold: 'format_bold', + italic: 'format_italic', + underline: 'format_underlined', + clear: 'clear', + height: 'format_size', + strikethrough: 'strikethrough_s', + superscript: 'vertical_align_top', + subscript: 'vertical_align_bottom' + }, + image: { + image: 'image', + floatLeft: 'format_align_left', + floatRight: 'format_align_right', + floatNone: 'format_align_justify', + shapeRounded: 'crop_3_2', + shapeCircle: 'panorama_fish_eye', + shapeThumbnail: 'collections', + bordered: 'border_outer', + shapeNone: 'image', + remove: 'delete' + }, + link: { + link: 'insert_link', + unlink: 'clear', + edit: 'create' + }, + table: { + table: 'border_all' + }, + hr: { + insert: 'add' + }, + style: { + style: 'border_color' + }, + lists: { + unordered: 'format_list_bulleted', + ordered: 'format_list_numbered' + }, + options: { + help: 'help', + fullscreen: 'settings_overscan', + codeview: 'code' + }, + paragraph: { + paragraph: 'format_textdirection_l_to_r', + outdent: 'format_indent_decrease', + indent: 'format_indent_increase', + left: 'format_align_left', + center: 'format_align_center', + right: 'format_align_right', + justify: 'format_align_justify' + }, + color: { + recent: 'format_color_text' + }, + history: { + undo: 'undo', + redo: 'redo' + }, + misc: { + check: 'check' + } + }, + + codemirror: { // codemirror options + mode: 'text/html', + htmlMode: true, + indentWithTabs: true, + tabSize: 4, + lineNumbers: true, + theme: 'monokai', + maxHighlightLength: 'Infinity' + }, + + // language + lang: 'en-US', // language 'en-US', 'ko-KR', ... + direction: null, // text direction, ex) 'rtl' + + // toolbar + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'italic', 'underline', 'clear']], + // ['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']], + ['fontname', ['fontname']], + ['fontsize', ['fontsize']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['height', ['height']], + ['table', ['table']], + ['insert', ['link', 'picture', 'hr']], + ['view', ['fullscreen', 'codeview']], + ['help', ['help']] + ], + + plugin : {}, + + // air mode: inline editor + airMode: false, + // airPopover: [ + // ['style', ['style']], + // ['font', ['bold', 'italic', 'underline', 'clear']], + // ['fontname', ['fontname']], + // ['color', ['color']], + // ['para', ['ul', 'ol', 'paragraph']], + // ['height', ['height']], + // ['table', ['table']], + // ['insert', ['link', 'picture']], + // ['help', ['help']] + // ], + airPopover: [ + ['color', ['color']], + ['font', ['bold', 'underline', 'clear']], + ['para', ['ul', 'paragraph']], + ['table', ['table']], + ['insert', ['link', 'picture']] + ], + + // style tag + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + + // default fontName + defaultFontName: 'Roboto', + + // fontName + fontNames: [ + 'Roboto', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', + 'Helvetica Neue', 'Helvetica', 'Impact', 'Times New Roman', 'Verdana' + ], + fontNamesIgnoreCheck: [], + + fontSizes: ['12', '13', '14', '15', '16', '17', '18', '25', '37'], + + // pallete colors(n x n) + colors: [//grey brown dpurple purple indigo blue cyan green lgreen yellow amber orange dorange red pink + ['#fafafa', '#efebe9', '#7e57c2', '#ab47bc', '#5c6bc0', '#42a5f5', '#26c6da', '#66bb6a', '#9ccc65', '#ffee58', '#ffca28', '#ffa726', '#ff7043', '#ef5350', '#ec407a'], + ['#f5f5f5', '#d7ccc8', '#673ab7', '#9c27b0', '#3f51b5', '#2196f3', '#00bcd4', '#4caf50', '#8bc34a', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722', '#f44336', '#e91e63'], + ['#eeeeee', '#bcaaa4', '#5e35b1', '#8e24aa', '#3949ab', '#1e88e5', '#00acc1', '#43a047', '#7cb342', '#fdd835', '#ffb300', '#fb8c00', '#f4511e', '#e53935', '#d81b60'], + ['#e0e0e0', '#a1887f', '#512da8', '#7b1fa2', '#303f9f', '#1976d2', '#0097a7', '#388e3c', '#689f38', '#fbc02d', '#ffa000', '#f57c00', '#e64a19', '#d32f2f', '#c2185b'], + ['#bdbdbd', '#8d6e63', '#4527a0', '#6a1b9a', '#283593', '#1565c0', '#00838f', '#2e7d32', '#558b2f', '#f9a825', '#ff8f00', '#ef6c00', '#d84315', '#c62828', '#ad1457'], + ['#9e9e9e', '#795548', '#311b92', '#4a148c', '#1a237e', '#0d47a1', '#006064', '#1b5e20', '#33691e', '#f57f17', '#ff6f00', '#e65100', '#bf360c', '#b71c1c', '#880e4f'], + ['#757575', '#6d4c41', '#b388ff', '#ea80fc', '#8c9eff', '#82b1ff', '#84ffff', '#b9f6ca', '#ccff90', '#ffff8d', '#ffe57f', '#ffd180', '#ff9e80', '#ff8a80', '#ff80ab'], + ['#616161', '#5d4037', '#7c4dff', '#e040fb', '#536dfe', '#448aff', '#18ffff', '#69f0ae', '#b2ff59', '#ffff00', '#ffd740', '#ffab40', '#ff6e40', '#ff5252', '#ff4081'], + ['#424242', '#4e342e', '#651fff', '#d500f9', '#3d5afe', '#2979ff', '#00e5ff', '#00e676', '#76ff03', '#ffea00', '#ffc400', '#ff9100', '#ff3d00', '#ff1744', '#f50057'], + ['#212121', '#3e2723', '#6200ea', '#aa00ff', '#304ffe', '#2962ff', '#00b8d4', '#00c853', '#64dd17', '#ffd600', '#ffab00', '#ff6d00', '#dd2c00', '#d50000', '#c51162'], + ], + // pallete colors(n x n) + colorTitles: [ + //grey brown dpurple purple indigo blue cyan green lgreen yellow amber orange dorange red pink + ['grey lighten5', 'brown lighten5', 'deep-purple lighten1', 'purple lighten1', 'indigo lighten1', 'blue lighten1', 'cyan lighten1', 'green lighten1', 'light-green lighten1', 'yellow lighten1', 'amber lighten1', 'orange lighten1', 'deep-orange lighten1', 'red lighten1', 'pink lighten1'], + ['grey lighten4', 'brown lighten4', 'deep-purple', 'purple', 'indigo', 'blue', 'cyan', 'green', 'light-green', 'yellow', 'amber', 'orange', 'deep-orange', 'red', 'pink' ], + ['grey lighten3', 'brown lighten3', 'deep-purple darken1', 'purple darken1', 'indigo darken1', 'blue darken1', 'cyan darken1', 'green darken1', 'light-green darken1', 'yellow darken1', 'amber darken1', 'orange darken1', 'deep-orange darken1', 'red darken1', 'pink darken1' ], + ['grey lighten2', 'brown lighten2', 'deep-purple darken2', 'purple darken2', 'indigo darken2', 'blue darken2', 'cyan darken2', 'green darken2', 'light-green darken2', 'yellow darken2', 'amber darken2', 'orange darken2', 'deep-orange darken2', 'red darken2', 'pink darken2' ], + ['grey lighten1', 'brown lighten1', 'deep-purple darken3', 'purple darken3', 'indigo darken3', 'blue darken3', 'cyan darken3', 'green darken3', 'light-green darken3', 'yellow darken3', 'amber darken3', 'orange darken3', 'deep-orange darken3', 'red darken3', 'pink darken3' ], + ['grey', 'brown', 'deep-purple darken4', 'purple darken4', 'indigo darken4', 'blue darken4', 'cyan darken4', 'green darken4', 'light-green darken4', 'yellow darken4', 'amber darken4', 'orange darken4', 'deep-orange darken4', 'red darken4', 'pink darken4' ], + ['grey darken1', 'brown darken1', 'deep-purple accent1', 'purple accent1', 'indigo accent1', 'blue accent1', 'cyan accent1', 'green accent1', 'light-green accent1', 'yellow accent1', 'amber accent1', 'orange accent1', 'deep-orange accent1', 'red accent1', 'pink accent1' ], + ['grey darken2', 'brown darken2', 'deep-purple accent2', 'purple accent2', 'indigo accent2', 'blue accent2', 'cyan accent2', 'green accent2', 'light-green accent2', 'yellow accent2', 'amber accent2', 'orange accent2', 'deep-orange accent2', 'red accent2', 'pink accent2' ], + ['grey darken3', 'brown darken3', 'deep-purple accent3', 'purple accent3', 'indigo accent3', 'blue accent3', 'cyan accent3', 'green accent3', 'light-green accent3', 'yellow accent3', 'amber accent3', 'orange accent3', 'deep-orange accent3', 'red accent3', 'pink accent3' ], + ['grey darken4', 'brown darken4', 'deep-purple accent4', 'purple accent4', 'indigo accent4', 'blue accent4', 'cyan accent4', 'green accent4', 'light-green accent4', 'yellow accent4', 'amber accent4', 'orange accent4', 'deep-orange accent4', 'red accent4', 'pink accent4' ], + ], + + // lineHeight + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + + // insertTable max size + insertTableMaxSize: { + col: 12, + row: 10 + }, + + // image + maximumImageFileSize: null, // size in bytes, null = no limit + + // callbacks + oninit: null, // initialize + onfocus: null, // editable has focus + onblur: null, // editable out of focus + onenter: null, // enter key pressed + onkeyup: null, // keyup + onkeydown: null, // keydown + onImageUpload: null, // imageUpload + onImageUploadError: null, // imageUploadError + onMediaDelete: null, // media delete + onToolbarClick: null, + onsubmit: null, + + /** + * manipulate link address when user create link + * @param {String} sLinkUrl + * @return {String} + */ + onCreateLink: function(sLinkUrl) { + if (sLinkUrl.indexOf('@') !== -1 && sLinkUrl.indexOf(':') === -1) { + sLinkUrl = 'mailto:' + sLinkUrl; + } + + return sLinkUrl; + }, + + keyMap: { + pc: { + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'showLinkDialog' + }, + + mac: { + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'showLinkDialog' + } + } + }, + + // default language: en-US + lang: { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize Full', + resizeHalf: 'Resize Half', + resizeQuarter: 'Resize Quarter', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Float None', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + bordered: 'Bordered', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window' + }, + table: { + table: 'Table', + striped: 'Striped', + hoverable: 'Hoverable', + responsive: 'Responsive', + bordered: 'Bordered' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + normal: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Back', + foreground: 'Text', + transparent: 'Transparent', + setTransparent: 'Transparent', + reset: 'Reset', + resetToDefault: 'Default' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + history: { + undo: 'Undo', + redo: 'Redo' + } + } + } + }; + + /** + * @class core.async + * + * Async functions which returns `Promise` + * + * @singleton + * @alternateClassName async + */ + var async = (function() { + /** + * @method readFileAsDataURL + * + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: sDataUrl + */ + var readFileAsDataURL = function(file) { + return $.Deferred(function(deferred) { + $.extend(new FileReader(), { + onload: function(e) { + var sDataURL = e.target.result; + deferred.resolve(sDataURL); + }, + onerror: function() { + deferred.reject(this); + } + }).readAsDataURL(file); + }).promise(); + }; + + /** + * @method createImage + * + * create `<image>` from url string + * + * @param {String} sUrl + * @param {String} filename + * @return {Promise} - then: $image + */ + var createImage = function(sUrl, filename) { + return $.Deferred(function(deferred) { + var $img = $('<img>'); + + $img.one('load', function() { + $img.off('error abort'); + deferred.resolve($img); + }).one('error abort', function() { + $img.off('load').detach(); + deferred.reject($img); + }).css({ + display: 'none' + }).appendTo(document.body).attr({ + 'src': sUrl, + 'data-filename': filename + }); + }).promise(); + }; + + return { + readFileAsDataURL: readFileAsDataURL, + createImage: createImage + }; + })(); + + /** + * @class core.key + * + * Object for keycodes. + * + * @singleton + * @alternateClassName key + */ + var key = (function() { + var keyMap = { + 'BACKSPACE': 8, + 'TAB': 9, + 'ENTER': 13, + 'SPACE': 32, + + // Number: 0-9 + 'NUM0': 48, + 'NUM1': 49, + 'NUM2': 50, + 'NUM3': 51, + 'NUM4': 52, + 'NUM5': 53, + 'NUM6': 54, + 'NUM7': 55, + 'NUM8': 56, + + // Alphabet: a-z + 'B': 66, + 'E': 69, + 'I': 73, + 'J': 74, + 'K': 75, + 'L': 76, + 'R': 82, + 'S': 83, + 'U': 85, + 'Y': 89, + 'Z': 90, + + 'SLASH': 191, + 'LEFTBRACKET': 219, + 'BACKSLASH': 220, + 'RIGHTBRACKET': 221 + }; + + return { + /** + * @method isEdit + * + * @param {Number} keyCode + * @return {Boolean} + */ + isEdit: function(keyCode) { + return list.contains([8, 9, 13, 32], keyCode); + }, + /** + * @method isMove + * + * @param {Number} keyCode + * @return {Boolean} + */ + isMove: function(keyCode) { + return list.contains([37, 38, 39, 40], keyCode); + }, + /** + * @property {Object} nameFromCode + * @property {String} nameFromCode.8 "BACKSPACE" + */ + nameFromCode: func.invertObject(keyMap), + code: keyMap + }; + })(); + + /** + * @class editing.History + * + * Editor History + * + */ + var History = function($editable) { + var stack = [], stackOffset = -1; + var editable = $editable[0]; + + var makeSnapshot = function() { + var rng = range.create(); + var emptyBookmark = {s: {path: [], offset: 0}, e: {path: [], offset: 0}}; + + return { + contents: $editable.html(), + bookmark: (rng ? rng.bookmark(editable) : emptyBookmark) + }; + }; + + var applySnapshot = function(snapshot) { + if (snapshot.contents !== null) { + $editable.html(snapshot.contents); + } + if (snapshot.bookmark !== null) { + range.createFromBookmark(editable, snapshot.bookmark).select(); + } + }; + + /** + * undo + */ + this.undo = function() { + if (0 < stackOffset) { + stackOffset--; + applySnapshot(stack[stackOffset]); + } + }; + + /** + * redo + */ + this.redo = function() { + if (stack.length - 1 > stackOffset) { + stackOffset++; + applySnapshot(stack[stackOffset]); + } + }; + + /** + * recorded undo + */ + this.recordUndo = function() { + stackOffset++; + + // Wash out stack after stackOffset + if (stack.length > stackOffset) { + stack = stack.slice(0, stackOffset); + } + + // Create new snapshot and push it to the end + stack.push(makeSnapshot()); + }; + + // Create first undo stack + this.recordUndo(); + }; + + /** + * @class editing.Style + * + * Style + * + */ + var Style = function() { + /** + * @method jQueryCSS + * + * [workaround] for old jQuery + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @private + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @return {Object} + */ + var jQueryCSS = function($obj, propertyNames) { + if (agent.jqueryVersion < 1.9) { + var result = {}; + $.each(propertyNames, function(idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + return $obj.css.call($obj, propertyNames); + }; + + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + this.stylePara = function(rng, styleInfo) { + $.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function(idx, para) { + $(para).css(styleInfo); + }); + }; + + /** + * insert and returns styleNodes on range. + * + * @param {WrappedRange} rng + * @param {Object} [options] - options for styleNodes + * @param {String} [options.nodeName] - default: `SPAN` + * @param {Boolean} [options.expandClosestSibling] - default: `false` + * @param {Boolean} [options.onlyPartialContains] - default: `false` + * @return {Node[]} + */ + this.styleNodes = function(rng, options) { + rng = rng.splitText(); + + var nodeName = options && options.nodeName || 'SPAN'; + var expandClosestSibling = !!(options && options.expandClosestSibling); + var onlyPartialContains = !!(options && options.onlyPartialContains); + + if (rng.isCollapsed()) { + return [rng.insertNode(dom.create(nodeName))]; + } + + var pred = dom.makePredByNodeName(nodeName); + var nodes = $.map(rng.nodes(dom.isText, { + fullyContains: true + }), function(text) { + return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName); + }); + + if (expandClosestSibling) { + if (onlyPartialContains) { + var nodesInRange = rng.nodes(); + // compose with partial contains predication + pred = func.and(pred, function(node) { + return list.contains(nodesInRange, node); + }); + } + + return $.map(nodes, function(node) { + var siblings = dom.withClosestSiblings(node, pred); + var head = list.head(siblings); + var tails = list.tail(siblings); + $.each(tails, function(idx, elem) { + dom.appendChildNodes(head, elem.childNodes); + dom.remove(elem); + }); + return list.head(siblings); + }); + } else { + return nodes; + } + }; + + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @param {Node} target - target element on event + * @return {Object} - object contains style properties. + */ + this.current = function(rng, target) { + var $cont = $(dom.isText(rng.sc) ? rng.sc.parentNode : rng.sc); + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = jQueryCSS($cont, properties) || {}; + + styleInfo['font-size'] = parseInt(styleInfo['font-size'], 10); + + // document.queryCommandState for toggle state + styleInfo['font-bold'] = document.queryCommandState('bold') ? 'bold' : 'normal'; + styleInfo['font-italic'] = document.queryCommandState('italic') ? 'italic' : 'normal'; + styleInfo['font-underline'] = document.queryCommandState('underline') ? 'underline' : 'normal'; + styleInfo['font-strikethrough'] = document.queryCommandState('strikeThrough') ? 'strikethrough' : 'normal'; + styleInfo['font-superscript'] = document.queryCommandState('superscript') ? 'superscript' : 'normal'; + styleInfo['font-subscript'] = document.queryCommandState('subscript') ? 'subscript' : 'normal'; + + // list-style-type to list-style(unordered, ordered) + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var aOrderedType = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = $.inArray(styleInfo['list-style-type'], aOrderedType) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.image = dom.isImg(target) && target; + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + + return styleInfo; + }; + }; + + + /** + * @class editing.Bullet + * + * @alternateClassName Bullet + */ + var Bullet = function() { + /** + * @method insertOrderedList + * + * toggle ordered list + * + * @type command + */ + this.insertOrderedList = function() { + this.toggleList('OL'); + }; + + /** + * @method insertUnorderedList + * + * toggle unordered list + * + * @type command + */ + this.insertUnorderedList = function() { + this.toggleList('UL'); + }; + + /** + * @method indent + * + * indent + * + * @type command + */ + this.indent = function() { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function(idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.wrapList(paras, head.parentNode.nodeName); + } else { + $.each(paras, function(idx, para) { + $(para).css('marginLeft', function(idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + + rng.select(); + }; + + /** + * @method outdent + * + * outdent + * + * @type command + */ + this.outdent = function() { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function(idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.releaseList([paras]); + } else { + $.each(paras, function(idx, para) { + $(para).css('marginLeft', function(idx, val) { + val = (parseInt(val, 10) || 0); + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + + rng.select(); + }; + + /** + * @method toggleList + * + * toggle list + * + * @param {String} listName - OL or UL + */ + this.toggleList = function(listName) { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var bookmark = rng.paraBookmark(paras); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + // paragraph to list + if (list.find(paras, dom.isPurePara)) { + var wrappedParas = []; + $.each(clustereds, function(idx, paras) { + wrappedParas = wrappedParas.concat(self.wrapList(paras, listName)); + }); + paras = wrappedParas; + // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function(listNode) { + return !$.nodeName(listNode, listName); + }); + + if (diffLists.length) { + $.each(diffLists, function(idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + paras = this.releaseList(clustereds, true); + } + } + + range.createFromParaBookmark(bookmark, paras).select(); + }; + + /** + * @method wrapList + * + * @param {Node[]} paras + * @param {String} listName + * @return {Node[]} + */ + this.wrapList = function(paras, listName) { + var head = list.head(paras); + var last = list.last(paras); + + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); + + // P to LI + paras = $.map(paras, function(para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); + + // append to list(<ul>, <ol>) + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, list.from(nextList.childNodes)); + dom.remove(nextList); + } + + return paras; + }; + + /** + * @method releaseList + * + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + this.releaseList = function(clustereds, isEscapseToBody) { + var releasedParas = []; + + $.each(clustereds, function(idx, paras) { + var head = list.head(paras); + var last = list.last(paras); + + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : + head.parentNode; + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, { + isSkipPaddingBlankHTML: true + }) : null; + + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, { + isSkipPaddingBlankHTML: true + }); + + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : + list.from(middleList.childNodes).filter(dom.isLi); + + // LI to P + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = $.map(paras, function(para) { + return dom.replace(para, 'P'); + }); + } + + $.each(list.from(paras).reverse(), function(idx, para) { + dom.insertAfter(para, headList); + }); + + // remove empty lists + var rootLists = list.compact([headList, middleList, lastList]); + $.each(rootLists, function(idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + $.each(listNodes.reverse(), function(idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + + releasedParas = releasedParas.concat(paras); + }); + + return releasedParas; + }; + }; + + + /** + * @class editing.Typing + * + * Typing + * + */ + var Typing = function() { + + // a Bullet instance to toggle lists off + var bullet = new Bullet(); + + /** + * insert tab + * + * @param {jQuery} $editable + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + this.insertTab = function($editable, rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + + rng = range.create(tab, tabsize); + rng.select(); + }; + + /** + * insert paragraph + */ + this.insertParagraph = function() { + var rng = range.create(); + + // deleteContents on range. + rng = rng.deleteContents(); + + // Wrap range if it needs to be wrapped by paragraph + rng = rng.wrapBodyInlineWithPara(); + + // finding paragraph + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + + var nextPara; + // on paragraph: split paragraph + if (splitRoot) { + // if it is an empty line with li + if (dom.isEmpty(splitRoot) && dom.isLi(splitRoot)) { + // disable UL/OL and escape! + bullet.toggleList(splitRoot.parentNode.nodeName); + return; + // if new line has content (not a line break) + } else { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + + $.each(emptyAnchors, function(idx, anchor) { + dom.remove(anchor); + }); + } + // no paragraph: insert empty paragraph + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = $(dom.emptyPara)[0]; + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select(); + + }; + + }; + + /** + * @class editing.Table + * + * Table + * + */ + var Table = function() { + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + this.tab = function(rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + + var nextCell = list[isShift ? 'prev' : 'next'](cells, cell); + if (nextCell) { + range.create(nextCell, 0).select(); + } + }; + + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + this.createTable = function(tOptions) { + var tds = [], tdHTML; + var theaders = []; + var colCount = tOptions[0]; + var rowCount = tOptions[1]; + var classes = tOptions.slice(2, tOptions.length); + + for (var idxCol = 0; idxCol < colCount; idxCol++) { + //tds.push('<td>' + dom.blank + '</td>'); + tds.push('<td>(item)</td>'); + theaders.push('<th>header</th>'); + } + tdHTML = tds.join(''); + theaders = theaders.join(''); + + var trs = [], trHTML; + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('<tr>' + tdHTML + '</tr>'); + } + trHTML = trs.join(''); + + return $('<table class="' + classes.join(' ') + '"><thead><tr>' + theaders + '</tr></thead><tbody>' + trHTML + '</tbody></table>')[0]; + }; + }; + + + var KEY_BOGUS = 'bogus'; + + /** + * @class editing.Editor + * + * Editor + * + */ + var Editor = function(handler) { + + var style = new Style(); + var table = new Table(); + var typing = new Typing(); + var bullet = new Bullet(); + + /** + * @method createRange + * + * create range + * + * @param {jQuery} $editable + * @return {WrappedRange} + */ + this.createRange = function($editable) { + this.focus($editable); + return range.create(); + }; + + /** + * @method saveRange + * + * save current range + * + * @param {jQuery} $editable + * @param {Boolean} [thenCollapse=false] + */ + this.saveRange = function($editable, thenCollapse) { + this.focus($editable); + $editable.data('range', range.create()); + if (thenCollapse) { + range.create().collapse().select(); + } + }; + + /** + * @method saveRange + * + * save current node list to $editable.data('childNodes') + * + * @param {jQuery} $editable + */ + this.saveNode = function($editable) { + // copy child node reference + var copy = []; + for (var key = 0, len = $editable[0].childNodes.length; key < len; key++) { + copy.push($editable[0].childNodes[key]); + } + $editable.data('childNodes', copy); + }; + + /** + * @method restoreRange + * + * restore lately range + * + * @param {jQuery} $editable + */ + this.restoreRange = function($editable) { + var rng = $editable.data('range'); + if (rng) { + rng.select(); + this.focus($editable); + } + }; + + /** + * @method restoreNode + * + * restore lately node list + * + * @param {jQuery} $editable + */ + this.restoreNode = function($editable) { + $editable.html(''); + var child = $editable.data('childNodes'); + for (var index = 0, len = child.length; index < len; index++) { + $editable[0].appendChild(child[index]); + } + }; + /** + * @method currentStyle + * + * current style + * + * @param {Node} target + * @return {Boolean} false if range is no + */ + this.currentStyle = function(target) { + var rng = range.create(); + return rng ? rng.isOnEditable() && style.current(rng, target) : false; + }; + + var triggerOnBeforeChange = function($editable) { + var $holder = dom.makeLayoutInfo($editable).holder(); + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'before.command' + )($editable.html(), $editable); + }; + + var triggerOnChange = function($editable) { + var $holder = dom.makeLayoutInfo($editable).holder(); + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'change' + )($editable.html(), $editable); + }; + + /** + * @method undo + * undo + * @param {jQuery} $editable + */ + this.undo = function($editable) { + triggerOnBeforeChange($editable); + $editable.data('NoteHistory').undo(); + triggerOnChange($editable); + }; + + /** + * @method redo + * redo + * @param {jQuery} $editable + */ + this.redo = function($editable) { + triggerOnBeforeChange($editable); + $editable.data('NoteHistory').redo(); + triggerOnChange($editable); + }; + + var self = this; + /** + * @method beforeCommand + * before command + * @param {jQuery} $editable + */ + var beforeCommand = this.beforeCommand = function($editable) { + triggerOnBeforeChange($editable); + // keep focus on editable before command execution + self.focus($editable); + }; + + /** + * @method afterCommand + * after command + * @param {jQuery} $editable + * @param {Boolean} isPreventTrigger + */ + var afterCommand = this.afterCommand = function($editable, isPreventTrigger) { + $editable.data('NoteHistory').recordUndo(); + if (!isPreventTrigger) { + triggerOnChange($editable); + } + }; + + /** + * @method bold + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method italic + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method underline + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method strikethrough + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method formatBlock + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method superscript + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method subscript + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyLeft + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyCenter + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyRight + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyFull + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method formatBlock + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method removeFormat + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method backColor + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method foreColor + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method insertHorizontalRule + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method fontName + * + * change font name + * + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /* jshint ignore:start */ + // native commands(with execCommand), generate function for execCommand + // >>>>>>> CK + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', + 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', + 'formatBlock', 'removeFormat', + 'backColor', 'foreColor', 'fontName']; + + for (var idx = 0, len = commands.length; idx < len; idx ++) { + this[commands[idx]] = (function(sCmd) { + return function($editable, value) { + beforeCommand($editable); + + document.execCommand(sCmd, false, value); + + afterCommand($editable, true); + }; + })(commands[idx]); + } + /* jshint ignore:end */ + + this.insertHorizontalRule = function() { + var hrNode = $('<div />'); + hrNode.addClass('divider'); + + range.create().insertNode(hrNode[0]); + }; + + /** + * @method tab + * + * handle tab key + * + * @param {jQuery} $editable + * @param {Object} options + */ + this.tab = function($editable, options) { + var rng = this.createRange($editable); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng); + } else { + beforeCommand($editable); + typing.insertTab($editable, rng, options.tabsize); + afterCommand($editable); + } + }; + + /** + * @method untab + * + * handle shift+tab key + * + */ + this.untab = function($editable) { + var rng = this.createRange($editable); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng, true); + } + }; + + /** + * @method insertParagraph + * + * insert paragraph + * + * @param {Node} $editable + */ + this.insertParagraph = function($editable) { + beforeCommand($editable); + typing.insertParagraph($editable); + afterCommand($editable); + }; + + /** + * @method insertOrderedList + * + * @param {jQuery} $editable + */ + this.insertOrderedList = function($editable) { + beforeCommand($editable); + bullet.insertOrderedList($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.insertUnorderedList = function($editable) { + beforeCommand($editable); + bullet.insertUnorderedList($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.indent = function($editable) { + beforeCommand($editable); + bullet.indent($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.outdent = function($editable) { + beforeCommand($editable); + bullet.outdent($editable); + afterCommand($editable); + }; + + /** + * insert image + * + * @param {jQuery} $editable + * @param {String} sUrl + */ + this.insertImage = function($editable, sUrl, filename) { + async.createImage(sUrl, filename).then(function($image) { + beforeCommand($editable); + $image.css({ + display: '', + width: Math.min($editable.width(), $image.width()) + }); + range.create().insertNode($image[0]); + range.createFromNodeAfter($image[0]).select(); + afterCommand($editable); + }).fail(function() { + var $holder = dom.makeLayoutInfo($editable).holder(); + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'image.upload.error' + )(); + }); + }; + + /** + * @method insertNode + * insert node + * @param {Node} $editable + * @param {Node} node + */ + this.insertNode = function($editable, node) { + beforeCommand($editable); + range.create().insertNode(node); + range.createFromNodeAfter(node).select(); + afterCommand($editable); + }; + + /** + * insert text + * @param {Node} $editable + * @param {String} text + */ + this.insertText = function($editable, text) { + beforeCommand($editable); + var textNode = range.create().insertNode(dom.createText(text)); + range.create(textNode, dom.nodeLength(textNode)).select(); + afterCommand($editable); + }; + + /** + * paste HTML + * @param {Node} $editable + * @param {String} markup + */ + this.pasteHTML = function($editable, markup) { + beforeCommand($editable); + var contents = range.create().pasteHTML(markup); + range.createFromNodeAfter(list.last(contents)).select(); + afterCommand($editable); + }; + + /** + * formatBlock + * + * @param {jQuery} $editable + * @param {String} tagName + */ + this.formatBlock = function($editable, tagName) { + beforeCommand($editable); + // [workaround] for MSIE, IE need `<` + tagName = agent.isMSIE ? '<' + tagName + '>' : tagName; + document.execCommand('FormatBlock', false, tagName); + afterCommand($editable); + }; + + this.formatPara = function($editable) { + beforeCommand($editable); + this.formatBlock($editable, 'P'); + afterCommand($editable); + }; + + /* jshint ignore:start */ + for (var idx = 1; idx <= 6; idx ++) { + this['formatH' + idx] = function(idx) { + return function($editable) { + this.formatBlock($editable, 'H' + idx); + }; + }(idx); + }; + /* jshint ignore:end */ + + /** + * fontSize + * + * @param {jQuery} $editable + * @param {String} value - px + */ + this.fontSize = function($editable, value) { + var rng = range.create(); + var isCollapsed = rng.isCollapsed(); + + if (isCollapsed) { + var spans = style.styleNodes(rng); + var firstSpan = list.head(spans); + + $(spans).css({ + 'font-size': value + 'px' + }); + + // [workaround] added styled bogus span for style + // - also bogus character needed for cursor position + if (firstSpan && !dom.nodeLength(firstSpan)) { + firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR; + range.createFromNodeAfter(firstSpan.firstChild).select(); + $editable.data(KEY_BOGUS, firstSpan); + } + } else { + beforeCommand($editable); + $(style.styleNodes(rng)).css({ + 'font-size': value + 'px' + }); + afterCommand($editable); + } + }; + + /** + * remove bogus node and character + */ + this.removeBogus = function($editable) { + var bogusNode = $editable.data(KEY_BOGUS); + if (!bogusNode) { + return; + } + + var textNode = list.find(list.from(bogusNode.childNodes), dom.isText); + + var bogusCharIdx = textNode.nodeValue.indexOf(dom.ZERO_WIDTH_NBSP_CHAR); + if (bogusCharIdx !== -1) { + textNode.deleteData(bogusCharIdx, 1); + } + + if (dom.isEmpty(bogusNode)) { + dom.remove(bogusNode); + } + + $editable.removeData(KEY_BOGUS); + }; + + /** + * lineHeight + * @param {jQuery} $editable + * @param {String} value + */ + this.lineHeight = function($editable, value) { + beforeCommand($editable); + style.stylePara(range.create(), { + lineHeight: value + }); + afterCommand($editable); + }; + + /** + * unlink + * + * @type command + * + * @param {jQuery} $editable + */ + this.unlink = function($editable) { + var rng = this.createRange($editable); + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + + beforeCommand($editable); + document.execCommand('unlink'); + afterCommand($editable); + } + }; + + /** + * create link (command) + * + * @param {jQuery} $editable + * @param {Object} linkInfo + * @param {Object} options + */ + this.createLink = function($editable, linkInfo, options) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.newWindow; + var rng = linkInfo.range; + var isTextChanged = rng.toString() !== linkText; + + beforeCommand($editable); + + if (options.onCreateLink) { + linkUrl = options.onCreateLink(linkUrl); + } + + var anchors = []; + if (isTextChanged) { + // Create a new link when text changed. + var anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]); + anchors.push(anchor); + } else { + anchors = style.styleNodes(rng, { + nodeName: 'A', + expandClosestSibling: true, + onlyPartialContains: true + }); + } + + $.each(anchors, function(idx, anchor) { + $(anchor).attr('href', linkUrl); + if (isNewWindow) { + $(anchor).attr('target', '_blank'); + } else { + $(anchor).removeAttr('target'); + } + }); + + var startRange = range.createFromNodeBefore(list.head(anchors)); + var startPoint = startRange.getStartPoint(); + var endRange = range.createFromNodeAfter(list.last(anchors)); + var endPoint = endRange.getEndPoint(); + + range.create( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ).select(); + + afterCommand($editable); + }; + + /** + * returns link info + * + * @return {Object} + * @return {WrappedRange} return.range + * @return {String} return.text + * @return {Boolean} [return.isNewWindow=true] + * @return {String} [return.url=''] + */ + this.getLinkInfo = function($editable) { + this.focus($editable); + + var rng = range.create().expand(dom.isAnchor); + + // Get the first anchor on range(for edit). + var $anchor = $(list.head(rng.nodes(dom.isAnchor))); + + return { + range: rng, + text: rng.toString(), + isNewWindow: $anchor.length ? $anchor.attr('target') === '_blank' : false, + url: $anchor.length ? $anchor.attr('href') : '' + }; + }; + + /** + * setting color + * + * @param {Node} $editable + * @param {Object} sObjColor color code + * @param {String} sObjColor.foreColor foreground color + * @param {String} sObjColor.backColor background color + */ + this.color = function($editable, sObjColor) { + var oColor = JSON.parse(sObjColor); + var foreColor = oColor.foreColor, backColor = oColor.backColor; + + beforeCommand($editable); + + if (foreColor) { document.execCommand('foreColor', false, foreColor); } + if (backColor) { document.execCommand('backColor', false, backColor); } + + afterCommand($editable); + }; + + /** + * insert Table + * + * @param {Node} $editable + * @param {String} sDim dimension of table (ex : "5x5") + */ + this.insertTable = function($editable, sDim) { + var tOptions = sDim.split('x'); + beforeCommand($editable); + + var rng = range.create().deleteContents(); + rng.insertNode(table.createTable(tOptions)); + afterCommand($editable); + }; + + /** + * float me + * + * @param {jQuery} $editable + * @param {String} value + * @param {jQuery} $target + */ + this.floatMe = function($editable, value, $target) { + beforeCommand($editable); + $target.css('float', value); + afterCommand($editable); + }; + + /** + * change image shape + * + * @param {jQuery} $editable + * @param {String} value css class + * @param {Node} $target + */ + this.imageShape = function($editable, value, $target) { + beforeCommand($editable); + + $target.removeClass('img-rounded img-circle img-thumbnail img-bordered'); + + if (value) { + $target.addClass(value); + } + + afterCommand($editable); + }; + + /** + * >>>>>>> CK + * change image class + * + * @param {jQuery} $editable + * @param {String} value css class + * @param {Node} $target + */ + this.imageClass = function($editable, value, $target) { + beforeCommand($editable); + + if (value) { + if ($target.hasClass(value)) { + $target.removeClass(value); + } else { + $target.addClass(value); + } + } + + afterCommand($editable); + }; + + /** + * resize overlay element + * @param {jQuery} $editable + * @param {String} value + * @param {jQuery} $target - target element + */ + this.resize = function($editable, value, $target) { + beforeCommand($editable); + + $target.css({ + width: value * 100 + '%', + height: '' + }); + + afterCommand($editable); + }; + + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + this.resizeTo = function(pos, $target, bKeepRatio) { + var imageSize; + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + }; + + /** + * remove media object + * + * @param {jQuery} $editable + * @param {String} value - dummy argument (for keep interface) + * @param {jQuery} $target - target element + */ + this.removeMedia = function($editable, value, $target) { + beforeCommand($editable); + $target.detach(); + + handler.bindCustomEvent( + $(), $editable.data('callbacks'), 'media.delete' + )($target, $editable); + + afterCommand($editable); + }; + + /** + * set focus + * + * @param $editable + */ + this.focus = function($editable) { + $editable.focus(); + + // [workaround] for firefox bug http://goo.gl/lVfAaI + if (agent.isFF && !range.create().isOnEditable()) { + range.createFromNode($editable[0]) + .normalize() + .collapse() + .select(); + } + }; + + /** + * returns whether contents is empty or not. + * + * @param {jQuery} $editable + * @return {Boolean} + */ + this.isEmpty = function($editable) { + return dom.isEmpty($editable[0]) || dom.emptyPara === $editable.html(); + }; + }; + + /** + * @class module.Button + * + * Button + */ + var Button = function() { + /** + * update button status + * + * @param {jQuery} $container + * @param {Object} styleInfo + */ + this.update = function($container, styleInfo) { + /** + * handle dropdown's check mark (for fontname, fontsize, lineHeight). + * @param {jQuery} $btn + * @param {Number} value + */ + var checkDropdownMenu = function($btn, value) { + $btn.find('.dropdown-menu li').each(function() { + + var div = $(this).children('div'); + var currentValue = div.data('value'); + + // always compare string to avoid creating another func. + if ((currentValue + '') === (value + '')) { + div.children('i').removeClass('transparent'); + } else { + div.children('i').addClass('transparent'); + } + }); + }; + + /** + * update button state(active or not). + * + * @private + * @param {String} selector + * @param {Function} pred + */ + var btnState = function(selector, pred) { + var $btn = $container.find(selector); + + $btn.toggleClass('active', pred()); + }; + + if (styleInfo.image) { + var $img = $(styleInfo.image); + + btnState('.btn[data-event="imageClass"][data-value="img-rounded"]', function() { + return $img.hasClass('img-rounded'); + }); + btnState('.btn[data-event="imageClass"][data-value="img-circle"]', function() { + return $img.hasClass('img-circle'); + }); + btnState('.btn[data-event="imageClass"][data-value="img-thumbnail"]', function() { + return $img.hasClass('img-thumbnail'); + }); + btnState('.btn[data-event="imageClass"][data-value="img-bordered"]', function() { + return $img.hasClass('img-bordered'); + }); + btnState('.btn[data-event="imageShape"]:not([data-value])', function() { + return !$img.is('.img-rounded, .img-circle, .img-thumbnail, .img-bordered'); + }); + + var imgFloat = $img.css('float'); + btnState('.btn[data-event="floatMe"][data-value="left"]', function() { + return imgFloat === 'left'; + }); + btnState('.btn[data-event="floatMe"][data-value="right"]', function() { + return imgFloat === 'right'; + }); + btnState('.btn[data-event="floatMe"][data-value="none"]', function() { + return imgFloat !== 'left' && imgFloat !== 'right'; + }); + + var style = $img.attr('style'); + btnState('.btn[data-event="resize"][data-value="1"]', function() { + return !!/(^|\s)(max-)?width\s*:\s*100%/.test(style); + }); + btnState('.btn[data-event="resize"][data-value="0.5"]', function() { + return !!/(^|\s)(max-)?width\s*:\s*50%/.test(style); + }); + btnState('.btn[data-event="resize"][data-value="0.25"]', function() { + return !!/(^|\s)(max-)?width\s*:\s*25%/.test(style); + }); + return; + } + + // fontname + var $fontname = $container.find('.note-fontname[data-name=fontname]'); + if ($fontname.length) { + var selectedFont = styleInfo['font-family']; + if (!!selectedFont) { + + var list = selectedFont.split(','); + for (var i = 0, len = list.length; i < len; i++) { + selectedFont = list[i].replace(/[\'\"]/g, '').replace(/\s+$/, '').replace(/^\s+/, ''); + if (agent.isFontInstalled(selectedFont)) { + break; + } + } + + $fontname.find('.note-current-fontname').text(selectedFont); + checkDropdownMenu($fontname, selectedFont); + + } + } + + // fontsize + var $fontsize = $container.find('.note-fontsize[data-name=fontsize]'); + $fontsize.find('.note-current-fontsize').text(styleInfo['font-size']); + checkDropdownMenu($fontsize, parseFloat(styleInfo['font-size'])); + + // lineheight + var $lineHeight = $container.find('.note-height[data-name=lineheight]'); + checkDropdownMenu($lineHeight, parseFloat(styleInfo['line-height'])); + + btnState('.btn[data-event="bold"]', function() { + return styleInfo['font-bold'] === 'bold'; + }); + btnState('.btn[data-event="italic"]', function() { + return styleInfo['font-italic'] === 'italic'; + }); + btnState('.btn[data-event="underline"]', function() { + return styleInfo['font-underline'] === 'underline'; + }); + btnState('.btn[data-event="strikethrough"]', function() { + return styleInfo['font-strikethrough'] === 'strikethrough'; + }); + btnState('.btn[data-event="superscript"]', function() { + return styleInfo['font-superscript'] === 'superscript'; + }); + btnState('.btn[data-event="subscript"]', function() { + return styleInfo['font-subscript'] === 'subscript'; + }); + btnState('.btn[data-event="justifyLeft"]', function() { + return styleInfo['text-align'] === 'left' || styleInfo['text-align'] === 'start'; + }); + btnState('.btn[data-event="justifyCenter"]', function() { + return styleInfo['text-align'] === 'center'; + }); + btnState('.btn[data-event="justifyRight"]', function() { + return styleInfo['text-align'] === 'right'; + }); + btnState('.btn[data-event="justifyFull"]', function() { + return styleInfo['text-align'] === 'justify'; + }); + btnState('.btn[data-event="insertUnorderedList"]', function() { + return styleInfo['list-style'] === 'unordered'; + }); + btnState('.btn[data-event="insertOrderedList"]', function() { + return styleInfo['list-style'] === 'ordered'; + }); + }; + + /** + * update recent color + * + * @param {Node} button + * @param {String} eventName + * @param {Mixed} value + */ + this.updateRecentColor = function(button, eventName, value) { + var $color = $(button).closest('.note-color'); + var $recentColor = $color.find('.note-recent-color'); + var colorInfo = JSON.parse($recentColor.attr('data-value')); + var sKey = eventName === 'backColor' ? 'background-color' : 'color'; + + colorInfo[eventName] = value; + $recentColor.attr('data-value', JSON.stringify(colorInfo)); + $recentColor.css(sKey, value); + }; + }; + + /** + * @class module.Toolbar + * + * Toolbar + */ + var Toolbar = function() { + var button = new Button(); + + this.update = function($toolbar, styleInfo) { + button.update($toolbar, styleInfo); + }; + + /** + * @param {Node} button + * @param {String} eventName + * @param {String} value + */ + this.updateRecentColor = function(buttonNode, eventName, value) { + button.updateRecentColor(buttonNode, eventName, value); + }; + + /** + * activate buttons exclude codeview + * @param {jQuery} $toolbar + */ + this.activate = function($toolbar) { + $toolbar.find('button, .btn') + .not('.btn[data-event="codeview"]') + .removeClass('disabled'); + }; + + /** + * deactivate buttons exclude codeview + * @param {jQuery} $toolbar + */ + this.deactivate = function($toolbar) { + $toolbar.find('button, .btn') + .not('.btn[data-event="codeview"]') + .addClass('disabled'); + }; + + /** + * @param {jQuery} $container + * @param {Boolean} [bFullscreen=false] + */ + this.updateFullscreen = function($container, bFullscreen) { + var $btn = $container.find('.btn[data-event="fullscreen"]'); + $btn.toggleClass('active', bFullscreen); + }; + + /** + * @param {jQuery} $container + * @param {Boolean} [isCodeview=false] + */ + this.updateCodeview = function($container, isCodeview) { + var $btn = $container.find('.btn[data-event="codeview"]'); + $btn.toggleClass('active', isCodeview); + + if (isCodeview) { + this.deactivate($container); + } else { + this.activate($container); + } + }; + + /** + * get button in toolbar + * + * @param {jQuery} $editable + * @param {String} name + * @return {jQuery} + */ + this.get = function($editable, name) { + var $toolbar = dom.makeLayoutInfo($editable).toolbar(); + + return $toolbar.find('[data-name=' + name + ']'); + }; + + /** + * set button state + * @param {jQuery} $editable + * @param {String} name + * @param {Boolean} [isActive=true] + */ + this.setButtonState = function($editable, name, isActive) { + isActive = (isActive === false) ? false : true; + + var $button = this.get($editable, name); + $button.toggleClass('active', isActive); + }; + }; + + var EDITABLE_PADDING = 24; + + var Statusbar = function() { + var $document = $(document); + + this.attach = function(layoutInfo, options) { + if (!options.disableResizeEditor) { + layoutInfo.statusbar().on('mousedown', hStatusbarMousedown); + } + }; + + /** + * `mousedown` event handler on statusbar + * + * @param {MouseEvent} event + */ + var hStatusbarMousedown = function(event) { + event.preventDefault(); + event.stopPropagation(); + + var $editable = dom.makeLayoutInfo(event.target).editable(); + var editableTop = $editable.offset().top - $document.scrollTop(); + + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + var options = layoutInfo.editor().data('options'); + + $document.on('mousemove', function(event) { + var nHeight = event.clientY - (editableTop + EDITABLE_PADDING); + + nHeight = (options.minHeight > 0) ? Math.max(nHeight, options.minHeight) : nHeight; + nHeight = (options.maxHeight > 0) ? Math.min(nHeight, options.maxHeight) : nHeight; + + $editable.height(nHeight); + }).one('mouseup', function() { + $document.off('mousemove'); + }); + }; + }; + + /** + * @class module.Popover + * + * Popover (http://getbootstrap.com/javascript/#popovers) + * + */ + var Popover = function() { + var button = new Button(); + + /** + * returns position from placeholder + * + * @private + * @param {Node} placeholder + * @param {Boolean} isAirMode + * @return {Object} + * @return {Number} return.left + * @return {Number} return.top + */ + var posFromPlaceholder = function(placeholder, isAirMode) { + var $placeholder = $(placeholder); + var pos = isAirMode ? $placeholder.offset() : $placeholder.position(); + var height = $placeholder.outerHeight(true); // include margin + + // popover below placeholder. + return { + left: pos.left, + top: pos.top + height + }; + }; + + /** + * show popover + * + * @private + * @param {jQuery} popover + * @param {Position} pos + */ + var showPopover = function($popover, pos) { + $popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + }; + + var PX_POPOVER_ARROW_OFFSET_X = 20; + + /** + * update current state + * @param {jQuery} $popover - popover container + * @param {Object} styleInfo - style object + * @param {Boolean} isAirMode + */ + this.update = function($popover, styleInfo, isAirMode) { + button.update($popover, styleInfo); + + var $linkPopover = $popover.find('.note-link-popover'); + if (styleInfo.anchor) { + var $anchor = $linkPopover.find('a'); + var href = $(styleInfo.anchor).attr('href'); + var target = $(styleInfo.anchor).attr('target'); + $anchor.attr('href', href).html(href); + if (!target) { + $anchor.removeAttr('target'); + } else { + $anchor.attr('target', '_blank'); + } + showPopover($linkPopover, posFromPlaceholder(styleInfo.anchor, isAirMode)); + } else { + $linkPopover.hide(); + } + + var $imagePopover = $popover.find('.note-image-popover'); + if (styleInfo.image) { + showPopover($imagePopover, posFromPlaceholder(styleInfo.image, isAirMode)); + } else { + $imagePopover.hide(); + } + + var $airPopover = $popover.find('.note-air-popover'); + if (isAirMode && !styleInfo.range.isCollapsed()) { + var rect = list.last(styleInfo.range.getClientRects()); + if (rect) { + var bnd = func.rect2bnd(rect); + showPopover($airPopover, { + left: Math.max(bnd.left + bnd.width / 2 - PX_POPOVER_ARROW_OFFSET_X, 0), + top: bnd.top + bnd.height + }); + } + } else { + $airPopover.hide(); + } + }; + + /** + * @param {Node} button + * @param {String} eventName + * @param {String} value + */ + this.updateRecentColor = function(button, eventName, value) { + button.updateRecentColor(button, eventName, value); + }; + + /** + * hide all popovers + * @param {jQuery} $popover - popover container + */ + this.hide = function($popover) { + $popover.children().hide(); + }; + }; + + /** + * @class module.Handle + * + * Handle + */ + var Handle = function(handler) { + var $document = $(document); + + /** + * `mousedown` event handler on $handle + * - controlSizing: resize image + * + * @param {MouseEvent} event + */ + var hHandleMousedown = function(event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var layoutInfo = dom.makeLayoutInfo(event.target), + $handle = layoutInfo.handle(), + $popover = layoutInfo.popover(), + $editable = layoutInfo.editable(), + $editor = layoutInfo.editor(); + + var target = $handle.find('.note-control-selection').data('target'), + $target = $(target), posStart = $target.offset(), + scrollTop = $document.scrollTop(); + + var isAirMode = $editor.data('options').airMode; + + $document.on('mousemove', function(event) { + handler.invoke('editor.resizeTo', { + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + handler.invoke('handle.update', $handle, {image: target}, isAirMode); + handler.invoke('popover.update', $popover, {image: target}, isAirMode); + }).one('mouseup', function() { + $document.off('mousemove'); + handler.invoke('editor.afterCommand', $editable); + }); + + if (!$target.data('ratio')) { // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }; + + this.attach = function(layoutInfo) { + layoutInfo.handle().on('mousedown', hHandleMousedown); + }; + + /** + * update handle + * @param {jQuery} $handle + * @param {Object} styleInfo + * @param {Boolean} isAirMode + */ + this.update = function($handle, styleInfo, isAirMode) { + var $selection = $handle.find('.note-control-selection'); + if (styleInfo.image) { + var $image = $(styleInfo.image); + var pos = isAirMode ? $image.offset() : $image.position(); + + // include margin + var imageSize = { + w: $image.outerWidth(true), + h: $image.outerHeight(true) + }; + + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', styleInfo.image); // save current image element. + var sizingText = imageSize.w + 'x' + imageSize.h; + $selection.find('.note-control-selection-info').text(sizingText); + } else { + $selection.hide(); + } + }; + + /** + * hide + * + * @param {jQuery} $handle + */ + this.hide = function($handle) { + $handle.children().hide(); + }; + }; + + var Fullscreen = function(handler) { + var $window = $(window); + var $scrollbar = $('html, body'); + + /** + * toggle fullscreen + * + * @param {Object} layoutInfo + */ + this.toggle = function(layoutInfo) { + + var $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(); + + var resize = function(size) { + $editable.css('height', size.h); + $codable.css('height', size.h); + if ($codable.data('cmeditor')) { + $codable.data('cmeditor').setsize(null, size.h); + } + }; + + $editor.toggleClass('fullscreen'); + var isFullscreen = $editor.hasClass('fullscreen'); + if (isFullscreen) { + + $editable.data('orgheight', $editable.css('height')); + + $window.on('resize', function() { + resize({ + h: $window.height() - $toolbar.outerHeight() + }); + }).trigger('resize'); + + $scrollbar.css('overflow', 'hidden'); + $toolbar.css('top', 0); + } else { + $window.off('resize'); + resize({ + h: $editable.data('orgheight') + }); + $scrollbar.css('overflow', 'visible'); + } + + handler.invoke('toolbar.updateFullscreen', $toolbar, isFullscreen); + }; + }; + + + var CodeMirror; + if (agent.hasCodeMirror) { + if (agent.isSupportAmd) { + require(['CodeMirror'], function(cm) { + CodeMirror = cm; + }); + } else { + CodeMirror = window.CodeMirror; + } + } + + /** + * @class Codeview + */ + var Codeview = function(handler) { + + this.sync = function(layoutInfo) { + var isCodeview = handler.invoke('codeview.isActivated', layoutInfo); + if (isCodeview && agent.hasCodeMirror) { + layoutInfo.codable().data('cmEditor').save(); + } + }; + + /** + * @param {Object} layoutInfo + * @return {Boolean} + */ + this.isActivated = function(layoutInfo) { + var $editor = layoutInfo.editor(); + return $editor.hasClass('codeview'); + }; + + /** + * toggle codeview + * + * @param {Object} layoutInfo + */ + this.toggle = function(layoutInfo) { + if (this.isActivated(layoutInfo)) { + this.deactivate(layoutInfo); + } else { + this.activate(layoutInfo); + } + }; + + //var originalValue; + /** + * activate code view + * + * @param {Object} layoutInfo + */ + this.activate = function(layoutInfo) { + var $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(), + $popover = layoutInfo.popover(), + $handle = layoutInfo.handle(); + + var options = $editor.data('options'); + var codeString = dom.html($editable, false); + + // >>>>>>> CK indentation function + function beautifyHTML(code, level, insideLastBlock, dictionary) { + var openTag = code.indexOf('<'); + var closeTag = code.indexOf('>'); + var chunk; + + if (openTag === 0) { + //first thing is a tag + chunk = code.substring(0, closeTag + 1); + code = code.substring(closeTag + 1); + + if (chunk.indexOf("</") === 0) { + level--; + insideLastBlock = false; + } else { + if (insideLastBlock) { + level++; + } + + //check if current tag is a self closing tag (no indent next line in this case) + var found = false; + + for (var i = 0; i < dictionary.length; i++) { + if (chunk.indexOf(dictionary[i]) === 0) { + found = true; + break; + } + } + if (!found) { + insideLastBlock = true; + } else { + insideLastBlock = false; + } + } + } else { + //first thing is content + chunk = code.substring(0, openTag); + code = code.substring(openTag); + + if (insideLastBlock) { + level++; + } + insideLastBlock = false; + } + chunk = new Array(level + 1).join(' ') + chunk.trim(); + + //console.log(level); + //console.log(chunk); + //console.log(code); + + if (code.length === 0) { + return chunk; + } + return chunk + "\n" + beautifyHTML(code.trim(), level, insideLastBlock, dictionary); + } + + //originalValue = codeString; + + var selfCloseTags = ['<img', '<br', '<hr']; + codeString = beautifyHTML(codeString, 0, false, selfCloseTags); + // CK end ----------------------- + + $codable.val(codeString); + + var buttonHeight = $toolbar.find('.btn[data-event=codeview]').height(); + var areaHeight = $(window).height() - buttonHeight; + $codable.height($editable.height()); + + handler.invoke('toolbar.updateCodeview', $toolbar, true); + handler.invoke('popover.hide', $popover); + handler.invoke('handle.hide', $handle); + + $editor.addClass('codeview'); + + $codable.focus(); + + // activate CodeMirror as codable + if (agent.hasCodeMirror) { + var cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror); + + // CodeMirror TernServer + if (options.codemirror.tern) { + var server = new CodeMirror.TernServer(options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function(cm) { + server.updateArgHints(cm); + }); + } + + // CodeMirror hasn't Padding. + if ($editor.hasClass('fullscreen')) { + cmEditor.setSize(null, areaHeight); + } + else { + cmEditor.setSize(null, $editable.outerHeight()); + } + + $codable.data('cmEditor', cmEditor); + } + }; + + /** + * deactivate code view + * + * @param {Object} layoutInfo + */ + this.deactivate = function(layoutInfo) { + var $holder = layoutInfo.holder(), + $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(); + + var options = $editor.data('options'); + + // deactivate CodeMirror as codable + if (agent.hasCodeMirror) { + var cmEditor = $codable.data('cmEditor'); + $codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + var value = dom.value($codable, options.prettifyHtml) || dom.emptyPara; + //var value = originalValue; + var isChange = $editable.html() !== value; + + $editable.html(value); + $editable.height(options.height ? $codable.height() : 'auto'); + $editor.removeClass('codeview'); + + if (isChange) { + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'change' + )($editable.html(), $editable); + } + + $editable.focus(); + + handler.invoke('toolbar.updateCodeview', $toolbar, false); + }; + }; + + var DragAndDrop = function(handler) { + var $document = $(document); + + /** + * attach Drag and Drop Events + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options + */ + this.attach = function(layoutInfo, options) { + if (options.airMode || options.disableDragAndDrop) { + // prevent default drop event + $document.on('drop', function(e) { + e.preventDefault(); + }); + } else { + this.attachDragAndDropEvent(layoutInfo, options); + } + }; + + /** + * attach Drag and Drop Events + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options + */ + this.attachDragAndDropEvent = function(layoutInfo, options) { + var collection = $(), + $editor = layoutInfo.editor(), + $dropzone = layoutInfo.dropzone(), + $dropzoneMessage = $dropzone.find('.note-dropzone-message'); + + // show dropzone on dragenter when dragging a object to document + // -but only if the editor is visible, i.e. has a positive width and height + $document.on('dragenter', function(e) { + var isCodeview = handler.invoke('codeview.isActivated', layoutInfo); + var hasEditorSize = $editor.width() > 0 && $editor.height() > 0; + if (!isCodeview && !collection.length && hasEditorSize) { + $editor.addClass('dragover'); + $dropzone.width($editor.width()); + $dropzone.height($editor.height()); + $dropzoneMessage.text(options.langInfo.image.dragImageHere); + } + collection = collection.add(e.target); + }).on('dragleave', function(e) { + collection = collection.not(e.target); + if (!collection.length) { + $editor.removeClass('dragover'); + } + }).on('drop', function() { + collection = $(); + $editor.removeClass('dragover'); + }); + + // change dropzone's message on hover. + $dropzone.on('dragenter', function() { + $dropzone.addClass('hover'); + $dropzoneMessage.text(options.langInfo.image.dropImage); + }).on('dragleave', function() { + $dropzone.removeClass('hover'); + $dropzoneMessage.text(options.langInfo.image.dragImageHere); + }); + + // attach dropImage + $dropzone.on('drop', function(event) { + + var dataTransfer = event.originalEvent.dataTransfer; + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + event.preventDefault(); + layoutInfo.editable().focus(); + handler.insertImages(layoutInfo, dataTransfer.files); + } else { + var insertNodefunc = function() { + layoutInfo.holder().materialnote('insertNode', this); + }; + + for (var i = 0, len = dataTransfer.types.length; i < len; i++) { + var type = dataTransfer.types[i]; + var content = dataTransfer.getData(type); + + if (type.toLowerCase().indexOf('text') > -1) { + layoutInfo.holder().materialnote('pasteHTML', content); + } else { + $(content).each(insertNodefunc); + } + } + } + }).on('dragover', false); // prevent default dragover event + }; + }; + + var Clipboard = function(handler) { + + var $paste; + + this.attach = function(layoutInfo) { + + if (window.clipboardData || agent.isFF) { + $paste = $('<div />').attr('contenteditable', true).css({ + position : 'absolute', + left : -100000, + 'opacity' : 0 + }); + layoutInfo.editable().after($paste); + $paste.one('paste', hPasteClipboardImage); + + layoutInfo.editable().on('keydown', function(e) { + if (e.ctrlKey && e.keyCode === 86) { // CTRL+V + handler.invoke('saveRange', layoutInfo.editable()); + if ($paste) { + $paste.focus(); + } + } + }); + } + + layoutInfo.editable().on('paste', hPasteClipboardImage); + }; + + /** + * paste clipboard image + * + * @param {Event} event + */ + var hPasteClipboardImage = function(event) { + + var clipboardData = event.originalEvent.clipboardData; + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + var $editable = layoutInfo.editable(); + + if (!clipboardData || !clipboardData.items || !clipboardData.items.length) { + + var callbacks = $editable.data('callbacks'); + // only can run if it has onImageUpload method + if (!callbacks.onImageUpload) { + return; + } + + setTimeout(function() { + if (!$paste) { + return; + } + + var imgNode = $paste[0].firstChild; + if (!imgNode) { + return; + } + + handler.invoke('restoreRange', $editable); + if (!dom.isImg(imgNode)) { + handler.invoke('pasteHTML', $editable, $paste.html()); + } else { + var datauri = imgNode.src; + + var data = atob(datauri.split(',')[1]); + var array = new Uint8Array(data.length); + for (var i = 0; i < data.length; i++) { + array[i] = data.charCodeAt(i); + } + + var blob = new Blob([array], { type : 'image/png' }); + blob.name = 'clipboard.png'; + handler.invoke('focus', $editable); + handler.insertImages(layoutInfo, [blob]); + } + + $paste.remove(); + + }, 0); + + return; + } + + var item = list.head(clipboardData.items); + var isClipboardImage = item.kind === 'file' && item.type.indexOf('image/') !== -1; + + if (isClipboardImage) { + handler.insertImages(layoutInfo, [item.getAsFile()]); + } + + handler.invoke('editor.afterCommand', $editable); + }; + }; + + var LinkDialog = function(handler) { + + /** + * toggle button status + * + * @private + * @param {jQuery} $btn + * @param {Boolean} isEnable + */ + var toggleBtn = function($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }; + + /** + * bind enter key + * + * @private + * @param {jQuery} $input + * @param {jQuery} $btn + */ + var bindEnterKey = function($input, $btn) { + $input.on('keypress', function(event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @param {Object} linkInfo + * @return {Promise} + */ + this.showLinkDialog = function($editable, $dialog, linkInfo) { + return $.Deferred(function(deferred) { + var $linkDialog = $dialog.find('.note-link-dialog'); + var $linkText = $linkDialog.find('.note-link-text'), + $linkTextLabel = $linkText.next('label'), + $linkUrl = $linkDialog.find('.note-link-url'), + $linkBtn = $linkDialog.find('.note-link-btn'), + $closeBtn = $linkDialog.find('.btnClose'); + var $openInNewWindow = $linkDialog.find('input[type=checkbox]'); + + $linkDialog.openModal(); + $linkText.val(linkInfo.text); + if (linkInfo.text.length > 0) $linkTextLabel.addClass('active'); + + $linkText.on('keyup', function() { + toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + // if linktext was modified by keyup, + // stop cloning text from linkUrl + linkInfo.text = $linkText.val(); + }); + + $closeBtn.click(function(event) { + event.preventDefault(); + + $linkDialog.closeModal(); + }); + + // if no url was given, copy text to url + if (!linkInfo.url) { + linkInfo.url = linkInfo.text || 'http://'; + toggleBtn($linkBtn, linkInfo.text); + } + + $linkUrl.on('keyup', function() { + toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + // display same link on `Text to display` input + // when create a new link + if (!linkInfo.text) { + $linkTextLabel.addClass('active'); + $linkText.val($linkUrl.val()); + } + }).val(linkInfo.url).trigger('focus').trigger('select'); + + bindEnterKey($linkUrl, $linkBtn); + bindEnterKey($linkText, $linkBtn); + + $openInNewWindow.prop('checked', linkInfo.newWindow); + + $linkBtn.one('click', function(event) { + event.preventDefault(); + + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + newWindow: $openInNewWindow.is(':checked') + }); + + $('.note-link-text').val(''); + $('.note-link-text').next('label').removeClass('active'); + $('.note-link-url').val(''); + $linkDialog.closeModal(); + }); + }).promise(); + }; + + /** + * @param {Object} layoutInfo + */ + this.show = function(layoutInfo) { + var $editor = layoutInfo.editor(), + $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(), + $popover = layoutInfo.popover(), + linkInfo = handler.invoke('editor.getLinkInfo', $editable); + + var options = $editor.data('options'); + + handler.invoke('editor.saveRange', $editable); + this.showLinkDialog($editable, $dialog, linkInfo).then(function(linkInfo) { + handler.invoke('editor.restoreRange', $editable); + handler.invoke('editor.createLink', $editable, linkInfo, options); + // hide popover after creating link + handler.invoke('popover.hide', $popover); + }).fail(function() { + handler.invoke('editor.restoreRange', $editable); + }); + }; + }; + + var ImageDialog = function(handler) { + /** + * toggle button status + * + * @private + * @param {jQuery} $btn + * @param {Boolean} isEnable + */ + var toggleBtn = function($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }; + + /** + * bind enter key + * + * @private + * @param {jQuery} $input + * @param {jQuery} $btn + */ + var bindEnterKey = function($input, $btn) { + $input.on('keypress', function(event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + this.show = function(layoutInfo) { + var $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(); + + handler.invoke('editor.saveRange', $editable); + this.showImageDialog($editable, $dialog).then(function(data) { + handler.invoke('editor.restoreRange', $editable); + + if (typeof data === 'string') { + // image url + handler.invoke('editor.insertImage', $editable, data); + } else { + // array of files + handler.insertImages(layoutInfo, data); + } + }).fail(function() { + handler.invoke('editor.restoreRange', $editable); + }); + }; + + /** + * show image dialog + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showImageDialog = function($editable, $dialog) { + return $.Deferred(function(deferred) { + var $imageDialog = $dialog.find('.note-image-dialog'); + var $imageInput = $dialog.find('.note-image-input'), + $imageUrl = $dialog.find('.note-image-url'), + $imageBtn = $dialog.find('.note-image-btn'), + $closeBtn = $imageDialog.find('.btnClose'); + + $imageDialog.openModal(); + // Cloning imageInput to clear element. + $imageInput.replaceWith($imageInput.clone() + .on('change', function() { + deferred.resolve(this.files || this.value); + $imageUrl.val(''); + $imageDialog.closeModal(); + deferred.resolve(); + }) + .val('') + ); + + $imageBtn.click(function(event) { + event.preventDefault(); + + deferred.resolve($imageUrl.val()); + $imageUrl.val(''); + $imageDialog.closeModal(); + deferred.resolve(); + }); + + $closeBtn.click(function(event) { + event.preventDefault(); + + $imageDialog.closeModal(); + }); + + $imageUrl.on('keyup paste', function(event) { + var url; + + if (event.type === 'paste') { + url = event.originalEvent.clipboardData.getData('text'); + } else { + url = $imageUrl.val(); + } + toggleBtn($imageBtn, url); + }); + + bindEnterKey($imageUrl, $imageBtn); + }); + }; + }; + + var HelpDialog = function(handler) { + /** + * show help dialog + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showHelpDialog = function($editable, $dialog) { + return $.Deferred(function(deferred) { + var $helpDialog = $dialog.find('.note-help-dialog'); + + $helpDialog.openModal(); + deferred.resolve(); + }).promise(); + }; + + /** + * @param {Object} layoutInfo + */ + this.show = function(layoutInfo) { + var $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(); + + handler.invoke('editor.saveRange', $editable, true); + this.showHelpDialog($editable, $dialog).then(function() { + handler.invoke('editor.restoreRange', $editable); + }); + }; + }; + + + /** + * @class EventHandler + * + * EventHandler + * - TODO: new instance per a editor + */ + var EventHandler = function() { + /** + * Modules + */ + var modules = this.modules = { + editor: new Editor(this), + toolbar: new Toolbar(this), + statusbar: new Statusbar(this), + popover: new Popover(this), + handle: new Handle(this), + fullscreen: new Fullscreen(this), + codeview: new Codeview(this), + dragAndDrop: new DragAndDrop(this), + clipboard: new Clipboard(this), + linkDialog: new LinkDialog(this), + imageDialog: new ImageDialog(this), + helpDialog: new HelpDialog(this) + }; + + /** + * invoke module's method + * + * @param {String} moduleAndMethod - ex) 'editor.redo' + * @param {...*} arguments - arguments of method + * @return {*} + */ + this.invoke = function() { + var moduleAndMethod = list.head(list.from(arguments)); + var args = list.tail(list.from(arguments)); + + var splits = moduleAndMethod.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && list.head(splits); + var methodName = hasSeparator ? list.last(splits) : list.head(splits); + + var module = this.getModule(moduleName); + var method = module[methodName]; + + return method && method.apply(module, args); + }; + + /** + * returns module + * + * @param {String} moduleName - name of module + * @return {Module} - defaults is editor + */ + this.getModule = function(moduleName) { + return this.modules[moduleName] || this.modules.editor; + }; + + /** + * @param {jQuery} $holder + * @param {Object} callbacks + * @param {String} eventNamespace + * @returns {Function} + */ + var bindCustomEvent = this.bindCustomEvent = function($holder, callbacks, eventNamespace) { + return function() { + var callback = callbacks[func.namespaceToCamel(eventNamespace, 'on')]; + if (callback) { + callback.apply($holder[0], arguments); + } + return $holder.trigger('materialnote.' + eventNamespace, arguments); + }; + }; + + /** + * insert Images from file array. + * + * @private + * @param {Object} layoutInfo + * @param {File[]} files + */ + this.insertImages = function(layoutInfo, files) { + var $editor = layoutInfo.editor(), + $editable = layoutInfo.editable(), + $holder = layoutInfo.holder(); + + var callbacks = $editable.data('callbacks'); + var options = $editor.data('options'); + + // If onImageUpload options setted + if (callbacks.onImageUpload) { + bindCustomEvent($holder, callbacks, 'image.upload')(files); + // else insert Image as dataURL + } else { + $.each(files, function(idx, file) { + var filename = file.name; + if (options.maximumImageFileSize && options.maximumImageFileSize < file.size) { + bindCustomEvent($holder, callbacks, 'image.upload.error')(options.langInfo.image.maximumFileSizeError); + } else { + async.readFileAsDataURL(file).then(function(sDataURL) { + modules.editor.insertImage($editable, sDataURL, filename); + }).fail(function() { + bindCustomEvent($holder, callbacks, 'image.upload.error')(options.langInfo.image.maximumFileSizeError); + }); + } + }); + } + }; + + var commands = { + /** + * @param {Object} layoutInfo + */ + showLinkDialog: function(layoutInfo) { + modules.linkDialog.show(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + showImageDialog: function(layoutInfo) { + modules.imageDialog.show(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + showHelpDialog: function(layoutInfo) { + modules.helpDialog.show(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + fullscreen: function(layoutInfo) { + modules.fullscreen.toggle(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + codeview: function(layoutInfo) { + modules.codeview.toggle(layoutInfo); + } + }; + + var hMousedown = function(event) { + //preventDefault Selection for FF, IE8+ + if (dom.isImg(event.target)) { + event.preventDefault(); + } + }; + + var hKeyupAndMouseup = function(event) { + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + modules.editor.removeBogus(layoutInfo.editable()); + hToolbarAndPopoverUpdate(event); + }; + + var hToolbarAndPopoverUpdate = function(event) { + // delay for range after mouseup + setTimeout(function() { + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + var styleInfo = modules.editor.currentStyle(event.target); + if (!styleInfo) { return; } + + var isAirMode = layoutInfo.editor().data('options').airMode; + if (!isAirMode) { + modules.toolbar.update(layoutInfo.toolbar(), styleInfo); + } + + modules.popover.update(layoutInfo.popover(), styleInfo, isAirMode); + modules.handle.update(layoutInfo.handle(), styleInfo, isAirMode); + }, 0); + }; + + var hScroll = function(event) { + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + //hide popover and handle when scrolled + modules.popover.hide(layoutInfo.popover()); + modules.handle.hide(layoutInfo.handle()); + }; + + var hToolbarAndPopoverMousedown = function(event) { + // prevent default event when insertTable (FF, Webkit) + var $btn = $(event.target).closest('[data-event]'); + if ($btn.length) { + event.preventDefault(); + } + }; + + var hToolbarAndPopoverClick = function(event) { + var $btn = $(event.target).closest('[data-event]'); + + if ($btn.length) { + var eventName = $btn.attr('data-event'), + value = $btn.attr('data-value'), + hide = $btn.attr('data-hide'); + + var layoutInfo = dom.makeLayoutInfo(event.target); + + // before command: detect control selection element($target) + var $target; + if ($.inArray(eventName, ['resize', 'floatMe', 'removeMedia', 'imageShape', 'imageClass']) !== -1) { + var $selection = layoutInfo.handle().find('.note-control-selection'); + $target = $($selection.data('target')); + } + + // If requested, hide the popover when the button is clicked. + // Useful for things like showHelpDialog. + if (hide) { + $btn.parents('.popover').hide(); + } + + if ($.isFunction($.materialnote.pluginEvents[eventName])) { + $.materialnote.pluginEvents[eventName](event, modules.editor, layoutInfo, value); + } else if (modules.editor[eventName]) { // on command + var $editable = layoutInfo.editable(); + $editable.focus(); + modules.editor[eventName]($editable, value, $target); + event.preventDefault(); + } else if (commands[eventName]) { + commands[eventName].call(this, layoutInfo); + event.preventDefault(); + } + + // after command + if ($.inArray(eventName, ['backColor', 'foreColor']) !== -1) { + var options = layoutInfo.editor().data('options', options); + var module = options.airMode ? modules.popover : modules.toolbar; + module.updateRecentColor(list.head($btn), eventName, value); + } + + hToolbarAndPopoverUpdate(event); + } + }; + + var gridUnit = 26; + var hDimensionPickerMove = function(event, options) { + var $picker = $(event.target.parentNode); // target is mousecatcher + var $dropdown = $picker.parent(); + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + var $hoverableOption = $dropdown.find("[id$='-hoverable']"); + var $borderedOption = $dropdown.find("[id$='-bordered']"); + var $stripedOption = $dropdown.find("[id$='-striped']"); + var $responsiveOption = $dropdown.find("[id$='-responsive']"); + + var posOffset; + // HTML5 with jQuery - e.offsetX is undefined in Firefox + if (event.offsetX === undefined) { + var posCatcher = $(event.target).offset(); + + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / gridUnit) || 1, + r: Math.ceil(posOffset.y / gridUnit) || 1 + }; + /*console.log(posOffset); + console.log(dim); + console.log('------------------');*/ + + var tableOptions = []; + if ($hoverableOption.is(':checked')) tableOptions.push('hoverable'); + if ($borderedOption.is(':checked')) tableOptions.push('bordered'); + if ($stripedOption.is(':checked')) tableOptions.push('striped'); + if ($responsiveOption.is(':checked')) tableOptions.push('responsive-table'); + + $highlighted.css({ width: (dim.c * gridUnit) + 'px', height: (dim.r * gridUnit) + 'px' }); + $catcher.attr('data-value', dim.c + 'x' + dim.r + 'x' + tableOptions.join('x')); + + //if (3 < dim.c && dim.c < options.insertTableMaxSize.col) { + $unhighlighted.css({ width: (options.insertTableMaxSize * gridUnit) + 'px'}); + //} + + if (3 < dim.r && dim.r < options.insertTableMaxSize.row) { + $unhighlighted.css({ height: ((dim.r + 1) * gridUnit) + 'px'}); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + }; + + /** + * bind KeyMap on keydown + * + * @param {Object} layoutInfo + * @param {Object} keyMap + */ + this.bindKeyMap = function(layoutInfo, keyMap) { + var $editor = layoutInfo.editor(); + var $editable = layoutInfo.editable(); + + $editable.on('keydown', function(event) { + var keys = []; + + // modifier + if (event.metaKey) { keys.push('CMD'); } + if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); } + if (event.shiftKey) { keys.push('SHIFT'); } + + // keycode + var keyName = key.nameFromCode[event.keyCode]; + if (keyName) { + keys.push(keyName); + } + + var pluginEvent; + var keyString = keys.join('+'); + var eventName = keyMap[keyString]; + if (eventName) { + // FIXME materialnote doesn't support event pipeline yet. + // - Plugin -> Base Code + pluginEvent = $.materialnote.pluginEvents[keyString]; + if ($.isFunction(pluginEvent)) { + if (pluginEvent(event, modules.editor, layoutInfo)) { + return false; + } + } + + pluginEvent = $.materialnote.pluginEvents[eventName]; + + if ($.isFunction(pluginEvent)) { + pluginEvent(event, modules.editor, layoutInfo); + } else if (modules.editor[eventName]) { + modules.editor[eventName]($editable, $editor.data('options')); + event.preventDefault(); + } else if (commands[eventName]) { + commands[eventName].call(this, layoutInfo); + event.preventDefault(); + } + } else if (key.isEdit(event.keyCode)) { + modules.editor.afterCommand($editable); + } + }); + }; + + /** + * attach eventhandler + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options - user options include custom event handlers + */ + this.attach = function(layoutInfo, options) { + // handlers for editable + if (options.shortcuts) { + this.bindKeyMap(layoutInfo, options.keyMap[agent.isMac ? 'mac' : 'pc']); + } + layoutInfo.editable().on('mousedown', hMousedown); + layoutInfo.editable().on('keyup mouseup', hKeyupAndMouseup); + layoutInfo.editable().on('scroll', hScroll); + + // handler for clipboard + modules.clipboard.attach(layoutInfo, options); + + // handler for handle and popover + modules.handle.attach(layoutInfo, options); + layoutInfo.popover().on('click', hToolbarAndPopoverClick); + layoutInfo.popover().on('mousedown', hToolbarAndPopoverMousedown); + + // handler for drag and drop + modules.dragAndDrop.attach(layoutInfo, options); + + // handlers for frame mode (toolbar, statusbar) + if (!options.airMode) { + // handler for toolbar + layoutInfo.toolbar().on('click', hToolbarAndPopoverClick); + layoutInfo.toolbar().on('mousedown', hToolbarAndPopoverMousedown); + + // handler for statusbar + modules.statusbar.attach(layoutInfo, options); + } + + // handler for table dimension + var $catcherContainer = options.airMode ? layoutInfo.popover() : + layoutInfo.toolbar(); + var $catcher = $catcherContainer.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: options.insertTableMaxSize.col * gridUnit + 'px', + height: options.insertTableMaxSize.row * gridUnit + 'px' + }).on('mousemove', function(event) { + hDimensionPickerMove(event, options); + }); + + // save options on editor + layoutInfo.editor().data('options', options); + + // ret styleWithCSS for backColor / foreColor clearing with 'inherit'. + if (!agent.isMSIE) { + // [workaround] for Firefox + // - protect FF Error: NS_ERROR_FAILURE: Failure + setTimeout(function() { + document.execCommand('styleWithCSS', 0, options.styleWithSpan); + }, 0); + } + + // History + var history = new History(layoutInfo.editable()); + layoutInfo.editable().data('NoteHistory', history); + + // All editor status will be saved on editable with jquery's data + // for support multiple editor with singleton object. + layoutInfo.editable().data('callbacks', { + onInit: options.onInit, + onFocus: options.onFocus, + onBlur: options.onBlur, + onKeydown: options.onKeydown, + onKeyup: options.onKeyup, + onMousedown: options.onMousedown, + onEnter: options.onEnter, + onPaste: options.onPaste, + onBeforeCommand: options.onBeforeCommand, + onChange: options.onChange, + onImageUpload: options.onImageUpload, + onImageUploadError: options.onImageUploadError, + onMediaDelete: options.onMediaDelete, + onToolbarClick: options.onToolbarClick + }); + + // Textarea: auto filling the code before form submit. + if (dom.isTextarea(list.head(layoutInfo.holder()))) { + layoutInfo.holder().closest('form').submit(function() { + layoutInfo.holder().val(layoutInfo.holder().code()); + }); + } + }; + + /** + * attach jquery custom event + * + * @param {Object} layoutInfo - layout Informations + */ + this.attachCustomEvent = function(layoutInfo, options) { + var $holder = layoutInfo.holder(); + var $editable = layoutInfo.editable(); + var callbacks = $editable.data('callbacks'); + + $editable.focus(bindCustomEvent($holder, callbacks, 'focus')); + $editable.blur(bindCustomEvent($holder, callbacks, 'blur')); + + $editable.keydown(function(event) { + if (event.keyCode === key.code.ENTER) { + bindCustomEvent($holder, callbacks, 'enter').call(this, event); + } + bindCustomEvent($holder, callbacks, 'keydown').call(this, event); + }); + $editable.keyup(bindCustomEvent($holder, callbacks, 'keyup')); + + $editable.on('mousedown', bindCustomEvent($holder, callbacks, 'mousedown')); + $editable.on('mouseup', bindCustomEvent($holder, callbacks, 'mouseup')); + $editable.on('scroll', bindCustomEvent($holder, callbacks, 'scroll')); + + $editable.on('paste', bindCustomEvent($holder, callbacks, 'paste')); + + // [workaround] for old IE - IE8 don't have input events + // - TODO check IE version + var changeEventName = agent.isMSIE ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input'; + $editable.on(changeEventName, function() { + bindCustomEvent($holder, callbacks, 'change')($editable.html(), $editable); + }); + + if (!options.airMode) { + layoutInfo.toolbar().click(bindCustomEvent($holder, callbacks, 'toolbar.click')); + layoutInfo.popover().click(bindCustomEvent($holder, callbacks, 'popover.click')); + } + + // Textarea: auto filling the code before form submit. + if (dom.isTextarea(list.head($holder))) { + $holder.closest('form').submit(function(e) { + bindCustomEvent($holder, callbacks, 'submit').call(this, e, $holder.code()); + }); + } + + // fire init event + bindCustomEvent($holder, callbacks, 'init')(layoutInfo); + + // fire plugin init event + for (var i = 0, len = $.materialnote.plugins.length; i < len; i++) { + if ($.isFunction($.materialnote.plugins[i].init)) { + $.materialnote.plugins[i].init(layoutInfo); + } + } + }; + + this.detach = function(layoutInfo, options) { + layoutInfo.holder().off(); + layoutInfo.editable().off(); + + layoutInfo.popover().off(); + layoutInfo.handle().off(); + layoutInfo.dialog().off(); + + if (!options.airMode) { + layoutInfo.dropzone().off(); + layoutInfo.toolbar().off(); + layoutInfo.statusbar().off(); + } + }; + }; + + /** + * @class Renderer + * + * renderer + * + * rendering toolbar and editable + */ + var Renderer = function() { + + /** + * bootstrap button template + * @private + * @param {String} label button name + * @param {Object} [options] button options + * @param {String} [options.event] data-event + * @param {String} [options.className] button's class name + * @param {String} [options.value] data-value + * @param {String} [options.title] button's title for popup + * @param {String} [options.dropdown] dropdown html + * @param {String} [options.hide] data-hide + */ + + // >>>>>>> CK altered + var tplButton = function(label, options) { + var event = options.event; + var value = options.value; + var title = options.title; + var style = options.style; + var btnClassName = options.btnClassName; + var className = options.className; + var dropdown = options.dropdown; + var hide = options.hide; + + if (!dropdown) { + var button = [ + '<div class="waves-effect waves-light btn', + (className ? " " + className : '') + '"', + (title ? ' title="' + title + '"' : ''), + (style ? ' style="' + style + '"' : ''), + (event ? ' data-event="' + event + '"' : ''), + (value ? ' data-value=\'' + value + '\'' : ''), + (hide ? ' data-hide=\'' + hide + '\'' : ''), + ' tabindex="-1">' + label + '</div>' + ].join(''); + + return button; + } else { + var list = [ + '<div class="btn-group', + (className ? " " + className : '') + '">', + '<button class="waves-effect waves-light btn dropdown ' + (btnClassName ? btnClassName : '') + '"', + (title ? ' title="' + title + '"' : ''), + (event ? ' data-event="' + event + '"' : ''), + (value ? ' data-value=\'' + value + '\'' : ''), + (hide ? ' data-hide=\'' + hide + '\'' : ''), + '><i class="material-icons left">arrow_drop_down</i>' + label + '</button>', + dropdown, + '</div>' + ].join(''); + + return list; + } + }; + + /** + * bootstrap icon button template + * @private + * @param {String} iconClassName + * @param {Object} [options] + * @param {String} [options.event] + * @param {String} [options.value] + * @param {String} [options.title] + * @param {String} [options.dropdown] + */ + // >>>>>>> CK + var tplIconButton = function(iconClassName, options) { + var label = '<i class="material-icons">' + iconClassName + '</i>'; + return tplButton(label, options); + }; + + /** + * bootstrap popover template + * @private + * @param {String} className + * @param {String} content + */ + var tplPopover = function(className, content) { + var $popover = $('<div class="' + className + ' popover bottom in" style="display: none;">' + + '<div class="arrow"></div>' + + '<div class="popover-content">' + + '</div>' + + '</div>'); + + $popover.find('.popover-content').append(content); + return $popover; + }; + + /** + * bootstrap dialog template + * + * @param {String} className + * @param {String} [title=''] + * @param {String} body + * @param {String} [footer=''] + */ + // >>>>>>> CK dialog + var tplDialog = function(className, title, body, footer) { + + var modal = [ + '<div class="' + className + ' modal modal-fixed-footer">', + '<div class="modal-content">', + (title ? '<h4>' + title + '</h4>' : ''), + '<p>' + body + '</p>', + '</div>', + (footer ? '<div class="modal-footer">' + footer + '</div>' : ''), + '</div>' + ].join(''); + + return modal; + }; + + var tplButtonInfo = { + picture: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.image.image, { + event: 'showImageDialog', + title: lang.image.image, + hide: true + }); + }, + link: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.link.link, { + event: 'showLinkDialog', + title: lang.link.link, + hide: true + }); + }, + table: function(lang, options) { + var dropdown = '<ul class="note-table dropdown-menu">' + + '<div class="row">' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-bordered" checked="checked" /><label for="' + materialUniqueId + '-bordered">' + lang.table.bordered + '</label></div>' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-striped" checked="checked" /><label for="' + materialUniqueId + '-striped">' + lang.table.striped + '</label></div>' + + '</div>' + + '<div class="row">' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-hoverable" checked="checked" /><label for="' + materialUniqueId + '-hoverable">' + lang.table.hoverable + '</label></div>' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-responsive" checked="checked" /><label for="' + materialUniqueId + '-responsive">' + lang.table.responsive + '</label></div>' + + '</div>' + + '<div class="note-dimension-picker">' + + '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>' + + '<div class="note-dimension-picker-highlighted"></div>' + + '<div class="note-dimension-picker-unhighlighted"></div>' + + '</div>' + + '<div class="note-dimension-display"> 1 x 1 </div>' + + '</ul>'; + return tplIconButton(options.iconPrefix + options.icons.table.table, { + title: lang.table.table, + dropdown: dropdown + }); + }, + style: function(lang, options) { + var items = options.styleTags.reduce(function(memo, v) { + var label = lang.style[v === 'p' ? 'normal' : v]; + + return memo + '<li><div data-event="formatBlock" data-value="' + v + '">' + + ((v === 'p' || v === 'pre') ? label : '<' + v + '>' + label + '</' + v + '>') + + '</div></li>'; + }, ''); + + return tplIconButton(options.iconPrefix + options.icons.style.style, { + title: lang.style.style, + dropdown: '<ul class="dropdown-menu largeDropdown">' + items + '</ul>' + }); + }, + fontname: function(lang, options) { + var realFontList = []; + var items = options.fontNames.reduce(function(memo, v) { + if (!agent.isFontInstalled(v) && options.fontNamesIgnoreCheck.indexOf(v) === -1) { + return memo; + } + realFontList.push(v); + return memo + '<li><div data-event="fontName" data-value="' + v + '" style="font-family:\'' + v + '\'">' + + '<i class="material-icons tiny transparent">' + options.iconPrefix + options.icons.misc.check + '</i> ' + v + '</div></li>'; + }, ''); + + var hasDefaultFont = agent.isFontInstalled(options.defaultFontName); + var defaultFontName = (hasDefaultFont) ? options.defaultFontName : realFontList[0]; + var label = '<div class="note-current-fontname">' + defaultFontName + '</div>'; + console.log('editing right file...') + return tplButton(label, { + title: lang.font.name, + className: 'note-fontname', + dropdown: '<ul class="dropdown-menu note-check">' + items + '</ul>' + }); + }, + fontsize: function(lang, options) { + var items = options.fontSizes.reduce(function(memo, v) { + return memo + '<li><div data-event="fontSize" data-value="' + v + '">' + + '<i class="material-icons tiny transparent">' + options.iconPrefix + options.icons.misc.check + '</i> ' + v + + '</div></li>'; + }, ''); + + var label = '<span class="note-current-fontsize">15</span>'; + return tplButton(label, { + title: lang.font.size, + className: 'note-fontsize', + dropdown: '<ul class="dropdown-menu note-check">' + items + '</ul>' + }); + }, + color: function(lang, options) { + // >>>>>>> CK + var colorButtonLabel = '<i class="material-icons">' + options.icons.color.recent + '</i>', + colorButton = tplButton(colorButtonLabel, { + className: 'note-recent-color', + title: lang.color.recent, + style: "color: " + options.defaultTextColor + "; background-color: " + options.defaultBackColor + ";", + event: 'color', + value: '{"backColor": "' + options.defaultBackColor + '"}' + }); + + var dropdown = '<ul id="colors" class="dropdown-menu">' + + '<li>' + + '<div class="col s12">' + + '<ul class="tabs">' + + '<li class="tab"><span class="active">' + lang.color.foreground + '</span></li>' + + '<li class="tab"><span>' + lang.color.background + '</span></li>' + + '</ul>' + + '</div>' + + '<div class="col s12 colorTable">' + + '<div id="' + materialUniqueId + '-foreColor">' + + '<div class="note-color-reset waves-effect waves-light btn" data-event="foreColor" data-value="' + options.defaultTextColor + '" title="' + lang.color.reset + '">' + + lang.color.resetToDefault + + '</div>' + + '<div class="colorName"></div>' + + '<div class="note-color-palette" data-target-event="foreColor"></div>' + + '</div>' + + '<div id="' + materialUniqueId + '-backColor">' + + '<div class="note-color-reset waves-effect waves-light btn" data-event="backColor"' + ' data-value="' + options.defaultBackColor + '" title="' + lang.color.transparent + '">' + + lang.color.setTransparent + + '</div>' + + '<div class="colorName"></div>' + + '<div class="note-color-palette" data-target-event="backColor"></div>' + + '</div>' + + '</div>' + + '</li>' + + '</ul>'; + + var moreButton = tplButton('', { + title: lang.color.more, + className: 'closeLeft', + dropdown: dropdown + }); + + return moreButton + colorButton; + }, + bold: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.bold, { + event: 'bold', + title: lang.font.bold + }); + }, + italic: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.italic, { + event: 'italic', + title: lang.font.italic + }); + }, + underline: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.underline, { + event: 'underline', + title: lang.font.underline + }); + }, + strikethrough: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.strikethrough, { + event: 'strikethrough', + title: lang.font.strikethrough + }); + }, + superscript: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.superscript, { + event: 'superscript', + title: lang.font.superscript + }); + }, + subscript: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.subscript, { + event: 'subscript', + title: lang.font.subscript + }); + }, + clear: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.clear, { + event: 'removeFormat', + title: lang.font.clear + }); + }, + ul: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.lists.unordered, { + event: 'insertUnorderedList', + title: lang.lists.unordered + }); + }, + ol: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.lists.ordered, { + event: 'insertOrderedList', + title: lang.lists.ordered + }); + }, + //>>>>>>> CK paragraph single buttons + leftButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.left, { + title: lang.paragraph.left, + event: 'justifyLeft' + }); + }, + centerButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.center, { + title: lang.paragraph.center, + event: 'justifyCenter' + }); + }, + rightButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.right, { + title: lang.paragraph.right, + event: 'justifyRight' + }); + }, + justifyButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.justify, { + title: lang.paragraph.justify, + event: 'justifyFull' + }); + }, + outdentButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.outdent, { + title: lang.paragraph.outdent, + event: 'outdent' + }); + }, + indentButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.indent, { + title: lang.paragraph.indent, + event: 'indent' + }); + }, + + paragraph: function(lang, options) { + var leftButton = tplIconButton(options.iconPrefix + options.icons.paragraph.left, { + title: lang.paragraph.left, + event: 'justifyLeft' + }); + var centerButton = tplIconButton(options.iconPrefix + options.icons.paragraph.center, { + title: lang.paragraph.center, + event: 'justifyCenter' + }); + var rightButton = tplIconButton(options.iconPrefix + options.icons.paragraph.right, { + title: lang.paragraph.right, + event: 'justifyRight' + }); + var justifyButton = tplIconButton(options.iconPrefix + options.icons.paragraph.justify, { + title: lang.paragraph.justify, + event: 'justifyFull' + }); + + var outdentButton = tplIconButton(options.iconPrefix + options.icons.paragraph.outdent, { + title: lang.paragraph.outdent, + event: 'outdent' + }); + var indentButton = tplIconButton(options.iconPrefix + options.icons.paragraph.indent, { + title: lang.paragraph.indent, + event: 'indent' + }); + + var dropdown = '<ul class="dropdown-menu">' + + '<div class="note-align btn-group">' + + leftButton + centerButton + rightButton + justifyButton + + '</div>' + + '<div class="note-list btn-group">' + + indentButton + outdentButton + + '</div>' + + '</ul>'; + + return tplIconButton(options.iconPrefix + options.icons.paragraph.paragraph, { + title: lang.paragraph.paragraph, + dropdown: dropdown + }); + }, + lineheight: function(lang, options) { + var items = options.lineHeights.reduce(function(memo, v) { + return memo + '<li><div data-event="lineHeight" data-value="' + parseFloat(v) + '">' + + '<i class="material-icons tiny transparent">' + options.iconPrefix + options.icons.misc.check + '</i> ' + v + + '</div></li>'; + }, ''); + + return tplIconButton(options.iconPrefix + options.icons.font.height, { + title: lang.font.height, + className: 'note-height', + dropdown: '<ul class="dropdown-menu note-check">' + items + '</ul>' + }); + + }, + help: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.options.help, { + event: 'showHelpDialog', + title: lang.options.help, + hide: true + }); + }, + fullscreen: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.options.fullscreen, { + event: 'fullscreen', + title: lang.options.fullscreen + }); + }, + codeview: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.options.codeview, { + event: 'codeview', + title: lang.options.codeview + }); + }, + undo: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.history.undo, { + event: 'undo', + title: lang.history.undo + }); + }, + redo: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.history.redo, { + event: 'redo', + title: lang.history.redo + }); + }, + hr: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.hr.insert, { + event: 'insertHorizontalRule', + title: lang.hr.insert + }); + } + }; + + var tplPopovers = function(lang, options) { + var tplLinkPopover = function() { + var linkButton = tplIconButton(options.iconPrefix + options.icons.link.edit, { + title: lang.link.edit, + event: 'showLinkDialog', + hide: true + }); + var unlinkButton = tplIconButton(options.iconPrefix + options.icons.link.unlink, { + title: lang.link.unlink, + event: 'unlink' + }); + var content = '<a href="https://www.bosssauce.it" target="_blank">www.bosssauce.it</a> ' + + '<div class="note-insert btn-group">' + + linkButton + unlinkButton + + '</div>'; + return tplPopover('note-link-popover', content); + }; + + var tplImagePopover = function() { + var fullButton = tplButton('<span class="note-fontsize-10">100%</span>', { + title: lang.image.resizeFull, + event: 'resize', + value: '1' + }); + var halfButton = tplButton('<span class="note-fontsize-10">50%</span>', { + title: lang.image.resizeHalf, + event: 'resize', + value: '0.5' + }); + var quarterButton = tplButton('<span class="note-fontsize-10">25%</span>', { + title: lang.image.resizeQuarter, + event: 'resize', + value: '0.25' + }); + + var leftButton = tplIconButton(options.iconPrefix + options.icons.image.floatLeft, { + title: lang.image.floatLeft, + event: 'floatMe', + value: 'left' + }); + var rightButton = tplIconButton(options.iconPrefix + options.icons.image.floatRight, { + title: lang.image.floatRight, + event: 'floatMe', + value: 'right' + }); + var justifyButton = tplIconButton(options.iconPrefix + options.icons.image.floatNone, { + title: lang.image.floatNone, + event: 'floatMe', + value: 'none' + }); + + var roundedButton = tplIconButton(options.iconPrefix + options.icons.image.shapeRounded, { + title: lang.image.shapeRounded, + event: 'imageClass', + value: 'img-rounded' + }); + var circleButton = tplIconButton(options.iconPrefix + options.icons.image.shapeCircle, { + title: lang.image.shapeCircle, + event: 'imageClass', + value: 'img-circle' + }); + var thumbnailButton = tplIconButton(options.iconPrefix + options.icons.image.shapeThumbnail, { + title: lang.image.shapeThumbnail, + event: 'imageClass', + value: 'img-thumbnail' + }); + var borderedButton = tplIconButton(options.iconPrefix + options.icons.image.bordered, { + title: lang.image.bordered, + event: 'imageClass', + value: 'img-bordered' + }); + var noneButton = tplIconButton(options.iconPrefix + options.icons.image.shapeNone, { + title: lang.image.shapeNone, + event: 'imageShape', + value: '' + }); + + var removeButton = tplIconButton(options.iconPrefix + options.icons.image.remove, { + title: lang.image.remove, + event: 'removeMedia', + value: 'none' + }); + + var content = //'<div class="btn-group">' + fullButton + halfButton + quarterButton + '</div>' + + '<div class="btn-group">' + leftButton + rightButton + justifyButton + '</div>' + + '<div class="btn-group">' + roundedButton + circleButton + thumbnailButton + borderedButton + noneButton + '</div>' + + '<div class="btn-group">' + removeButton + '</div>'; + return tplPopover('note-image-popover', content); + }; + + var tplAirPopover = function() { + var $content = $('<div />'); + for (var idx = 0, len = options.airPopover.length; idx < len; idx ++) { + var group = options.airPopover[idx]; + + var $group = $('<div class="note-' + group[0] + ' btn-group">'); + for (var i = 0, lenGroup = group[1].length; i < lenGroup; i++) { + var $button = $(tplButtonInfo[group[1][i]](lang, options)); + + $button.attr('data-name', group[1][i]); + + $group.append($button); + } + $content.append($group); + } + + return tplPopover('note-air-popover', $content.children()); + }; + + var $notePopover = $('<div class="note-popover" />'); + + $notePopover.append(tplLinkPopover()); + $notePopover.append(tplImagePopover()); + + if (options.airMode) { + $notePopover.append(tplAirPopover()); + } + + return $notePopover; + }; + + var tplHandles = function() { + return '<div class="note-handle">' + + '<div class="note-control-selection">' + + '<div class="note-control-selection-bg"></div>' + + '<div class="note-control-sizing note-control-se"></div>' + + '<div class="note-control-selection-info"></div>' + + '</div>' + + '</div>'; + }; + + /** + * shortcut table template + * @param {String} title + * @param {String} body + */ + var tplShortcut = function(title, keys) { + var keyClass = 'note-shortcut-col col-xs-6 note-shortcut-'; + var body = []; + + for (var i in keys) { + if (keys.hasOwnProperty(i)) { + body.push( + '<tr><td>' + keys[i].kbd + '</td><td>' + keys[i].text + '</td></tr>' + ); + } + } + + return '<thead><tr><th>' + title + '</th><th>' + '(keys)' + '</th></tr></thead>' + + '<tbody>' + body.join('') + '</tbody>'; + }; + + var tplShortcutText = function(lang) { + var keys = [ + { kbd: '⌘ + B', text: lang.font.bold }, + { kbd: '⌘ + I', text: lang.font.italic }, + { kbd: '⌘ + U', text: lang.font.underline }, + { kbd: '⌘ + \\', text: lang.font.clear } + ]; + + return tplShortcut(lang.shortcut.textFormatting, keys); + }; + + var tplShortcutAction = function(lang) { + var keys = [ + { kbd: '⌘ + Z', text: lang.history.undo }, + { kbd: '⌘ + ⇧ + Z', text: lang.history.redo }, + { kbd: '⌘ + ]', text: lang.paragraph.indent }, + { kbd: '⌘ + [', text: lang.paragraph.outdent }, + { kbd: '⌘ + ENTER', text: lang.hr.insert } + ]; + + return tplShortcut(lang.shortcut.action, keys); + }; + + var tplShortcutPara = function(lang) { + var keys = [ + { kbd: '⌘ + ⇧ + L', text: lang.paragraph.left }, + { kbd: '⌘ + ⇧ + E', text: lang.paragraph.center }, + { kbd: '⌘ + ⇧ + R', text: lang.paragraph.right }, + { kbd: '⌘ + ⇧ + J', text: lang.paragraph.justify }, + { kbd: '⌘ + ⇧ + NUM7', text: lang.lists.ordered }, + { kbd: '⌘ + ⇧ + NUM8', text: lang.lists.unordered } + ]; + + return tplShortcut(lang.shortcut.paragraphFormatting, keys); + }; + + var tplShortcutStyle = function(lang) { + var keys = [ + { kbd: '⌘ + NUM0', text: lang.style.normal }, + { kbd: '⌘ + NUM1', text: lang.style.h1 }, + { kbd: '⌘ + NUM2', text: lang.style.h2 }, + { kbd: '⌘ + NUM3', text: lang.style.h3 }, + { kbd: '⌘ + NUM4', text: lang.style.h4 }, + { kbd: '⌘ + NUM5', text: lang.style.h5 }, + { kbd: '⌘ + NUM6', text: lang.style.h6 } + ]; + + return tplShortcut(lang.shortcut.documentStyle, keys); + }; + + var tplExtraShortcuts = function(lang, options) { + var extraKeys = options.extraKeys; + var keys = []; + + for (var key in extraKeys) { + if (extraKeys.hasOwnProperty(key)) { + keys.push({ kbd: key, text: extraKeys[key] }); + } + } + + return tplShortcut(lang.shortcut.extraKeys, keys); + }; + + var tplShortcutTable = function(lang, options) { + var template = [ + '<table class="striped hoverable">' + tplShortcutAction(lang, options) + '</table>', + '<table class="striped hoverable">' + tplShortcutStyle(lang, options) + '</table>', + '<table class="striped hoverable">' + tplShortcutText(lang, options) + '</table>', + '<table class="striped hoverable">' + tplShortcutPara(lang, options) + '</table>' + ].join('<br>'); + + if (options.extraKeys) { + //template.push('<table class="striped hoverable">' + tplExtraShortcuts(lang, options) + '</table>'); + } + return template; + }; + + var replaceMacKeys = function(sHtml) { + return sHtml.replace(/⌘/g, 'Ctrl').replace(/⇧/g, 'Shift'); + }; + + var tplDialogInfo = { + image: function(lang, options) { + var imageLimitation = ''; + + if (options.maximumImageFileSize) { + var unit = Math.floor(Math.log(options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + ' ' + ' KMGTP'[unit] + 'B'; + + imageLimitation = '<small>' + lang.image.maximumFileSize + ' : ' + readableSize + '</small>'; + } + + var body = '<div class="row">' + + '<div class="col s12">' + + '<div class="file-field input-field">' + + '<div class="btn">' + + '<span>' + lang.image.image + '</span>' + + '<input class="note-image-input" name="files" type="file" />' + + '</div>' + + '<div class="file-path-wrapper">' + + '<input class="file-path" type="text" />' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '<div class="row">' + + '<div class="input-field col s12">' + + '<input class="note-image-url" type="text" />' + + '<label>' + lang.image.url + '</label>' + + '</div>' + + '</div>'; + + var footer = '<button class="waves-effect waves-light btn note-image-btn disabled" disabled>' + lang.image.insert + '</button>' + + '<button class="waves-effect waves-light btn btnClose">' + lang.shortcut.close + '</button>'; + return tplDialog('note-image-dialog', lang.image.insert, body, footer); + }, + + link: function(lang, options) { + var body = '<div class="row">' + + '<div class="input-field col s12">' + + '<input class="note-link-text" type="text" />' + + '<label>' + lang.link.textToDisplay + '</label>' + + '</div>' + + '</div>' + + '<div class="row">' + + '<div class="input-field col s12">' + + '<input class="note-link-url" type="text" value="http://" />' + + '<label class="active">' + lang.link.url + '</label>' + + '</div>' + + '</div>' + + (!options.disableLinkTarget ? + '<div class="row">' + + '<div class="col s12">' + + '<input type="checkbox" id="' + materialUniqueId + '-noteInsertLinkNewWindow" checked="checked" />' + + '<label for="' + materialUniqueId + '-noteInsertLinkNewWindow">' + lang.link.openInNewWindow + '</label>' + + '</div>' + + '</div>' + : '' + ); + + var footer = '<button class="waves-effect waves-light btn note-link-btn disabled" disabled>' + lang.link.insert + '</button>' + + '<button class="waves-effect waves-light btn btnClose">' + lang.shortcut.close + '</button>'; + return tplDialog('note-link-dialog', lang.link.insert, body, footer); + }, + + help: function(lang, options) { + var body = (agent.isMac ? tplShortcutTable(lang, options) : replaceMacKeys(tplShortcutTable(lang, options))); + var footer = '<button class="waves-effect waves-light btn modal-close">' + lang.shortcut.close + '</button>'; + + return tplDialog('note-help-dialog', lang.shortcut.shortcuts, body, footer); + } + }; + + var tplDialogs = function(lang, options) { + var dialogs = ''; + + $.each(tplDialogInfo, function(idx, tplDialog) { + dialogs += tplDialog(lang, options); + }); + + return '<div class="note-dialog">' + dialogs + '</div>'; + }; + + var tplStatusbar = function() { + return '<div class="note-resizebar">' + + '<div class="note-icon-bar"></div>' + + '<div class="note-icon-bar"></div>' + + '<div class="note-icon-bar"></div>' + + '</div>'; + }; + + var representShortcut = function(str) { + if (agent.isMac) { + str = str.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + return str.replace('BACKSLASH', '\\') + .replace('SLASH', '/') + .replace('LEFTBRACKET', '[') + .replace('RIGHTBRACKET', ']'); + }; + + /** + * createTooltip + * @param {jQuery} $container + * @param {Object} keyMap + * @param {String} [sPlacement] + */ + // >>>>>>> CK + var createTooltip = function($container, keyMap, sPlacement) { + $(document).ready(function() { + var invertedKeyMap = func.invertObject(keyMap); + var $buttons = $container.find('.btn'); + + $buttons.each(function(i, elBtn) { + var $btn = $(elBtn); + var sShortcut = invertedKeyMap[$btn.data('event')]; + var text = $btn.attr('title'); + + if (sShortcut) { + $btn.attr('data-tooltip', function(i, v) { + text = text + ' (' + representShortcut(sShortcut) + ')'; + + $(this).removeAttr('title'); + return text; + }); + } + $btn.attr('data-position', 'bottom'); + $btn.attr('data-tooltip', text); + $btn.removeAttr('title'); + }).ckTooltip({ + container: $container, + position: 'top', + delay: 30 + }); + }); + }; + + // >>>>>>> CK + // createPalette + var createPalette = function($container, options) { + var colorInfo = options.colors; + var colorTitles = options.colorTitles; + + $container.find('.note-color-palette').each(function() { + var $palette = $(this), eventName = $palette.attr('data-target-event'); + var paletteContents = []; + + for (var row = 0, lenRow = colorInfo.length; row < lenRow; row++) { + var colors = colorInfo[row]; + var titles = colorTitles[row]; + var buttons = []; + + for (var col = 0, lenCol = colors.length; col < lenCol; col++) { + var color = colors[col]; + var title = titles[col]; + + buttons.push(['<button type="button" class="note-color-btn" style="background-color:', color, + ';" data-event="', eventName, + '" data-value="', color, + '" data-description="', title, + '" data-toggle="button" tabindex="-1"></button>'].join('')); + } + paletteContents.push('<div class="note-color-row">' + buttons.join('') + '</div>'); + } + $palette.html(paletteContents.join('')); + + $palette.find('button').mouseenter(function() { + $palette.siblings('.colorName').html($(this).data('description')); + }); + $palette.mouseleave(function() { + $(this).siblings('.colorName').html(''); + }); + }); + }; + + /** + * create materialnote layout (air mode) + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayoutByAirMode = function($holder, options) { + var langInfo = options.langInfo; + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + var id = func.uniqueId(); + + $holder.addClass('note-air-editor note-editable'); + $holder.attr({ + 'id': 'note-editor-' + id, + 'contentEditable': true + }); + + var body = document.body; + + // create Popover + var $popover = $(tplPopovers(langInfo, options)); + $popover.addClass('note-air-layout'); + $popover.attr('id', 'note-popover-' + id); + $popover.appendTo(body); + createTooltip($popover, keyMap); + createPalette($popover, options); + + // create Handle + var $handle = $(tplHandles()); + $handle.addClass('note-air-layout'); + $handle.attr('id', 'note-handle-' + id); + $handle.appendTo(body); + + // create Dialog + var $dialog = $(tplDialogs(langInfo, options)); + $dialog.addClass('note-air-layout'); + $dialog.attr('id', 'note-dialog-' + id); + $dialog.find('button.close, a.modal-close').click(function() { + $(this).closest('.modal').closeModal(); + }); + $dialog.appendTo(body); + }; + + /** + * create materialnote layout (normal mode) + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayoutByFrame = function($holder, options) { + var langInfo = options.langInfo; + + //01. create Editor + var $editor = $('<div class="note-editor"></div>'); + if (options.width) { + $editor.width(options.width); + } + + //02. statusbar (resizebar) + if (options.height > 0) { + $('<div class="note-statusbar">' + (options.disableResizeEditor ? '' : tplStatusbar()) + '</div>').prependTo($editor); + } + + //03. create Editable + var isContentEditable = !$holder.is(':disabled'); + var $editable = $('<div class="note-editable" contentEditable="' + isContentEditable + '"></div>') + .prependTo($editor); + if (options.height) { + $editable.height(options.height); + } + if (options.direction) { + $editable.attr('dir', options.direction); + } + var placeholder = $holder.attr('placeholder') || options.placeholder; + if (placeholder) { + $editable.attr('data-placeholder', placeholder); + } + + $editable.html(dom.html($holder)); + + //031. create codable + $('<textarea class="note-codable"></textarea>').prependTo($editor); + + //04. create Toolbar + var $toolbar = $('<div class="note-toolbar btn-toolbar" />'); + for (var idx = 0, len = options.toolbar.length; idx < len; idx ++) { + var groupName = options.toolbar[idx][0]; + var groupButtons = options.toolbar[idx][1]; + + var $group = $('<div class="note-' + groupName + ' btn-group" />'); + for (var i = 0, btnLength = groupButtons.length; i < btnLength; i++) { + var buttonInfo = tplButtonInfo[groupButtons[i]]; + // continue creating toolbar even if a button doesn't exist + if (!$.isFunction(buttonInfo)) { continue; } + + var $button = $(buttonInfo(langInfo, options)); + $button.attr('data-name', groupButtons[i]); // set button's alias, becuase to get button element from $toolbar + $group.append($button); + } + $toolbar.append($group); + } + + $toolbar.prependTo($editor); + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + createPalette($toolbar, options); + createTooltip($toolbar, keyMap, 'bottom'); + + + // >>>>>>> CK - following toolbar + // following toolbar + function followingBar() { + // $(window).unbind('scroll'); + // console.log($._data( $(window)[0], "events" )); + $(window).scroll(function() { + var isFullscreen = $editor.hasClass('fullscreen'); + + if (isFullscreen) { + console.log("fullscreen"); + return false; + } + + var toolbar = $editor.children('.note-toolbar'); + var toolbarHeight = toolbar.outerHeight(); + var editable = $editor.children('.note-editable'); + var editableHeight = editable.outerHeight(); + var editorWidth = $editor.width; + var toolbarOffset, editorOffsetTop, editorOffsetBottom; + var activateOffset, deactivateOffsetTop, deactivateOffsetBottom; + var currentOffset; + var relativeOffset; + var otherBarHeight; + + // check if the web app is currently using another static bar + otherBarHeight = $("." + options.otherStaticBarClass).outerHeight(); + if (!otherBarHeight) otherBarHeight = 0; + //console.log(otherBarHeight); + + currentOffset = $(document).scrollTop(); + toolbarOffset = toolbar.offset().top; + editorOffsetTop = $editor.offset().top; + editorOffsetBottom = editorOffsetTop + editableHeight; + activateOffset = toolbarOffset - otherBarHeight; + deactivateOffsetBottom = editorOffsetBottom - otherBarHeight; + deactivateOffsetTop = editorOffsetTop - otherBarHeight; + + if ((currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom)) { + relativeOffset = currentOffset - $editor.offset().top + otherBarHeight; + toolbar.css({'top': relativeOffset + 'px', 'z-index': 2000}); + } else { + if ((currentOffset < toolbarOffset) && (currentOffset < deactivateOffsetBottom)) { + toolbar.css({'top': 0, 'z-index': 1052}); + + if (currentOffset > deactivateOffsetTop) { + relativeOffset = currentOffset - $editor.offset().top + otherBarHeight; + toolbar.css({'top': relativeOffset + 'px', 'z-index': 2000}); + } + } + } + }); + } + if (options.followingToolbar) { + followingBar(); + } + + //05. create Popover + var $popover = $(tplPopovers(langInfo, options)).prependTo($editor); + createPalette($popover, options); + createTooltip($popover, keyMap); + + //06. handle(control selection, ...) + $(tplHandles()).prependTo($editor); + + //07. create Dialog + var $dialog = $(tplDialogs(langInfo, options)).prependTo($editor); + $dialog.find('button.close, a.modal-close').click(function() { + $(this).closest('.modal').closeModal(); + }); + + //08. create Dropzone + $('<div class="note-dropzone"><div class="note-dropzone-message"></div></div>').prependTo($editor); + + //09. Editor/Holder switch + $editor.insertAfter($holder); + $holder.hide(); + }; + + this.hasNoteEditor = function($holder) { + return this.noteEditorFromHolder($holder).length > 0; + }; + + this.noteEditorFromHolder = function($holder) { + if ($holder.hasClass('note-air-editor')) { + return $holder; + } else if ($holder.next().hasClass('note-editor')) { + return $holder.next(); + } else { + return $(); + } + }; + + /** + * create materialnote layout + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayout = function($holder, options) { + if (options.airMode) { + this.createLayoutByAirMode($holder, options); + } else { + this.createLayoutByFrame($holder, options); + } + }; + + /** + * returns layoutInfo from holder + * + * @param {jQuery} $holder - placeholder + * @return {Object} + */ + this.layoutInfoFromHolder = function($holder) { + var $editor = this.noteEditorFromHolder($holder); + if (!$editor.length) { + return; + } + + // connect $holder to $editor + $editor.data('holder', $holder); + + return dom.buildLayoutInfo($editor); + }; + + /** + * removeLayout + * + * @param {jQuery} $holder - placeholder + * @param {Object} layoutInfo + * @param {Object} options + * + */ + this.removeLayout = function($holder, layoutInfo, options) { + if (options.airMode) { + $holder.removeClass('note-air-editor note-editable') + .removeAttr('id contentEditable'); + + layoutInfo.popover().remove(); + layoutInfo.handle().remove(); + layoutInfo.dialog().remove(); + } else { + $holder.html(layoutInfo.editable().html()); + + layoutInfo.editor().remove(); + $holder.show(); + } + }; + + /** + * + * @return {Object} + * @return {function(label, options=):string} return.button {@link #tplButton function to make text button} + * @return {function(iconClass, options=):string} return.iconButton {@link #tplIconButton function to make icon button} + * @return {function(className, title=, body=, footer=):string} return.dialog {@link #tplDialog function to make dialog} + */ + this.getTemplate = function() { + return { + button: tplButton, + iconButton: tplIconButton, + dialog: tplDialog + }; + }; + + /** + * add button information + * + * @param {String} name button name + * @param {Function} buttonInfo function to make button, reference to {@link #tplButton},{@link #tplIconButton} + */ + this.addButtonInfo = function(name, buttonInfo) { + tplButtonInfo[name] = buttonInfo; + }; + + /** + * + * @param {String} name + * @param {Function} dialogInfo function to make dialog, reference to {@link #tplDialog} + */ + this.addDialogInfo = function(name, dialogInfo) { + tplDialogInfo[name] = dialogInfo; + }; + }; + + + // jQuery namespace for materialnote + /** + * @class $.materialnote + * + * materialnote attribute + * + * @mixin defaults + * @singleton + * + */ + $.materialnote = $.materialnote || {}; + + // extends default settings + // - $.materialnote.version + // - $.materialnote.options + // - $.materialnote.lang + $.extend($.materialnote, defaults); + + var renderer = new Renderer(); + var eventHandler = new EventHandler(); + + $.extend($.materialnote, { + /** @property {Renderer} */ + renderer: renderer, + /** @property {EventHandler} */ + eventHandler: eventHandler, + /** + * @property {Object} core + * @property {core.agent} core.agent + * @property {core.dom} core.dom + * @property {core.range} core.range + */ + core: { + agent: agent, + list : list, + dom: dom, + range: range + }, + /** + * @property {Object} + * pluginEvents event list for plugins + * event has name and callback function. + * + * ``` + * $.materialnote.addPlugin({ + * events : { + * 'hello' : function(layoutInfo, value, $target) { + * console.log('event name is hello, value is ' + value ); + * } + * } + * }) + * ``` + * + * * event name is data-event property. + * * layoutInfo is a materialnote layout information. + * * value is data-value property. + */ + pluginEvents: {}, + + plugins : [] + }); + + /** + * @method addPlugin + * + * add Plugin in materialnote + * + * materialnote can make a own plugin. + * + * ### Define plugin + * ``` + * // get template function + * var tmpl = $.materialnote.renderer.getTemplate(); + * + * // add a button + * $.materialnote.addPlugin({ + * buttons : { + * // "hello" is button's namespace. + * "hello" : function(lang, options) { + * // make icon button by template function + * return tmpl.iconButton(options.iconPrefix + 'header', { + * // callback function name when button clicked + * event : 'hello', + * // set data-value property + * value : 'hello', + * hide : true + * }); + * } + * + * }, + * + * events : { + * "hello" : function(layoutInfo, value) { + * // here is event code + * } + * } + * }); + * ``` + * ### Use a plugin in toolbar + * + * ``` + * $("#editor").materialnote({ + * ... + * toolbar : [ + * // display hello plugin in toolbar + * ['group', [ 'hello' ]] + * ] + * ... + * }); + * ``` + * + * + * @param {Object} plugin + * @param {Object} [plugin.buttons] define plugin button. for detail, see to Renderer.addButtonInfo + * @param {Object} [plugin.dialogs] define plugin dialog. for detail, see to Renderer.addDialogInfo + * @param {Object} [plugin.events] add event in $.materialnote.pluginEvents + * @param {Object} [plugin.langs] update $.materialnote.lang + * @param {Object} [plugin.options] update $.materialnote.options + */ + $.materialnote.addPlugin = function(plugin) { + + // save plugin list + $.materialnote.plugins.push(plugin); + + if (plugin.buttons) { + $.each(plugin.buttons, function(name, button) { + renderer.addButtonInfo(name, button); + }); + } + + if (plugin.dialogs) { + $.each(plugin.dialogs, function(name, dialog) { + renderer.addDialogInfo(name, dialog); + }); + } + + if (plugin.events) { + $.each(plugin.events, function(name, event) { + $.materialnote.pluginEvents[name] = event; + }); + } + + if (plugin.langs) { + $.each(plugin.langs, function(locale, lang) { + if ($.materialnote.lang[locale]) { + $.extend($.materialnote.lang[locale], lang); + } + }); + } + + if (plugin.options) { + $.extend($.materialnote.options, plugin.options); + } + }; + + /* + * extend $.fn + */ + $.fn.extend({ + /** + * @method + * Initialize materialnote + * - create editor layout and attach Mouse and keyboard events. + * + * ``` + * $("#materialnote").materialnote( { options ..} ); + * ``` + * + * @member $.fn + * @param {Object|String} options reference to $.materialnote.options + * @return {this} + */ + materialnote: function() { + + // check first argument's type + // - {String}: External API call {{module}}.{{method}} + // - {Object}: init options + var type = $.type(list.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + + // extend default options with custom user options + var options = hasInitOptions ? list.head(arguments) : {}; + + options = $.extend({}, $.materialnote.options, options); + options.icons = $.extend({}, $.materialnote.options.icons, options.icons); + + // Include langInfo in options for later use, e.g. for image drag-n-drop + // Setup language info with en-US as default + options.langInfo = $.extend(true, {}, $.materialnote.lang['en-US'], $.materialnote.lang[options.lang]); + + // override plugin options + if (!isExternalAPICalled && hasInitOptions) { + for (var i = 0, len = $.materialnote.plugins.length; i < len; i++) { + var plugin = $.materialnote.plugins[i]; + + if (options.plugin[plugin.name]) { + $.materialnote.plugins[i] = $.extend(true, plugin, options.plugin[plugin.name]); + } + } + } + + this.each(function(idx, holder) { + // >>>>>>> CK set id for this editor + materialUniqueId = $(holder).attr('id'); + + var $holder = $(holder); + + // if layout isn't created yet, createLayout and attach events + if (!renderer.hasNoteEditor($holder)) { + renderer.createLayout($holder, options); + + var layoutInfo = renderer.layoutInfoFromHolder($holder); + $holder.data('layoutInfo', layoutInfo); + + eventHandler.attach(layoutInfo, options); + eventHandler.attachCustomEvent(layoutInfo, options); + + } + }); + + var $first = this.first(); + if ($first.length) { + var layoutInfo = renderer.layoutInfoFromHolder($first); + + // external API + if (isExternalAPICalled) { + var moduleAndMethod = list.head(list.from(arguments)); + var args = list.tail(list.from(arguments)); + + // TODO now external API only works for editor + var params = [moduleAndMethod, layoutInfo.editable()].concat(args); + return eventHandler.invoke.apply(eventHandler, params); + } else if (options.focus) { + // focus on first editable element for initialize editor + layoutInfo.editable().focus(); + } + } + + + + // >>>>>>> CK dropdowns - tabs activation + $(this).each(function(index, editor) { + var tabs; + var tabContainer; + var toolbar; + var isAir = false; + + if ($(editor).hasClass('note-air-editor')) { + var id = $(this).attr('id'); + if (id) id = id.substring(id.lastIndexOf('-') + 1, id.length); + + editor = $('#note-popover-' + id).find('.note-air-popover'); + tabContainer = editor.find('ul.tabs'); + tabs = editor.find('li.tab a'); + toolbar = $(editor).find('.popover-content button.dropdown'); + isAir = true; + } else { + editor = $(editor).next('.note-editor'); + tabContainer = editor.find('ul.tabs'); + tabs = editor.find('li.tab a'); + toolbar = $(editor).find('.note-toolbar button.dropdown'); + } + var go = true; + + function handleDropdowns(select, bar) { + var list = $(select).next('ul.dropdown-menu'); + var container = $(select).parent('.btn-group'); + + list.slideUp(0); + + $('.preventDropClose').click(function(event) { + event.stopPropagation(); + }); + + $(select).click(function(event) { + // calculate dropdown open position to avoid overflow from editor + var btnOffset = Math.round($(select).parent('.btn-group').offset().left - toolbar.offset().left); + var listBorderWidth = parseInt(list.css("border-left-width")); + var editorWidth = editor.outerWidth(); + var listOffset = listBorderWidth; + + list.css({'max-width': editorWidth + 'px'}); + + var listWidth = list.outerWidth(); + var th = listWidth + btnOffset; + + if (th >= editorWidth) { + listOffset = th - editorWidth; + + if (!isAir) { + listOffset = listOffset + listBorderWidth; + } + } + + list.css({'left': '-' + listOffset + 'px'}); + + var reopen = true; + + if (list.is(':visible')) reopen = false; + + bar.find('ul.dropdown-menu').slideUp(200); + + if (reopen) { + list.slideToggle(200); + } + event.stopPropagation(); + }); + + tabs.unbind().click(function(event) { + go = false; + }); + } + + $(window).click(function(event) { + if (go) editor.find('ul.dropdown-menu').slideUp(200); + go = true; + event.stopPropagation(); + }); + + // dropdowns + toolbar.each(function(index, select) { + handleDropdowns(select, editor); + }); + + // activate tabs + tabContainer.tabs(); + }); + + return this; + }, + + /** + * @method + * + * get the HTML contents of note or set the HTML contents of note. + * + * * get contents + * ``` + * var content = $("#materialnote").code(); + * ``` + * * set contents + * + * ``` + * $("#materialnote").code(html); + * ``` + * + * @member $.fn + * @param {String} [html] - HTML contents(optional, set) + * @return {this|String} - context(set) or HTML contents of note(get). + */ + code: function(html) { + // get the HTML contents of note + if (html === undefined) { + var $holder = this.first(); + if (!$holder.length) { + return; + } + + var layoutInfo = renderer.layoutInfoFromHolder($holder); + var $editable = layoutInfo && layoutInfo.editable(); + + if ($editable && $editable.length) { + var isCodeview = eventHandler.invoke('codeview.isActivated', layoutInfo); + eventHandler.invoke('codeview.sync', layoutInfo); + return isCodeview ? layoutInfo.codable().val() : + layoutInfo.editable().html(); + } + return dom.value($holder); + } + + // set the HTML contents of note + this.each(function(i, holder) { + var layoutInfo = renderer.layoutInfoFromHolder($(holder)); + var $editable = layoutInfo && layoutInfo.editable(); + if ($editable) { + $editable.html(html); + } + }); + + return this; + }, + + /** + * @method + * + * destroy Editor Layout and detach Key and Mouse Event + * + * @member $.fn + * @return {this} + */ + destroy: function() { + this.each(function(idx, holder) { + var $holder = $(holder); + + if (!renderer.hasNoteEditor($holder)) { + return; + } + + var info = renderer.layoutInfoFromHolder($holder); + var options = info.editor().data('options'); + + eventHandler.detach(info, options); + renderer.removeLayout($holder, info, options); + }); + + return this; + } + }); +})); diff --git a/system/admin/static/editor/license.txt b/system/admin/static/editor/license.txt new file mode 100644 index 0000000..d978e1d --- /dev/null +++ b/system/admin/static/editor/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 CK + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_buttons.scss b/system/admin/static/editor/sass/components/_buttons.scss new file mode 100644 index 0000000..7192bec --- /dev/null +++ b/system/admin/static/editor/sass/components/_buttons.scss @@ -0,0 +1,157 @@ +// shared styles +.btn, .btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: $button-height; + line-height: $button-line-height; + // margin-bottom: 15px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + // Gets rid of tap active state + -webkit-tap-highlight-color: transparent; +} +// Disabled shared style +.btn.disabled, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-floating:disabled { + background-color: $button-bg-color-disabled !important; + box-shadow: none; + color: $button-color-disabled !important; + cursor: default; + * { + pointer-events: none; + } + + &:hover { + background-color: $button-bg-color-disabled; + color: $button-color-disabled; + } +} +// Shared icon styles +.btn, .btn-floating, .btn-large, .btn-flat { + i { + font-size: $button-font-size-shared; + line-height: inherit; + } +} + +// Raised Button +.btn { + text-decoration:none; + color: $button-color-raised; + background-color: $button-color; + text-align: center; + letter-spacing: .5px; + @extend .z-depth-1; + @include transition(.2s ease-out); + cursor: pointer; + + &:hover { + background-color: lighten($button-color, 5%); + @extend .z-depth-1-half; + } +} + +// Floating button +.btn-floating { + display: inline-block; + color: $button-color-raised; + position: relative; + overflow: hidden; + z-index: 1; + width: $button-floating-size; + height: $button-floating-size; + line-height: $button-floating-size; + padding: 0; + background-color: $button-color; + border-radius: 50%; + @extend .z-depth-1; + transition: .3s; + cursor: pointer; + vertical-align: middle; + + i { + width: inherit; + display: inline-block; + text-align: center; + color: $button-color-raised; + font-size: $button-large-icon-font-size; + line-height: $button-floating-size; + } + + &:hover { + @extend .z-depth-1-half; + } + &:before { + border-radius: 0; + } + &.btn-large { + width: $button-floating-size * 1.5; + height: $button-floating-size * 1.5; + i{ + line-height: $button-floating-size * 1.5; + } + } + +} +// button fix +button.btn-floating { + border: none; +} + +// Fixed Action Button +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; + + ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; + + li { + margin-bottom: 15px; + } + + a.btn-floating { + opacity: 0; + } + } +} + +// Flat button +.btn-flat { + box-shadow: none; + background-color: transparent; + color: $button-color-flat; + cursor: pointer; + + &.disabled { + color: lighten(#999, 10%); + cursor: default; + } +} + +// Large button +.btn-large { + @extend .btn; + height: $button-height * 1.5; + line-height: 56px; + + i { + font-size: $button-large-icon-font-size; + } +} + +// Block button +.btn-block { + display: block; +} diff --git a/system/admin/static/editor/sass/components/_cards.scss b/system/admin/static/editor/sass/components/_cards.scss new file mode 100644 index 0000000..524d0cf --- /dev/null +++ b/system/admin/static/editor/sass/components/_cards.scss @@ -0,0 +1,152 @@ + + +.card-panel { + transition: box-shadow .25s; + padding: $card-padding; + margin: $element-top-margin 0 $element-bottom-margin 0; + border-radius: 2px; + @extend .z-depth-1; + background-color: $card-bg-color; +} + +.card { + position: relative; + overflow: hidden; + margin: $element-top-margin 0 $element-bottom-margin 0; + background-color: $card-bg-color; + transition: box-shadow .25s; + border-radius: 2px; + @extend .z-depth-1; + + + .card-title { + color: $card-bg-color; + font-size: 24px; + font-weight: 300; + &.activator { + cursor: pointer; + } + } + + // Card Sizes + &.small, &.medium, &.large { + position: relative; + + .card-image { + overflow: hidden; + } + .card-content { + overflow: hidden; + } + .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; + } + } + + &.small { + height: 300px; + + .card-image { + height: 150px; + } + .card-content { + height: 150px; + } + + } + + &.medium { + height: 400px; + + .card-image { + height: 250px; + } + .card-content { + height: 150px; + } + } + + &.large { + height: 500px; + + .card-image { + height: 330px; + } + .card-content { + height: 170px; + } + } + + + .card-image { + position: relative; + + // Image background for content + img { + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + } + + .card-title { + position: absolute; + bottom: 0; + left: 0; + padding: $card-padding; + } + + } + + .card-content { + padding: $card-padding; + border-radius: 0 0 2px 2px; + + + p { + margin: 0; + color: inherit; + } + .card-title { + line-height: 48px; + } + } + + .card-action { + border-top: 1px solid rgba(160,160,160,.2); + padding: $card-padding; + + a { + color: $card-link-color; + margin-right: $card-padding; + @include transition(color .3s ease); + text-transform: uppercase; + + &:hover { color: $card-link-color-light; } + } + } + + .card-reveal { + padding: $card-padding; + position: absolute; + background-color: $card-bg-color; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 1; + display: none; + + .card-title { + cursor: pointer; + display: block; + } + + } +} diff --git a/system/admin/static/editor/sass/components/_collapsible.scss b/system/admin/static/editor/sass/components/_collapsible.scss new file mode 100644 index 0000000..6b45d1e --- /dev/null +++ b/system/admin/static/editor/sass/components/_collapsible.scss @@ -0,0 +1,85 @@ +.collapsible { + border-top: 1px solid $collapsible-border-color; + border-right: 1px solid $collapsible-border-color; + border-left: 1px solid $collapsible-border-color; + margin: $element-top-margin 0 $element-bottom-margin 0; + @extend .z-depth-1; +} + +.collapsible-header { + display: block; + cursor: pointer; + height: $collapsible-height; + line-height: $collapsible-height; + padding: 0 1rem; + background-color: $collapsible-header-color; + border-bottom: 1px solid $collapsible-border-color; + + i { + width: 2rem; + font-size: 1.6rem; + line-height: $collapsible-height; + display: block; + float: left; + text-align: center; + margin-right: 1rem; + } +} + +.collapsible-body { + display: none; + border-bottom: 1px solid $collapsible-border-color; + @include box-sizing(border-box); + + p { + margin: 0; + padding: 2rem; + } +} + +// sideNav collapsible styling +.side-nav { + + .collapsible { + border: none; + box-shadow: none; + + li { padding: 0; } + } + + .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + margin: 0 1rem; + + i { line-height: inherit; } + } + + .collapsible-body { + border: 0; + background-color: $collapsible-header-color; + + li a { margin: 0 1rem 0 2rem; } + } + +} + +// Popout Collapsible + +.collapsible.popout { + border: none; + box-shadow: none; + > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + // transform: scaleX(.92); + margin: 0 24px; + transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940); + } + > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; + // transform: scaleX(1); + } +} diff --git a/system/admin/static/editor/sass/components/_color.scss b/system/admin/static/editor/sass/components/_color.scss new file mode 100644 index 0000000..95d65d5 --- /dev/null +++ b/system/admin/static/editor/sass/components/_color.scss @@ -0,0 +1,412 @@ +// Utility Color Classes + +//.success { +// +//} + +// Google Color Palette defined: http://www.google.com/design/spec/style/color.html + + +$materialize-red: ( + "lighten-5": #fdeaeb, + "lighten-4": #f8c1c3, + "lighten-3": #f3989b, + "lighten-2": #ee6e73, + "lighten-1": #ea454b, + "base": #e51c23, + "darken-1": #d0181e, + "darken-2": #b9151b, + "darken-3": #a21318, + "darken-4": #8b1014, +); + +$red: ( + "lighten-5": #FFEBEE, + "lighten-4": #FFCDD2, + "lighten-3": #EF9A9A, + "lighten-2": #E57373, + "lighten-1": #EF5350, + "base": #F44336, + "darken-1": #E53935, + "darken-2": #D32F2F, + "darken-3": #C62828, + "darken-4": #B71C1C, + "accent-1": #FF8A80, + "accent-2": #FF5252, + "accent-3": #FF1744, + "accent-4": #D50000 +); + +$pink: ( + "lighten-5": #fce4ec, + "lighten-4": #f8bbd0, + "lighten-3": #f48fb1, + "lighten-2": #f06292, + "lighten-1": #ec407a, + "base": #e91e63, + "darken-1": #d81b60, + "darken-2": #c2185b, + "darken-3": #ad1457, + "darken-4": #880e4f, + "accent-1": #ff80ab, + "accent-2": #ff4081, + "accent-3": #f50057, + "accent-4": #c51162 +); + +$purple: ( + "lighten-5": #f3e5f5, + "lighten-4": #e1bee7, + "lighten-3": #ce93d8, + "lighten-2": #ba68c8, + "lighten-1": #ab47bc, + "base": #9c27b0, + "darken-1": #8e24aa, + "darken-2": #7b1fa2, + "darken-3": #6a1b9a, + "darken-4": #4a148c, + "accent-1": #ea80fc, + "accent-2": #e040fb, + "accent-3": #d500f9, + "accent-4": #aa00ff +); + +$deep-purple: ( + "lighten-5": #ede7f6, + "lighten-4": #d1c4e9, + "lighten-3": #b39ddb, + "lighten-2": #9575cd, + "lighten-1": #7e57c2, + "base": #673ab7, + "darken-1": #5e35b1, + "darken-2": #512da8, + "darken-3": #4527a0, + "darken-4": #311b92, + "accent-1": #b388ff, + "accent-2": #7c4dff, + "accent-3": #651fff, + "accent-4": #6200ea +); + +$indigo: ( + "lighten-5": #e8eaf6, + "lighten-4": #c5cae9, + "lighten-3": #9fa8da, + "lighten-2": #7986cb, + "lighten-1": #5c6bc0, + "base": #3f51b5, + "darken-1": #3949ab, + "darken-2": #303f9f, + "darken-3": #283593, + "darken-4": #1a237e, + "accent-1": #8c9eff, + "accent-2": #536dfe, + "accent-3": #3d5afe, + "accent-4": #304ffe +); + +$blue: ( + "lighten-5": #E3F2FD, + "lighten-4": #BBDEFB, + "lighten-3": #90CAF9, + "lighten-2": #64B5F6, + "lighten-1": #42A5F5, + "base": #2196F3, + "darken-1": #1E88E5, + "darken-2": #1976D2, + "darken-3": #1565C0, + "darken-4": #0D47A1, + "accent-1": #82B1FF, + "accent-2": #448AFF, + "accent-3": #2979FF, + "accent-4": #2962FF +); + +$light-blue: ( + "lighten-5": #e1f5fe, + "lighten-4": #b3e5fc, + "lighten-3": #81d4fa, + "lighten-2": #4fc3f7, + "lighten-1": #29b6f6, + "base": #03a9f4, + "darken-1": #039be5, + "darken-2": #0288d1, + "darken-3": #0277bd, + "darken-4": #01579b, + "accent-1": #80d8ff, + "accent-2": #40c4ff, + "accent-3": #00b0ff, + "accent-4": #0091ea +); + +$cyan: ( + "lighten-5": #e0f7fa, + "lighten-4": #b2ebf2, + "lighten-3": #80deea, + "lighten-2": #4dd0e1, + "lighten-1": #26c6da, + "base": #00bcd4, + "darken-1": #00acc1, + "darken-2": #0097a7, + "darken-3": #00838f, + "darken-4": #006064, + "accent-1": #84ffff, + "accent-2": #18ffff, + "accent-3": #00e5ff, + "accent-4": #00b8d4 +); + +$teal: ( + "lighten-5": #e0f2f1, + "lighten-4": #b2dfdb, + "lighten-3": #80cbc4, + "lighten-2": #4db6ac, + "lighten-1": #26a69a, + "base": #009688, + "darken-1": #00897b, + "darken-2": #00796b, + "darken-3": #00695c, + "darken-4": #004d40, + "accent-1": #a7ffeb, + "accent-2": #64ffda, + "accent-3": #1de9b6, + "accent-4": #00bfa5 +); + +$green: ( + "lighten-5": #E8F5E9, + "lighten-4": #C8E6C9, + "lighten-3": #A5D6A7, + "lighten-2": #81C784, + "lighten-1": #66BB6A, + "base": #4CAF50, + "darken-1": #43A047, + "darken-2": #388E3C, + "darken-3": #2E7D32, + "darken-4": #1B5E20, + "accent-1": #B9F6CA, + "accent-2": #69F0AE, + "accent-3": #00E676, + "accent-4": #00C853 +); + +$light-green: ( + "lighten-5": #f1f8e9, + "lighten-4": #dcedc8, + "lighten-3": #c5e1a5, + "lighten-2": #aed581, + "lighten-1": #9ccc65, + "base": #8bc34a, + "darken-1": #7cb342, + "darken-2": #689f38, + "darken-3": #558b2f, + "darken-4": #33691e, + "accent-1": #ccff90, + "accent-2": #b2ff59, + "accent-3": #76ff03, + "accent-4": #64dd17 +); + +$lime: ( + "lighten-5": #f9fbe7, + "lighten-4": #f0f4c3, + "lighten-3": #e6ee9c, + "lighten-2": #dce775, + "lighten-1": #d4e157, + "base": #cddc39, + "darken-1": #c0ca33, + "darken-2": #afb42b, + "darken-3": #9e9d24, + "darken-4": #827717, + "accent-1": #f4ff81, + "accent-2": #eeff41, + "accent-3": #c6ff00, + "accent-4": #aeea00 +); + +$yellow: ( + "lighten-5": #fffde7, + "lighten-4": #fff9c4, + "lighten-3": #fff59d, + "lighten-2": #fff176, + "lighten-1": #ffee58, + "base": #ffeb3b, + "darken-1": #fdd835, + "darken-2": #fbc02d, + "darken-3": #f9a825, + "darken-4": #f57f17, + "accent-1": #ffff8d, + "accent-2": #ffff00, + "accent-3": #ffea00, + "accent-4": #ffd600 +); + +$amber: ( + "lighten-5": #fff8e1, + "lighten-4": #ffecb3, + "lighten-3": #ffe082, + "lighten-2": #ffd54f, + "lighten-1": #ffca28, + "base": #ffc107, + "darken-1": #ffb300, + "darken-2": #ffa000, + "darken-3": #ff8f00, + "darken-4": #ff6f00, + "accent-1": #ffe57f, + "accent-2": #ffd740, + "accent-3": #ffc400, + "accent-4": #ffab00 +); + +$orange: ( + "lighten-5": #fff3e0, + "lighten-4": #ffe0b2, + "lighten-3": #ffcc80, + "lighten-2": #ffb74d, + "lighten-1": #ffa726, + "base": #ff9800, + "darken-1": #fb8c00, + "darken-2": #f57c00, + "darken-3": #ef6c00, + "darken-4": #e65100, + "accent-1": #ffd180, + "accent-2": #ffab40, + "accent-3": #ff9100, + "accent-4": #ff6d00 +); + +$deep-orange: ( + "lighten-5": #fbe9e7, + "lighten-4": #ffccbc, + "lighten-3": #ffab91, + "lighten-2": #ff8a65, + "lighten-1": #ff7043, + "base": #ff5722, + "darken-1": #f4511e, + "darken-2": #e64a19, + "darken-3": #d84315, + "darken-4": #bf360c, + "accent-1": #ff9e80, + "accent-2": #ff6e40, + "accent-3": #ff3d00, + "accent-4": #dd2c00 +); + +$brown: ( + "lighten-5": #efebe9, + "lighten-4": #d7ccc8, + "lighten-3": #bcaaa4, + "lighten-2": #a1887f, + "lighten-1": #8d6e63, + "base": #795548, + "darken-1": #6d4c41, + "darken-2": #5d4037, + "darken-3": #4e342e, + "darken-4": #3e2723 +); + +$blue-grey: ( + "lighten-5": #eceff1, + "lighten-4": #cfd8dc, + "lighten-3": #b0bec5, + "lighten-2": #90a4ae, + "lighten-1": #78909c, + "base": #607d8b, + "darken-1": #546e7a, + "darken-2": #455a64, + "darken-3": #37474f, + "darken-4": #263238 +); + +$grey: ( + "lighten-5": #fafafa, + "lighten-4": #f5f5f5, + "lighten-3": #eeeeee, + "lighten-2": #e0e0e0, + "lighten-1": #bdbdbd, + "base": #9e9e9e, + "darken-1": #757575, + "darken-2": #616161, + "darken-3": #424242, + "darken-4": #212121 +); + +$shades: ( + "black": #000000, + "white": #FFFFFF, + "transparent": transparent +); + +$colors: ( + "materialize-red": $materialize-red, + "red": $red, + "pink": $pink, + "purple": $purple, + "deep-purple": $deep-purple, + "indigo": $indigo, + "blue": $blue, + "light-blue": $light-blue, + "cyan": $cyan, + "teal": $teal, + "green": $green, + "light-green": $light-green, + "lime": $lime, + "yellow": $yellow, + "amber": $amber, + "orange": $orange, + "deep-orange": $deep-orange, + "brown": $brown, + "blue-grey": $blue-grey, + "grey": $grey, + "shades": $shades +); + + +// Color Classes + +@each $color_name, $color in $colors { + @each $color_type, $color_value in $color { + @if $color_type == "base" { + .#{$color_name} { + background-color: $color_value !important; + } + .#{$color_name}-text { + color: $color_value !important; + } + } + @else { + .#{$color_name}.#{$color_type} { + background-color: $color_value !important; + } + .#{$color_name}-text.text-#{$color_type} { + color: $color_value !important; + } + } + } +} + +// Shade classes +@each $color, $color_value in $shades { + .#{$color} { + background-color: $color_value !important; + } + .#{$color}-text { + color: $color_value !important; + } +} + + +// usage: color("name_of_color", "type_of_color") +// to avoid to repeating map-get($colors, ...) + +@function color($color, $type) { + @if map-has-key($colors, $color) { + $curr_color: map-get($colors, $color); + @if map-has-key($curr_color, $type) { + @return map-get($curr_color, $type); + } + } + @warn "Unknown `#{name}` in $colors."; + @return null; +} + diff --git a/system/admin/static/editor/sass/components/_dropdown.scss b/system/admin/static/editor/sass/components/_dropdown.scss new file mode 100644 index 0000000..585fbd6 --- /dev/null +++ b/system/admin/static/editor/sass/components/_dropdown.scss @@ -0,0 +1,40 @@ +.dropdown-content { + @extend .z-depth-1; + background-color: $dropdown-bg-color; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; + + li { + clear: both; + color: $off-black; + cursor: pointer; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; + + &:hover, &.active { + background-color: $dropdown-hover-bg-color; + } + + & > a, & > span { + font-size: 1.2rem; + color: $dropdown-color; + display: block; + padding: 1rem 1rem; + } + + // Icon alignment override + & > a > i { + height: inherit; + line-height: inherit; + } + } +} diff --git a/system/admin/static/editor/sass/components/_form.scss b/system/admin/static/editor/sass/components/_form.scss new file mode 100644 index 0000000..ed35233 --- /dev/null +++ b/system/admin/static/editor/sass/components/_form.scss @@ -0,0 +1,886 @@ +/* Remove Focus Boxes */ +select:focus { + outline: 1px solid lighten($secondary-color, 47%); +} +button:focus { + outline: none; + background-color: lighten($button-color, 4%); +} + +label { + font-size: $label-font-size; + color: $input-border-color; +} + +/*************************** + Text Inputs + Textarea +****************************/ + +// Style Placeholders +::-webkit-input-placeholder { + color: lighten($input-border-color, 20%); +} + +:-moz-placeholder { /* Firefox 18- */ + color: lighten($input-border-color, 20%); +} + +::-moz-placeholder { /* Firefox 19+ */ + color: lighten($input-border-color, 20%); +} + +:-ms-input-placeholder { + color: lighten($input-border-color, 20%); +} + +// Text inputs +input[type=text], +input[type=password], +input[type=email], +input[type=url], +input[type=time], +input[type=date], +input[type=datetime-local], +input[type=tel], +input[type=number], +input[type=search], +textarea.materialize-textarea { + + // General Styles + background-color: transparent; + border: none; + border-bottom: 1px solid $input-border-color; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + box-shadow: none; + @include box-sizing(content-box); + transition: all .3s; + + + // Disabled input style + &:disabled, &[readonly="readonly"] { + color: $input-disabled-color; + border-bottom: 1px dotted $input-disabled-color; + } + // Disabled label style + &:disabled+label, &[readonly="readonly"]+label { + color: $input-disabled-color; + } + // Focused input style + &:focus:not([readonly]) { + border-bottom: 1px solid $input-focus-color; + box-shadow: 0 1px 0 0 $input-focus-color; + } + // Focused label style + &:focus:not([readonly])+label { + color: $input-focus-color; + } + // Valid Input Style + &.valid, + &:focus.valid { + border-bottom: 1px solid $input-success-color; + box-shadow: 0 1px 0 0 $input-success-color; + } + // Custom Success Message + &.valid + label:after, + &:focus.valid + label:after { + content: attr(data-success); + color: $input-success-color; + opacity: 1; + } + // Invalid Input Style + &.invalid, + &:focus.invalid { + border-bottom: 1px solid $input-error-color; + box-shadow: 0 1px 0 0 $input-error-color; + } + // Custom Error message + &.invalid + label:after, + &:focus.invalid + label:after { + content: attr(data-error); + color: $input-error-color; + opacity: 1; + } + + // Form Message Shared Styles + & + label:after { + display: block; + content: ""; + position: absolute; + top: 65px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; + } +} + +// Styling for input field wrapper +.input-field { + position: relative; + margin-top: 1rem; + + label { + color: $input-border-color; + position: absolute; + top: 0.8rem; + left: $gutter-width / 2; + font-size: 1rem; + cursor: text; + @include transition(.2s ease-out); + } + label.active { + font-size: $label-font-size; + @include transform(translateY(-140%)); + } + + // Prefix Icons + .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + @include transition(color .2s); + + &.active { color: $input-focus-color; } + } + .prefix ~ input, + .prefix ~ textarea { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); + } + .prefix ~ textarea { padding-top: .8rem; } + .prefix ~ label { margin-left: 3rem; } + + @media #{$medium-and-down} { + .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); + } + } + @media #{$small-and-down} { + .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); + } + } +} + + +// Search Field + + +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); + + &:focus { + background-color: $input-bg-color; + border: 0; + box-shadow: none; + color: #444; + + & + label i, + & ~ .mdi-navigation-close { + color: #444; + } + } + + & + label { + left: 1rem; + } + + & ~ .mdi-navigation-close { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; + } +} + + +// Default textarea +textarea { + width: 100%; + height: 3rem; + background-color: transparent; + + &.materialize-textarea { + overflow-y: hidden; /* prevents scroll bar flash */ + padding: 1.6rem 0; /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; + } +} + + +// For textarea autoresize +.hiddendiv { + display: none; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; /* prevents text jump on Enter keypress */ +} + + +/*************** + Radio Buttons +***************/ + +/* Remove default Radio Buttons */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; +} + +[type="radio"]:not(:checked) + label, +[type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + @include transition(.28s ease); + + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -khtml-user-select: none; /* webkit (konqueror) browsers */ + -ms-user-select: none; /* IE10+ */ +} + +[type="radio"] + label:before, +[type="radio"] + label:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + @include transition(.28s ease); +} + + +/* Unchecked styles */ +[type="radio"]:not(:checked) + label:before { + border-radius: 50%; + border: 2px solid $radio-empty-color; +} +[type="radio"]:not(:checked) + label:after { + border-radius: 50%; + border: 2px solid $radio-empty-color; + z-index: -1; + + @include transform(scale(0)); +} + +/* Checked styles */ +[type="radio"]:checked + label:before { + border-radius: 50%; + border: 2px solid transparent; +} +[type="radio"]:checked + label:after { + border-radius: 50%; + border: 2px solid $radio-fill-color; + background-color: $radio-fill-color; + z-index: 0; + @include transform(scale(1.02)); +} + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:before { + border-radius: 50%; + border: 2px solid $radio-fill-color; +} +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; + border: 2px solid $radio-fill-color; + background-color: $radio-fill-color; + z-index: 0; + @include transform(scale(.5)); +} + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid $input-disabled-color; +} +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: $input-disabled-color; +} + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, +[type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: $input-disabled-color; +} +[type="radio"]:disabled + label { + color: $input-disabled-color; +} +[type="radio"]:disabled:not(:checked) + label:before { + border-color: $input-disabled-color; +} +[type="radio"]:disabled:checked + label:after { + background-color: $input-disabled-color; + border-color: $input-disabled-solid-color; +} + + +/*************** + Checkboxes +***************/ + +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; +} +form p:last-child { + margin-bottom: 0; +} + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; +} + + +// Checkbox Styles +[type="checkbox"] { + + // Text Label Style + + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -khtml-user-select: none; /* webkit (konqueror) browsers */ + -ms-user-select: none; /* IE10+ */ + } + + /* checkbox aspect */ + + label:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid $radio-empty-color; + border-radius: 1px; + margin-top: 2px; + @include transition(.2s); + } + + &:not(:checked):disabled + label:before { + border: none; + background-color: $input-disabled-color; + } + +} + +[type="checkbox"]:checked { + + label:before { + top: -4px; + left: -3px; + width: 12px; height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid $radio-fill-color; + border-bottom: 2px solid $radio-fill-color; + @include transform(rotate(40deg)); + -webkit-backface-visibility: hidden; + @include transform-origin(100% 100%); + } + + &:disabled + label:before { + border-right: 2px solid $input-disabled-color; + border-bottom: 2px solid $input-disabled-color; + } + +} + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate { + +label:before { + left: -10px; + top: -11px; + width: 10px; height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid $radio-fill-color; + border-bottom: none; + @include transform(rotate(90deg)); + -webkit-backface-visibility: hidden; + @include transform-origin(100% 100%); + } + + // Disabled indeterminate + &:disabled + label:before { + border-right: 2px solid $input-disabled-color; + background-color: transparent; + } +} + + +// Filled in Style +[type="checkbox"].filled-in { + // General + + label:after { + border-radius: 2px; + } + + label:before, + + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; + } + // Unchecked style + &:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; + } + &:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid $radio-empty-color; + top: 0px; + z-index: 0; + } + // Checked style + &:checked { + + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid $input-bg-color; + border-bottom: 2px solid $input-bg-color; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; + } + + label:after { + top: 0px; + width: 20px; + height: 20px; + border: 2px solid $secondary-color; + background-color: $secondary-color; + z-index: 0; + } + } + // Disabled style + &:disabled:not(:checked) + label:before { + + background-color: transparent; + border: 2px solid transparent; + } + &:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: $input-disabled-solid-color; + } + &:disabled:checked + label:before { + background-color: transparent; + + } + &:disabled:checked + label:after { + background-color: $input-disabled-solid-color; + border-color: $input-disabled-solid-color; + } + +} + +/*************** + Switch +***************/ +.switch, +.switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; +} +.switch label { + cursor: pointer; +} +.switch label input[type=checkbox]{ + opacity: 0; + width: 0; + height: 0; +} +.switch label input[type=checkbox]:checked + .lever { + background-color: $switch-checked-lever-bg; +} +.switch label input[type=checkbox]:checked + .lever:after { + background-color: $switch-bg-color; +} +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: $switch-unchecked-lever-bg; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; +} +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: $switch-unchecked-bg; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0,0,0,.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; +} +// Switch active style +input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px transparentize($switch-bg-color, .9); +} +input[type=checkbox]:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px rgba(0, 0, 0, .08); +} +.switch label input[type=checkbox]:checked + .lever:after { + left: 24px; +} + +// Disabled Styles + +.switch input[type=checkbox][disabled] + .lever{ + cursor: default; +} +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: $input-disabled-solid-color; +} + + + + +/*************** + Select Field +***************/ + +.select-label { + position: absolute; +} + +.select-wrapper { + position: relative; + + input.select-dropdown { + position: relative; + cursor: pointer; + // color: #444; + background-color: transparent; + border: none; + border-bottom: 1px solid $input-border-color; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; + } + span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; + &.disabled { + color: $input-disabled-color; + } + } + & + label { + position: absolute; + top: -14px; + font-size: $label-font-size; + } +} + +select { display: none; } +select.browser-default { display: block; } + + +// Disabled styles +select:disabled { + color: rgba(0,0,0,.3); +} +.select-wrapper input.select-dropdown:disabled { + color: rgba(0,0,0,.3); + cursor: default; + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -ms-user-select: none; /* IE10+ */ + border-bottom: 1px solid rgba(0,0,0,.3); +} +.select-wrapper i { + color: rgba(0,0,0,.3); +} +.select-dropdown li.disabled { + color: rgba(0,0,0,.3); + background-color: transparent; +} + + +/********************* + File Input +**********************/ +.file-field { + position: relative; + + .file-path-wrapper { + overflow: hidden; + padding-left: 10px; + } + input.file-path { width: 100%; } + + .btn { + float: left; + height: 3rem; + line-height: 3rem; + } + + span { + cursor: pointer; + } + + input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); + } +} + + + +/*************** + Range +***************/ + +.range-field { + position: relative; +} + +input[type=range], input[type=range] + .thumb { + @extend .no-select; + cursor: pointer; +} + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0px; + padding: 0; +} +input[type=range] + .thumb { + position: absolute; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: $radio-fill-color; + top: 10px; + margin-left: -6px; + + @include transform-origin(50% 50%); + @include transform(rotate(-45deg)); + + .value { + display: block; + width: 30px; + text-align: center; + color: $radio-fill-color; + font-size: 0; + @include transform(rotate(45deg)); + } + + &.active { + border-radius: 50% 50% 50% 0; + + .value { + color: $input-bg-color; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; + } + } +} + + +input[type=range]:focus { + outline: none; +} + + + +// WebKit +input[type=range]{ + -webkit-appearance: none; +} + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; +} + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background-color: $radio-fill-color; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + @include transition(.3s); +} + +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ccc; +} + +// FireFox +input[type=range]{ + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + + /*required for proper track sizing in FF*/ +} + +input[type=range]::-moz-range-track { + height: 3px; + background: #ddd; + border: none; +} + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: $radio-fill-color; + margin-top: -5px; +} + +/*hide the outline behind the border*/ +input[type=range]:-moz-focusring{ + outline: 1px solid white; + outline-offset: -1px; +} + +input[type=range]:focus::-moz-range-track { + background: #ccc; +} + +// IE 10+ +input[type=range]::-ms-track { + height: 3px; + + /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ + background: transparent; + + /*leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + + /*remove default tick marks*/ + color: transparent; +} +input[type=range]::-ms-fill-lower { + background: #777; +} +input[type=range]::-ms-fill-upper { + background: #ddd; +} +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: $radio-fill-color; +} +input[type=range]:focus::-ms-fill-lower { + background: #888; +} +input[type=range]:focus::-ms-fill-upper { + background: #ccc; +} + +/*************************** + Text Inputs + Textarea +****************************/ + +select { + background-color: rgba(255, 255, 255, 0.90); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; + } diff --git a/system/admin/static/editor/sass/components/_global.scss b/system/admin/static/editor/sass/components/_global.scss new file mode 100644 index 0000000..c246270 --- /dev/null +++ b/system/admin/static/editor/sass/components/_global.scss @@ -0,0 +1,718 @@ +@charset "UTF-8"; + + +//Default styles + +html { + box-sizing: border-box; +} +*, *:before, *:after { + box-sizing: inherit; +} + +body { + // display: flex; + // min-height: 100vh; + // flex-direction: column; +} + +main { + // flex: 1 0 auto; +} + +ul { + list-style-type: none; +} + +a { + color: $link-color; + text-decoration: none; + + // Gets rid of tap active state + -webkit-tap-highlight-color: transparent; +} + + +// Positioning +.valign-wrapper { + @include flexbox(); + @include align(center); + + .valign { + display: block; + } +} + + +ul { + padding: 0; + li { + list-style-type: none; + } +} + +// classic clearfix +.clearfix { + clear: both; +} + + +// Z-levels +.z-depth-0 { + box-shadow: none !important; +} +.z-depth-1{ + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} +.z-depth-1-half{ + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); +} +.z-depth-2{ + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} +.z-depth-3{ + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); +} +.z-depth-4{ + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); +} +.z-depth-5{ + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); +} + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +// Dividers + +.divider { + height: 1px; + overflow: hidden; + background-color: color("grey", "lighten-2"); +} + + +// Blockquote + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid $primary-color; +} + +// Icon Styles + +i { + line-height: inherit; + + &.left { + float: left; + margin-right: 15px; + } + &.right { + float: right; + margin-left: 15px; + } + &.tiny { + font-size: 1rem; + } + &.small { + font-size: 2rem; + } + &.medium { + font-size: 4rem; + } + &.large { + font-size: 6rem; + } +} + +// Images +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; +} + + +// Pagination + +.pagination { + + li { + float: left; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + border-radius: 2px; + text-align: center; + + a { color: #444; } + + &.active a { color: #fff; } + + &.active { background-color: $primary-color; } + + &.disabled a { + cursor: default; + color: #999; + } + + i { + font-size: 2rem; + } + } + + + li.pages ul li { + display: inline-block; + float: none; + } +} +@media #{$medium-and-down} { + .pagination { + width: 100%; + + li.prev, + li.next { + width: 10%; + } + + li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; + } + } +} + + +// Parallax +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; +} + +.parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; + + img { + display: none; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + transform: translateX(-50%); + } +} + +// Pushpin +.pin-top, .pin-bottom { + position: relative; +} +.pinned { + position: fixed !important; +} + +/********************* + Transition Classes +**********************/ + +ul.staggered-list li { + opacity: 0; +} + +.fade-in { + opacity: 0; + transform-origin: 0 50%; +} + + +/********************* + Media Query Classes +**********************/ +.hide-on-small-only, .hide-on-small-and-down { + @media #{$small-and-down} { + display: none !important; + } +} +.hide-on-med-and-down { + @media #{$medium-and-down} { + display: none !important; + } +} +.hide-on-med-and-up { + @media #{$medium-and-up} { + display: none !important; + } +} +.hide-on-med-only { + @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { + display: none !important; + } +} +.hide-on-large-only { + @media #{$large-and-up} { + display: none !important; + } +} +.show-on-large { + @media #{$large-and-up} { + display: initial !important; + } +} +.show-on-medium { + @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { + display: initial !important; + } +} +.show-on-small { + @media #{$small-and-down} { + display: initial !important; + } +} +.show-on-medium-and-up { + @media #{$medium-and-up} { + display: initial !important; + } +} +.show-on-medium-and-down { + @media #{$medium-and-down} { + display: initial !important; + } +} + + +// Center text on mobile +.center-on-small-only { + @media #{$small-and-down} { + text-align: center; + } +} + +// Footer +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: $footer-bg-color; + + .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255,255,255,.8); + background-color: rgba(51,51,51,.08);; + @extend .light; + } +} + +// Tables +table, th, td { + border: none; +} + +table { + width:100%; + display: table; + + &.bordered > thead > tr, + &.bordered > tbody > tr { + border-bottom: 1px solid $table-border-color; + } + + &.striped > tbody { + > tr:nth-child(odd) { + background-color: $table-striped-color; + } + + > tr > td { + border-radius: 0px; + } + } + + &.hoverable > tbody > tr { + @include transition(background-color .25s ease); + &:hover { + background-color: $table-striped-color; + } + } + + &.centered { + thead tr th, tbody tr td { + text-align: center; + + } + } + +} + +thead { + border-bottom: 1px solid $table-border-color; +} + +td, th{ + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; +} + +// Responsive Table +@media #{$medium-and-down} { + + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + + th, + td { + margin: 0; + vertical-align: top; + } + + th { text-align: left; } + thead { + display: block; + float: left; + + tr { + display: block; + padding: 0 10px 0 0; + + th::before { + content: "\00a0"; + } + } + } + tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; + + tr { + display: inline-block; + vertical-align: top; + } + } + th { + display: block; + text-align: right; + } + td { + display: block; + min-height: 1.25em; + text-align: left; + } + tr { padding: 0 10px; } + + /* sort out borders */ + thead { + border: 0; + border-right: 1px solid $table-border-color; + } + + &.bordered { + th { border-bottom: 0; border-left: 0; } + td { border-left: 0; border-right: 0; border-bottom: 0; } + tr { border: 0; } + tbody tr { border-right: 1px solid $table-border-color; } + } + + } + +} + + +// Collections +.collection { + margin: $element-top-margin 0 $element-bottom-margin 0; + border: 1px solid $collection-border-color; + border-radius: 2px; + overflow: hidden; + position: relative; + + .collection-item { + background-color: $collection-bg-color; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid $collection-border-color; + + // Avatar Collection + &.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; + + .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; + } + i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; + } + + + .title { + font-size: 16px; + } + + p { + margin: 0; + } + + .secondary-content { + position: absolute; + top: 16px; + right: 16px; + } + + } + + + &:last-child { + border-bottom: none; + } + + &.active { + background-color: $collection-active-bg-color; + color: $collection-active-color; + } + } + a.collection-item{ + display: block; + @include transition(.25s); + color: $secondary-color; + &:not(.active) { + &:hover { + background-color: $collection-hover-bg-color; + } + } + } + + &.with-header { + .collection-header { + background-color: $collection-bg-color; + border-bottom: 1px solid $collection-border-color; + padding: 10px 20px; + } + .collection-item { + padding-left: 30px; + } + .collection-item.avatar { + padding-left: 72px; + } + } + +} +// Made less specific to allow easier overriding +.secondary-content { + float: right; + color: $secondary-color; +} + + +// Badges +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: color('grey', 'darken-1'); + position: absolute; + right: 15px; + @include box-sizing(border-box); + + &.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: $badge-bg-color; + border-radius: 2px; + } + &.new:after { + content: " new"; + } +} + +// Responsive Videos +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; + &.no-controls { + padding-top: 0; + } + + iframe, object, embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +} + +// Progress Bar +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: lighten($progress-bar-color, 40%); + border-radius: 2px; + margin: $element-top-margin 0 $element-bottom-margin 0; + overflow: hidden; + .determinate { + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + background-color: $progress-bar-color; + @include transition(width .3s linear); + } + .indeterminate { + background-color: $progress-bar-color; + &:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left:0; + bottom: 0; + will-change: left, right; + // Custom bezier + @include animation(indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite); + + } + &:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left:0; + bottom: 0; + will-change: left, right; + // Custom bezier + @include animation(indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite); + @include animation-delay(1.15s); + } + } +} +@include keyframes(indeterminate) { + 0% { + left: -35%; + right:100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@include keyframes(indeterminate-short) { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + + +/******************* + Utility Classes +*******************/ + +.hide { + display: none !important; +} + +// Text Align +.left-align { + text-align: left; +} +.right-align { + text-align: right +} +.center, .center-align { + text-align: center; +} + +.left { + float: left !important; +} +.right { + float: right !important; +} + +// No Text Select +.no-select { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.circle { + border-radius: 50%; +} + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.no-padding { + padding: 0 !important; +} diff --git a/system/admin/static/editor/sass/components/_grid.scss b/system/admin/static/editor/sass/components/_grid.scss new file mode 100644 index 0000000..68d727d --- /dev/null +++ b/system/admin/static/editor/sass/components/_grid.scss @@ -0,0 +1,117 @@ +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; +} +@media #{$medium-and-up} { + .container { + width: 85%; + } +} +@media #{$large-and-up} { + .container { + width: 70%; + } +} +.container .row { + margin-left: (-1 * $gutter-width / 2); + margin-right: (-1 * $gutter-width / 2); +} + +.section { + padding-top: 1rem; + padding-bottom: 1rem; + + &.no-pad { + padding: 0; + } + &.no-pad-bot { + padding-bottom: 0; + } + &.no-pad-top { + padding-top: 0; + } +} + + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; + + // Clear floating children + &:after { + content: ""; + display: table; + clear: both; + } + + .col { + float: left; + @include box-sizing(border-box); + padding: 0 $gutter-width / 2; + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.s#{$i} { + width: $perc; + margin-left: 0; + } + $i: $i + 1; + } + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.offset-s#{$i} { + margin-left: $perc; + } + $i: $i + 1; + } + + @media #{$medium-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.m#{$i} { + width: $perc; + margin-left: 0; + } + $i: $i + 1; + } + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.offset-m#{$i} { + margin-left: $perc; + } + $i: $i + 1; + } + + } + + @media #{$large-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.l#{$i} { + width: $perc; + margin-left: 0; + } + $i: $i + 1; + } + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.offset-l#{$i} { + margin-left: $perc; + } + $i: $i + 1; + } + + } + + } +} diff --git a/system/admin/static/editor/sass/components/_icons-material-design.scss b/system/admin/static/editor/sass/components/_icons-material-design.scss new file mode 100644 index 0000000..3c78470 --- /dev/null +++ b/system/admin/static/editor/sass/components/_icons-material-design.scss @@ -0,0 +1,3257 @@ +$font-mdi : 'Material-Design-Icons'; +$mdi-prefix : 'mdi-'; + +@font-face { + font-family: "#{$font-mdi}"; + src:url("#{$icons-font-path}#{$font-mdi}.eot?#iefix") format("embedded-opentype"), + url("#{$icons-font-path}#{$font-mdi}.woff2") format("woff2"), + url("#{$icons-font-path}#{$font-mdi}.woff") format("woff"), + url("#{$icons-font-path}#{$font-mdi}.ttf") format("truetype"), + url("#{$icons-font-path}#{$font-mdi}.svg##{$font-mdi}") format("svg"); + font-weight: normal; + font-style: normal; +} + +[class^="mdi-"], [class*="mdi-"] { + speak: none; + display: inline-block; + font-family: "Material-Design-Icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-rendering: auto; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); + &:before { + display: inline-block; + speak: none; + text-decoration: inherit; + } + &.pull-left { + margin-right: .3em; + } + &.pull-right{ + margin-left: .3em; + } + &.mdi-lg:before, &.mdi-lg:after { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; + } + &.mdi-2x:before, &.mdi-2x:after { + font-size: 2em; + } + &.mdi-3x:before, &.mdi-3x:after { + font-size: 3em; + } + &.mdi-4x:before, &.mdi-4x:after { + font-size: 4em; + } + &.mdi-5x:before, &.mdi-5x:after { + font-size: 5em; + } +} + +[class^="mdi-device-signal-cellular-"], +[class^="mdi-device-battery-"], +[class^="mdi-device-battery-charging-"], +[class^="mdi-device-signal-cellular-connected-no-internet-"], +[class^="mdi-device-signal-wifi-"], +[class^="mdi-device-signal-wifi-statusbar-not-connected"], +.mdi-device-network-wifi{ + &:after { + opacity: .3; + position: absolute; + left: 0; + top: 0; + z-index: 1; + display: inline-block; + speak: none; + text-decoration: inherit; + } +} + +[class^="mdi-device-signal-cellular-"]:after {content:"\e758";} +[class^="mdi-device-battery-"]:after {content:"\e735";} +[class^="mdi-device-battery-charging-"]:after {content:"\e733";} +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after {content:"\e75d";} +[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after {content:"\e765";} +[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after {content:"\e8f7";} + +.mdi-device-signal-cellular-off, .mdi-device-signal-cellular-null, .mdi-device-signal-cellular-no-sim, .mdi-device-signal-wifi-off, .mdi-device-signal-wifi-4-bar, .mdi-device-signal-cellular-4-bar, .mdi-device-battery-alert, .mdi-device-signal-cellular-connected-no-internet-4-bar, .mdi-device-battery-std, .mdi-device-battery-full .mdi-device-battery-unknown { + &:after { + content: ""; + } +} + +.mdi-fw { + width: 1.28571429em; + text-align: center; +} +.mdi-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.mdi-ul > li { + position: relative; +} +.mdi-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.mdi-li.mdi-lg { + left: -1.85714286em; +} +.mdi-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} + +.mdi-spin { + -webkit-animation: mdi-spin 2s infinite linear; + animation: mdi-spin 2s infinite linear; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mdi-pulse { + -webkit-animation: mdi-spin 1s steps(8) infinite; + animation: mdi-spin 1s steps(8) infinite ; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +@-webkit-keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.mdi-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.mdi-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.mdi-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.mdi-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.mdi-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .mdi-rotate-90, +:root .mdi-rotate-180, +:root .mdi-rotate-270, +:root .mdi-flip-horizontal, +:root .mdi-flip-vertical { + filter: none; +} +.mdi-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.mdi-stack-1x, +.mdi-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.mdi-stack-1x { + line-height: inherit; +} +.mdi-stack-2x { + font-size: 2em; +} +.mdi-inverse { + color: #ffffff; +} + + +/* Start Icons */ + + +.mdi-action-3d-rotation:before { + content: "\e600"; +} + +.mdi-action-accessibility:before { + content: "\e601"; +} + +.mdi-action-account-balance-wallet:before { + content: "\e602"; +} + +.mdi-action-account-balance:before { + content: "\e603"; +} + +.mdi-action-account-box:before { + content: "\e604"; +} + +.mdi-action-account-child:before { + content: "\e605"; +} + +.mdi-action-account-circle:before { + content: "\e606"; +} + +.mdi-action-add-shopping-cart:before { + content: "\e607"; +} + +.mdi-action-alarm-add:before { + content: "\e608"; +} + +.mdi-action-alarm-off:before { + content: "\e609"; +} + +.mdi-action-alarm-on:before { + content: "\e60a"; +} + +.mdi-action-alarm:before { + content: "\e60b"; +} + +.mdi-action-android:before { + content: "\e60c"; +} + +.mdi-action-announcement:before { + content: "\e60d"; +} + +.mdi-action-aspect-ratio:before { + content: "\e60e"; +} + +.mdi-action-assessment:before { + content: "\e60f"; +} + +.mdi-action-assignment-ind:before { + content: "\e610"; +} + +.mdi-action-assignment-late:before { + content: "\e611"; +} + +.mdi-action-assignment-return:before { + content: "\e612"; +} + +.mdi-action-assignment-returned:before { + content: "\e613"; +} + +.mdi-action-assignment-turned-in:before { + content: "\e614"; +} + +.mdi-action-assignment:before { + content: "\e615"; +} + +.mdi-action-autorenew:before { + content: "\e616"; +} + +.mdi-action-backup:before { + content: "\e617"; +} + +.mdi-action-book:before { + content: "\e618"; +} + +.mdi-action-bookmark-outline:before { + content: "\e619"; +} + +.mdi-action-bookmark:before { + content: "\e61a"; +} + +.mdi-action-bug-report:before { + content: "\e61b"; +} + +.mdi-action-cached:before { + content: "\e61c"; +} + +.mdi-action-check-circle:before { + content: "\e61d"; +} + +.mdi-action-class:before { + content: "\e61e"; +} + +.mdi-action-credit-card:before { + content: "\e61f"; +} + +.mdi-action-dashboard:before { + content: "\e620"; +} + +.mdi-action-delete:before { + content: "\e621"; +} + +.mdi-action-description:before { + content: "\e622"; +} + +.mdi-action-dns:before { + content: "\e623"; +} + +.mdi-action-done-all:before { + content: "\e624"; +} + +.mdi-action-done:before { + content: "\e625"; +} + +.mdi-action-event:before { + content: "\e626"; +} + +.mdi-action-exit-to-app:before { + content: "\e627"; +} + +.mdi-action-explore:before { + content: "\e628"; +} + +.mdi-action-extension:before { + content: "\e629"; +} + +.mdi-action-face-unlock:before { + content: "\e62a"; +} + +.mdi-action-favorite-outline:before { + content: "\e62b"; +} + +.mdi-action-favorite:before { + content: "\e62c"; +} + +.mdi-action-find-in-page:before { + content: "\e62d"; +} + +.mdi-action-find-replace:before { + content: "\e62e"; +} + +.mdi-action-flip-to-back:before { + content: "\e62f"; +} + +.mdi-action-flip-to-front:before { + content: "\e630"; +} + +.mdi-action-get-app:before { + content: "\e631"; +} + +.mdi-action-grade:before { + content: "\e632"; +} + +.mdi-action-group-work:before { + content: "\e633"; +} + +.mdi-action-help:before { + content: "\e634"; +} + +.mdi-action-highlight-remove:before { + content: "\e635"; +} + +.mdi-action-history:before { + content: "\e636"; +} + +.mdi-action-home:before { + content: "\e637"; +} + +.mdi-action-https:before { + content: "\e638"; +} + +.mdi-action-info-outline:before { + content: "\e639"; +} + +.mdi-action-info:before { + content: "\e63a"; +} + +.mdi-action-input:before { + content: "\e63b"; +} + +.mdi-action-invert-colors:before { + content: "\e63c"; +} + +.mdi-action-label-outline:before { + content: "\e63d"; +} + +.mdi-action-label:before { + content: "\e63e"; +} + +.mdi-action-language:before { + content: "\e63f"; +} + +.mdi-action-launch:before { + content: "\e640"; +} + +.mdi-action-list:before { + content: "\e641"; +} + +.mdi-action-lock-open:before { + content: "\e642"; +} + +.mdi-action-lock-outline:before { + content: "\e643"; +} + +.mdi-action-lock:before { + content: "\e644"; +} + +.mdi-action-loyalty:before { + content: "\e645"; +} + +.mdi-action-markunread-mailbox:before { + content: "\e646"; +} + +.mdi-action-note-add:before { + content: "\e647"; +} + +.mdi-action-open-in-browser:before { + content: "\e648"; +} + +.mdi-action-open-in-new:before { + content: "\e649"; +} + +.mdi-action-open-with:before { + content: "\e64a"; +} + +.mdi-action-pageview:before { + content: "\e64b"; +} + +.mdi-action-payment:before { + content: "\e64c"; +} + +.mdi-action-perm-camera-mic:before { + content: "\e64d"; +} + +.mdi-action-perm-contact-cal:before { + content: "\e64e"; +} + +.mdi-action-perm-data-setting:before { + content: "\e64f"; +} + +.mdi-action-perm-device-info:before { + content: "\e650"; +} + +.mdi-action-perm-identity:before { + content: "\e651"; +} + +.mdi-action-perm-media:before { + content: "\e652"; +} + +.mdi-action-perm-phone-msg:before { + content: "\e653"; +} + +.mdi-action-perm-scan-wifi:before { + content: "\e654"; +} + +.mdi-action-picture-in-picture:before { + content: "\e655"; +} + +.mdi-action-polymer:before { + content: "\e656"; +} + +.mdi-action-print:before { + content: "\e657"; +} + +.mdi-action-query-builder:before { + content: "\e658"; +} + +.mdi-action-question-answer:before { + content: "\e659"; +} + +.mdi-action-receipt:before { + content: "\e65a"; +} + +.mdi-action-redeem:before { + content: "\e65b"; +} + +.mdi-action-reorder:before { + content: "\e65c"; +} + +.mdi-action-report-problem:before { + content: "\e65d"; +} + +.mdi-action-restore:before { + content: "\e65e"; +} + +.mdi-action-room:before { + content: "\e65f"; +} + +.mdi-action-schedule:before { + content: "\e660"; +} + +.mdi-action-search:before { + content: "\e661"; +} + +.mdi-action-settings-applications:before { + content: "\e662"; +} + +.mdi-action-settings-backup-restore:before { + content: "\e663"; +} + +.mdi-action-settings-bluetooth:before { + content: "\e664"; +} + +.mdi-action-settings-cell:before { + content: "\e665"; +} + +.mdi-action-settings-display:before { + content: "\e666"; +} + +.mdi-action-settings-ethernet:before { + content: "\e667"; +} + +.mdi-action-settings-input-antenna:before { + content: "\e668"; +} + +.mdi-action-settings-input-component:before { + content: "\e669"; +} + +.mdi-action-settings-input-composite:before { + content: "\e66a"; +} + +.mdi-action-settings-input-hdmi:before { + content: "\e66b"; +} + +.mdi-action-settings-input-svideo:before { + content: "\e66c"; +} + +.mdi-action-settings-overscan:before { + content: "\e66d"; +} + +.mdi-action-settings-phone:before { + content: "\e66e"; +} + +.mdi-action-settings-power:before { + content: "\e66f"; +} + +.mdi-action-settings-remote:before { + content: "\e670"; +} + +.mdi-action-settings-voice:before { + content: "\e671"; +} + +.mdi-action-settings:before { + content: "\e672"; +} + +.mdi-action-shop-two:before { + content: "\e673"; +} + +.mdi-action-shop:before { + content: "\e674"; +} + +.mdi-action-shopping-basket:before { + content: "\e675"; +} + +.mdi-action-shopping-cart:before { + content: "\e676"; +} + +.mdi-action-speaker-notes:before { + content: "\e677"; +} + +.mdi-action-spellcheck:before { + content: "\e678"; +} + +.mdi-action-star-rate:before { + content: "\e679"; +} + +.mdi-action-stars:before { + content: "\e67a"; +} + +.mdi-action-store:before { + content: "\e67b"; +} + +.mdi-action-subject:before { + content: "\e67c"; +} + +.mdi-action-supervisor-account:before { + content: "\e67d"; +} + +.mdi-action-swap-horiz:before { + content: "\e67e"; +} + +.mdi-action-swap-vert-circle:before { + content: "\e67f"; +} + +.mdi-action-swap-vert:before { + content: "\e680"; +} + +.mdi-action-system-update-tv:before { + content: "\e681"; +} + +.mdi-action-tab-unselected:before { + content: "\e682"; +} + +.mdi-action-tab:before { + content: "\e683"; +} + +.mdi-action-theaters:before { + content: "\e684"; +} + +.mdi-action-thumb-down:before { + content: "\e685"; +} + +.mdi-action-thumb-up:before { + content: "\e686"; +} + +.mdi-action-thumbs-up-down:before { + content: "\e687"; +} + +.mdi-action-toc:before { + content: "\e688"; +} + +.mdi-action-today:before { + content: "\e689"; +} + +.mdi-action-track-changes:before { + content: "\e68a"; +} + +.mdi-action-translate:before { + content: "\e68b"; +} + +.mdi-action-trending-down:before { + content: "\e68c"; +} + +.mdi-action-trending-neutral:before { + content: "\e68d"; +} + +.mdi-action-trending-up:before { + content: "\e68e"; +} + +.mdi-action-turned-in-not:before { + content: "\e68f"; +} + +.mdi-action-turned-in:before { + content: "\e690"; +} + +.mdi-action-verified-user:before { + content: "\e691"; +} + +.mdi-action-view-agenda:before { + content: "\e692"; +} + +.mdi-action-view-array:before { + content: "\e693"; +} + +.mdi-action-view-carousel:before { + content: "\e694"; +} + +.mdi-action-view-column:before { + content: "\e695"; +} + +.mdi-action-view-day:before { + content: "\e696"; +} + +.mdi-action-view-headline:before { + content: "\e697"; +} + +.mdi-action-view-list:before { + content: "\e698"; +} + +.mdi-action-view-module:before { + content: "\e699"; +} + +.mdi-action-view-quilt:before { + content: "\e69a"; +} + +.mdi-action-view-stream:before { + content: "\e69b"; +} + +.mdi-action-view-week:before { + content: "\e69c"; +} + +.mdi-action-visibility-off:before { + content: "\e69d"; +} + +.mdi-action-visibility:before { + content: "\e69e"; +} + +.mdi-action-wallet-giftcard:before { + content: "\e69f"; +} + +.mdi-action-wallet-membership:before { + content: "\e6a0"; +} + +.mdi-action-wallet-travel:before { + content: "\e6a1"; +} + +.mdi-action-work:before { + content: "\e6a2"; +} + +.mdi-alert-error:before { + content: "\e6a3"; +} + +.mdi-alert-warning:before { + content: "\e6a4"; +} + +.mdi-av-album:before { + content: "\e6a5"; +} + +.mdi-av-closed-caption:before { + content: "\e6a6"; +} + +.mdi-av-equalizer:before { + content: "\e6a7"; +} + +.mdi-av-explicit:before { + content: "\e6a8"; +} + +.mdi-av-fast-forward:before { + content: "\e6a9"; +} + +.mdi-av-fast-rewind:before { + content: "\e6aa"; +} + +.mdi-av-games:before { + content: "\e6ab"; +} + +.mdi-av-hearing:before { + content: "\e6ac"; +} + +.mdi-av-high-quality:before { + content: "\e6ad"; +} + +.mdi-av-loop:before { + content: "\e6ae"; +} + +.mdi-av-mic-none:before { + content: "\e6af"; +} + +.mdi-av-mic-off:before { + content: "\e6b0"; +} + +.mdi-av-mic:before { + content: "\e6b1"; +} + +.mdi-av-movie:before { + content: "\e6b2"; +} + +.mdi-av-my-library-add:before { + content: "\e6b3"; +} + +.mdi-av-my-library-books:before { + content: "\e6b4"; +} + +.mdi-av-my-library-music:before { + content: "\e6b5"; +} + +.mdi-av-new-releases:before { + content: "\e6b6"; +} + +.mdi-av-not-interested:before { + content: "\e6b7"; +} + +.mdi-av-pause-circle-fill:before { + content: "\e6b8"; +} + +.mdi-av-pause-circle-outline:before { + content: "\e6b9"; +} + +.mdi-av-pause:before { + content: "\e6ba"; +} + +.mdi-av-play-arrow:before { + content: "\e6bb"; +} + +.mdi-av-play-circle-fill:before { + content: "\e6bc"; +} + +.mdi-av-play-circle-outline:before { + content: "\e6bd"; +} + +.mdi-av-play-shopping-bag:before { + content: "\e6be"; +} + +.mdi-av-playlist-add:before { + content: "\e6bf"; +} + +.mdi-av-queue-music:before { + content: "\e6c0"; +} + +.mdi-av-queue:before { + content: "\e6c1"; +} + +.mdi-av-radio:before { + content: "\e6c2"; +} + +.mdi-av-recent-actors:before { + content: "\e6c3"; +} + +.mdi-av-repeat-one:before { + content: "\e6c4"; +} + +.mdi-av-repeat:before { + content: "\e6c5"; +} + +.mdi-av-replay:before { + content: "\e6c6"; +} + +.mdi-av-shuffle:before { + content: "\e6c7"; +} + +.mdi-av-skip-next:before { + content: "\e6c8"; +} + +.mdi-av-skip-previous:before { + content: "\e6c9"; +} + +.mdi-av-snooze:before { + content: "\e6ca"; +} + +.mdi-av-stop:before { + content: "\e6cb"; +} + +.mdi-av-subtitles:before { + content: "\e6cc"; +} + +.mdi-av-surround-sound:before { + content: "\e6cd"; +} + +.mdi-av-timer:before { + content: "\e6ce"; +} + +.mdi-av-video-collection:before { + content: "\e6cf"; +} + +.mdi-av-videocam-off:before { + content: "\e6d0"; +} + +.mdi-av-videocam:before { + content: "\e6d1"; +} + +.mdi-av-volume-down:before { + content: "\e6d2"; +} + +.mdi-av-volume-mute:before { + content: "\e6d3"; +} + +.mdi-av-volume-off:before { + content: "\e6d4"; +} + +.mdi-av-volume-up:before { + content: "\e6d5"; +} + +.mdi-av-web:before { + content: "\e6d6"; +} + +.mdi-communication-business:before { + content: "\e6d7"; +} + +.mdi-communication-call-end:before { + content: "\e6d8"; +} + +.mdi-communication-call-made:before { + content: "\e6d9"; +} + +.mdi-communication-call-merge:before { + content: "\e6da"; +} + +.mdi-communication-call-missed:before { + content: "\e6db"; +} + +.mdi-communication-call-received:before { + content: "\e6dc"; +} + +.mdi-communication-call-split:before { + content: "\e6dd"; +} + +.mdi-communication-call:before { + content: "\e6de"; +} + +.mdi-communication-chat:before { + content: "\e6df"; +} + +.mdi-communication-clear-all:before { + content: "\e6e0"; +} + +.mdi-communication-comment:before { + content: "\e6e1"; +} + +.mdi-communication-contacts:before { + content: "\e6e2"; +} + +.mdi-communication-dialer-sip:before { + content: "\e6e3"; +} + +.mdi-communication-dialpad:before { + content: "\e6e4"; +} + +.mdi-communication-dnd-on:before { + content: "\e6e5"; +} + +.mdi-communication-email:before { + content: "\e6e6"; +} + +.mdi-communication-forum:before { + content: "\e6e7"; +} + +.mdi-communication-import-export:before { + content: "\e6e8"; +} + +.mdi-communication-invert-colors-off:before { + content: "\e6e9"; +} + +.mdi-communication-invert-colors-on:before { + content: "\e6ea"; +} + +.mdi-communication-live-help:before { + content: "\e6eb"; +} + +.mdi-communication-location-off:before { + content: "\e6ec"; +} + +.mdi-communication-location-on:before { + content: "\e6ed"; +} + +.mdi-communication-message:before { + content: "\e6ee"; +} + +.mdi-communication-messenger:before { + content: "\e6ef"; +} + +.mdi-communication-no-sim:before { + content: "\e6f0"; +} + +.mdi-communication-phone:before { + content: "\e6f1"; +} + +.mdi-communication-portable-wifi-off:before { + content: "\e6f2"; +} + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f3"; +} + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f4"; +} + +.mdi-communication-ring-volume:before { + content: "\e6f5"; +} + +.mdi-communication-stay-current-landscape:before { + content: "\e6f6"; +} + +.mdi-communication-stay-current-portrait:before { + content: "\e6f7"; +} + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f8"; +} + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f9"; +} + +.mdi-communication-swap-calls:before { + content: "\e6fa"; +} + +.mdi-communication-textsms:before { + content: "\e6fb"; +} + +.mdi-communication-voicemail:before { + content: "\e6fc"; +} + +.mdi-communication-vpn-key:before { + content: "\e6fd"; +} + +.mdi-content-add-box:before { + content: "\e6fe"; +} + +.mdi-content-add-circle-outline:before { + content: "\e6ff"; +} + +.mdi-content-add-circle:before { + content: "\e700"; +} + +.mdi-content-add:before { + content: "\e701"; +} + +.mdi-content-archive:before { + content: "\e702"; +} + +.mdi-content-backspace:before { + content: "\e703"; +} + +.mdi-content-block:before { + content: "\e704"; +} + +.mdi-content-clear:before { + content: "\e705"; +} + +.mdi-content-content-copy:before { + content: "\e706"; +} + +.mdi-content-content-cut:before { + content: "\e707"; +} + +.mdi-content-content-paste:before { + content: "\e708"; +} + +.mdi-content-create:before { + content: "\e709"; +} + +.mdi-content-drafts:before { + content: "\e70a"; +} + +.mdi-content-filter-list:before { + content: "\e70b"; +} + +.mdi-content-flag:before { + content: "\e70c"; +} + +.mdi-content-forward:before { + content: "\e70d"; +} + +.mdi-content-gesture:before { + content: "\e70e"; +} + +.mdi-content-inbox:before { + content: "\e70f"; +} + +.mdi-content-link:before { + content: "\e710"; +} + +.mdi-content-mail:before { + content: "\e711"; +} + +.mdi-content-markunread:before { + content: "\e712"; +} + +.mdi-content-redo:before { + content: "\e713"; +} + +.mdi-content-remove-circle-outline:before { + content: "\e714"; +} + +.mdi-content-remove-circle:before { + content: "\e715"; +} + +.mdi-content-remove:before { + content: "\e716"; +} + +.mdi-content-reply-all:before { + content: "\e717"; +} + +.mdi-content-reply:before { + content: "\e718"; +} + +.mdi-content-report:before { + content: "\e719"; +} + +.mdi-content-save:before { + content: "\e71a"; +} + +.mdi-content-select-all:before { + content: "\e71b"; +} + +.mdi-content-send:before { + content: "\e71c"; +} + +.mdi-content-sort:before { + content: "\e71d"; +} + +.mdi-content-text-format:before { + content: "\e71e"; +} + +.mdi-content-undo:before { + content: "\e71f"; +} + +.mdi-editor-attach-file:before { + content: "\e776"; +} + +.mdi-editor-attach-money:before { + content: "\e777"; +} + +.mdi-editor-border-all:before { + content: "\e778"; +} + +.mdi-editor-border-bottom:before { + content: "\e779"; +} + +.mdi-editor-border-clear:before { + content: "\e77a"; +} + +.mdi-editor-border-color:before { + content: "\e77b"; +} + +.mdi-editor-border-horizontal:before { + content: "\e77c"; +} + +.mdi-editor-border-inner:before { + content: "\e77d"; +} + +.mdi-editor-border-left:before { + content: "\e77e"; +} + +.mdi-editor-border-outer:before { + content: "\e77f"; +} + +.mdi-editor-border-right:before { + content: "\e780"; +} + +.mdi-editor-border-style:before { + content: "\e781"; +} + +.mdi-editor-border-top:before { + content: "\e782"; +} + +.mdi-editor-border-vertical:before { + content: "\e783"; +} + +.mdi-editor-format-align-center:before { + content: "\e784"; +} + +.mdi-editor-format-align-justify:before { + content: "\e785"; +} + +.mdi-editor-format-align-left:before { + content: "\e786"; +} + +.mdi-editor-format-align-right:before { + content: "\e787"; +} + +.mdi-editor-format-bold:before { + content: "\e788"; +} + +.mdi-editor-format-clear:before { + content: "\e789"; +} + +.mdi-editor-format-color-fill:before { + content: "\e78a"; +} + +.mdi-editor-format-color-reset:before { + content: "\e78b"; +} + +.mdi-editor-format-color-text:before { + content: "\e78c"; +} + +.mdi-editor-format-indent-decrease:before { + content: "\e78d"; +} + +.mdi-editor-format-indent-increase:before { + content: "\e78e"; +} + +.mdi-editor-format-italic:before { + content: "\e78f"; +} + +.mdi-editor-format-line-spacing:before { + content: "\e790"; +} + +.mdi-editor-format-list-bulleted:before { + content: "\e791"; +} + +.mdi-editor-format-list-numbered:before { + content: "\e792"; +} + +.mdi-editor-format-paint:before { + content: "\e793"; +} + +.mdi-editor-format-quote:before { + content: "\e794"; +} + +.mdi-editor-format-size:before { + content: "\e795"; +} + +.mdi-editor-format-strikethrough:before { + content: "\e796"; +} + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e797"; +} + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e798"; +} + +.mdi-editor-format-underline:before { + content: "\e799"; +} + +.mdi-editor-functions:before { + content: "\e79a"; +} + +.mdi-editor-insert-chart:before { + content: "\e79b"; +} + +.mdi-editor-insert-comment:before { + content: "\e79c"; +} + +.mdi-editor-insert-drive-file:before { + content: "\e79d"; +} + +.mdi-editor-insert-emoticon:before { + content: "\e79e"; +} + +.mdi-editor-insert-invitation:before { + content: "\e79f"; +} + +.mdi-editor-insert-link:before { + content: "\e7a0"; +} + +.mdi-editor-insert-photo:before { + content: "\e7a1"; +} + +.mdi-editor-merge-type:before { + content: "\e7a2"; +} + +.mdi-editor-mode-comment:before { + content: "\e7a3"; +} + +.mdi-editor-mode-edit:before { + content: "\e7a4"; +} + +.mdi-editor-publish:before { + content: "\e7a5"; +} + +.mdi-editor-vertical-align-bottom:before { + content: "\e7a6"; +} + +.mdi-editor-vertical-align-center:before { + content: "\e7a7"; +} + +.mdi-editor-vertical-align-top:before { + content: "\e7a8"; +} + +.mdi-editor-wrap-text:before { + content: "\e7a9"; +} + +.mdi-file-attachment:before { + content: "\e7aa"; +} + +.mdi-file-cloud-circle:before { + content: "\e7ab"; +} + +.mdi-file-cloud-done:before { + content: "\e7ac"; +} + +.mdi-file-cloud-download:before { + content: "\e7ad"; +} + +.mdi-file-cloud-off:before { + content: "\e7ae"; +} + +.mdi-file-cloud-queue:before { + content: "\e7af"; +} + +.mdi-file-cloud-upload:before { + content: "\e7b0"; +} + +.mdi-file-cloud:before { + content: "\e7b1"; +} + +.mdi-file-file-download:before { + content: "\e7b2"; +} + +.mdi-file-file-upload:before { + content: "\e7b3"; +} + +.mdi-file-folder-open:before { + content: "\e7b4"; +} + +.mdi-file-folder-shared:before { + content: "\e7b5"; +} + +.mdi-file-folder:before { + content: "\e7b6"; +} + +.mdi-device-access-alarm:before { + content: "\e720"; +} + +.mdi-device-access-alarms:before { + content: "\e721"; +} + +.mdi-device-access-time:before { + content: "\e722"; +} + +.mdi-device-add-alarm:before { + content: "\e723"; +} + +.mdi-device-airplanemode-off:before { + content: "\e724"; +} + +.mdi-device-airplanemode-on:before { + content: "\e725"; +} + +.mdi-device-battery-20:before { + content: "\e726"; +} + +.mdi-device-battery-30:before { + content: "\e727"; +} + +.mdi-device-battery-50:before { + content: "\e728"; +} + +.mdi-device-battery-60:before { + content: "\e729"; +} + +.mdi-device-battery-80:before { + content: "\e72a"; +} + +.mdi-device-battery-90:before { + content: "\e72b"; +} + +.mdi-device-battery-alert:before { + content: "\e72c"; +} + +.mdi-device-battery-charging-20:before { + content: "\e72d"; +} + +.mdi-device-battery-charging-30:before { + content: "\e72e"; +} + +.mdi-device-battery-charging-50:before { + content: "\e72f"; +} + +.mdi-device-battery-charging-60:before { + content: "\e730"; +} + +.mdi-device-battery-charging-80:before { + content: "\e731"; +} + +.mdi-device-battery-charging-90:before { + content: "\e732"; +} + +.mdi-device-battery-charging-full:before { + content: "\e733"; +} + +.mdi-device-battery-full:before { + content: "\e734"; +} + +.mdi-device-battery-std:before { + content: "\e735"; +} + +.mdi-device-battery-unknown:before { + content: "\e736"; +} + +.mdi-device-bluetooth-connected:before { + content: "\e737"; +} + +.mdi-device-bluetooth-disabled:before { + content: "\e738"; +} + +.mdi-device-bluetooth-searching:before { + content: "\e739"; +} + +.mdi-device-bluetooth:before { + content: "\e73a"; +} + +.mdi-device-brightness-auto:before { + content: "\e73b"; +} + +.mdi-device-brightness-high:before { + content: "\e73c"; +} + +.mdi-device-brightness-low:before { + content: "\e73d"; +} + +.mdi-device-brightness-medium:before { + content: "\e73e"; +} + +.mdi-device-data-usage:before { + content: "\e73f"; +} + +.mdi-device-developer-mode:before { + content: "\e740"; +} + +.mdi-device-devices:before { + content: "\e741"; +} + +.mdi-device-dvr:before { + content: "\e742"; +} + +.mdi-device-gps-fixed:before { + content: "\e743"; +} + +.mdi-device-gps-not-fixed:before { + content: "\e744"; +} + +.mdi-device-gps-off:before { + content: "\e745"; +} + +.mdi-device-location-disabled:before { + content: "\e746"; +} + +.mdi-device-location-searching:before { + content: "\e747"; +} + +.mdi-device-multitrack-audio:before { + content: "\e748"; +} + +.mdi-device-network-cell:before { + content: "\e749"; +} + +.mdi-device-network-wifi:before { + content: "\e74a"; +} + +.mdi-device-nfc:before { + content: "\e74b"; +} + +.mdi-device-now-wallpaper:before { + content: "\e74c"; +} + +.mdi-device-now-widgets:before { + content: "\e74d"; +} + +.mdi-device-screen-lock-landscape:before { + content: "\e74e"; +} + +.mdi-device-screen-lock-portrait:before { + content: "\e74f"; +} + +.mdi-device-screen-lock-rotation:before { + content: "\e750"; +} + +.mdi-device-screen-rotation:before { + content: "\e751"; +} + +.mdi-device-sd-storage:before { + content: "\e752"; +} + +.mdi-device-settings-system-daydream:before { + content: "\e753"; +} + +.mdi-device-signal-cellular-0-bar:before { + content: "\e754"; +} + +.mdi-device-signal-cellular-1-bar:before { + content: "\e755"; +} + +.mdi-device-signal-cellular-2-bar:before { + content: "\e756"; +} + +.mdi-device-signal-cellular-3-bar:before { + content: "\e757"; +} + +.mdi-device-signal-cellular-4-bar:before { + content: "\e758"; +} + +.mdi-signal-wifi-statusbar-connected-no-internet-after:before { + content: "\e8f6"; +} + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e759"; +} + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e75a"; +} + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e75b"; +} + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e75c"; +} + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75d"; +} + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75e"; +} + +.mdi-device-signal-cellular-null:before { + content: "\e75f"; +} + +.mdi-device-signal-cellular-off:before { + content: "\e760"; +} + +.mdi-device-signal-wifi-0-bar:before { + content: "\e761"; +} + +.mdi-device-signal-wifi-1-bar:before { + content: "\e762"; +} + +.mdi-device-signal-wifi-2-bar:before { + content: "\e763"; +} + +.mdi-device-signal-wifi-3-bar:before { + content: "\e764"; +} + +.mdi-device-signal-wifi-4-bar:before { + content: "\e765"; +} + +.mdi-device-signal-wifi-off:before { + content: "\e766"; +} + +.mdi-device-signal-wifi-statusbar-1-bar:before { + content: "\e767"; +} + +.mdi-device-signal-wifi-statusbar-2-bar:before { + content: "\e768"; +} + +.mdi-device-signal-wifi-statusbar-3-bar:before { + content: "\e769"; +} + +.mdi-device-signal-wifi-statusbar-4-bar:before { + content: "\e76a"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { + content: "\e76b"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet:before { + content: "\e76f"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { + content: "\e76c"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { + content: "\e76d"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { + content: "\e76e"; +} + +.mdi-signal-wifi-statusbar-not-connected-after:before { + content: "\e8f7"; +} + +.mdi-device-signal-wifi-statusbar-not-connected:before { + content: "\e770"; +} + +.mdi-device-signal-wifi-statusbar-null:before { + content: "\e771"; +} + +.mdi-device-storage:before { + content: "\e772"; +} + +.mdi-device-usb:before { + content: "\e773"; +} + +.mdi-device-wifi-lock:before { + content: "\e774"; +} + +.mdi-device-wifi-tethering:before { + content: "\e775"; +} + +.mdi-hardware-cast-connected:before { + content: "\e7b7"; +} + +.mdi-hardware-cast:before { + content: "\e7b8"; +} + +.mdi-hardware-computer:before { + content: "\e7b9"; +} + +.mdi-hardware-desktop-mac:before { + content: "\e7ba"; +} + +.mdi-hardware-desktop-windows:before { + content: "\e7bb"; +} + +.mdi-hardware-dock:before { + content: "\e7bc"; +} + +.mdi-hardware-gamepad:before { + content: "\e7bd"; +} + +.mdi-hardware-headset-mic:before { + content: "\e7be"; +} + +.mdi-hardware-headset:before { + content: "\e7bf"; +} + +.mdi-hardware-keyboard-alt:before { + content: "\e7c0"; +} + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7c1"; +} + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7c2"; +} + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7c3"; +} + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7c4"; +} + +.mdi-hardware-keyboard-backspace:before { + content: "\e7c5"; +} + +.mdi-hardware-keyboard-capslock:before { + content: "\e7c6"; +} + +.mdi-hardware-keyboard-control:before { + content: "\e7c7"; +} + +.mdi-hardware-keyboard-hide:before { + content: "\e7c8"; +} + +.mdi-hardware-keyboard-return:before { + content: "\e7c9"; +} + +.mdi-hardware-keyboard-tab:before { + content: "\e7ca"; +} + +.mdi-hardware-keyboard-voice:before { + content: "\e7cb"; +} + +.mdi-hardware-keyboard:before { + content: "\e7cc"; +} + +.mdi-hardware-laptop-chromebook:before { + content: "\e7cd"; +} + +.mdi-hardware-laptop-mac:before { + content: "\e7ce"; +} + +.mdi-hardware-laptop-windows:before { + content: "\e7cf"; +} + +.mdi-hardware-laptop:before { + content: "\e7d0"; +} + +.mdi-hardware-memory:before { + content: "\e7d1"; +} + +.mdi-hardware-mouse:before { + content: "\e7d2"; +} + +.mdi-hardware-phone-android:before { + content: "\e7d3"; +} + +.mdi-hardware-phone-iphone:before { + content: "\e7d4"; +} + +.mdi-hardware-phonelink-off:before { + content: "\e7d5"; +} + +.mdi-hardware-phonelink:before { + content: "\e7d6"; +} + +.mdi-hardware-security:before { + content: "\e7d7"; +} + +.mdi-hardware-sim-card:before { + content: "\e7d8"; +} + +.mdi-hardware-smartphone:before { + content: "\e7d9"; +} + +.mdi-hardware-speaker:before { + content: "\e7da"; +} + +.mdi-hardware-tablet-android:before { + content: "\e7db"; +} + +.mdi-hardware-tablet-mac:before { + content: "\e7dc"; +} + +.mdi-hardware-tablet:before { + content: "\e7dd"; +} + +.mdi-hardware-tv:before { + content: "\e7de"; +} + +.mdi-hardware-watch:before { + content: "\e7df"; +} + +.mdi-image-add-to-photos:before { + content: "\e7e0"; +} + +.mdi-image-adjust:before { + content: "\e7e1"; +} + +.mdi-image-assistant-photo:before { + content: "\e7e2"; +} + +.mdi-image-audiotrack:before { + content: "\e7e3"; +} + +.mdi-image-blur-circular:before { + content: "\e7e4"; +} + +.mdi-image-blur-linear:before { + content: "\e7e5"; +} + +.mdi-image-blur-off:before { + content: "\e7e6"; +} + +.mdi-image-blur-on:before { + content: "\e7e7"; +} + +.mdi-image-brightness-1:before { + content: "\e7e8"; +} + +.mdi-image-brightness-2:before { + content: "\e7e9"; +} + +.mdi-image-brightness-3:before { + content: "\e7ea"; +} + +.mdi-image-brightness-4:before { + content: "\e7eb"; +} + +.mdi-image-brightness-5:before { + content: "\e7ec"; +} + +.mdi-image-brightness-6:before { + content: "\e7ed"; +} + +.mdi-image-brightness-7:before { + content: "\e7ee"; +} + +.mdi-image-brush:before { + content: "\e7ef"; +} + +.mdi-image-camera-alt:before { + content: "\e7f0"; +} + +.mdi-image-camera-front:before { + content: "\e7f1"; +} + +.mdi-image-camera-rear:before { + content: "\e7f2"; +} + +.mdi-image-camera-roll:before { + content: "\e7f3"; +} + +.mdi-image-camera:before { + content: "\e7f4"; +} + +.mdi-image-center-focus-strong:before { + content: "\e7f5"; +} + +.mdi-image-center-focus-weak:before { + content: "\e7f6"; +} + +.mdi-image-collections:before { + content: "\e7f7"; +} + +.mdi-image-color-lens:before { + content: "\e7f8"; +} + +.mdi-image-colorize:before { + content: "\e7f9"; +} + +.mdi-image-compare:before { + content: "\e7fa"; +} + +.mdi-image-control-point-duplicate:before { + content: "\e7fb"; +} + +.mdi-image-control-point:before { + content: "\e7fc"; +} + +.mdi-image-crop-3-2:before { + content: "\e7fd"; +} + +.mdi-image-crop-5-4:before { + content: "\e7fe"; +} + +.mdi-image-crop-7-5:before { + content: "\e7ff"; +} + +.mdi-image-crop-16-9:before { + content: "\e800"; +} + +.mdi-image-crop-din:before { + content: "\e801"; +} + +.mdi-image-crop-free:before { + content: "\e802"; +} + +.mdi-image-crop-landscape:before { + content: "\e803"; +} + +.mdi-image-crop-original:before { + content: "\e804"; +} + +.mdi-image-crop-portrait:before { + content: "\e805"; +} + +.mdi-image-crop-square:before { + content: "\e806"; +} + +.mdi-image-crop:before { + content: "\e807"; +} + +.mdi-image-dehaze:before { + content: "\e808"; +} + +.mdi-image-details:before { + content: "\e809"; +} + +.mdi-image-edit:before { + content: "\e80a"; +} + +.mdi-image-exposure-minus-1:before { + content: "\e80b"; +} + +.mdi-image-exposure-minus-2:before { + content: "\e80c"; +} + +.mdi-image-exposure-plus-1:before { + content: "\e80d"; +} + +.mdi-image-exposure-plus-2:before { + content: "\e80e"; +} + +.mdi-image-exposure-zero:before { + content: "\e80f"; +} + +.mdi-image-exposure:before { + content: "\e810"; +} + +.mdi-image-filter-1:before { + content: "\e811"; +} + +.mdi-image-filter-2:before { + content: "\e812"; +} + +.mdi-image-filter-3:before { + content: "\e813"; +} + +.mdi-image-filter-4:before { + content: "\e814"; +} + +.mdi-image-filter-5:before { + content: "\e815"; +} + +.mdi-image-filter-6:before { + content: "\e816"; +} + +.mdi-image-filter-7:before { + content: "\e817"; +} + +.mdi-image-filter-8:before { + content: "\e818"; +} + +.mdi-image-filter-9-plus:before { + content: "\e819"; +} + +.mdi-image-filter-9:before { + content: "\e81a"; +} + +.mdi-image-filter-b-and-w:before { + content: "\e81b"; +} + +.mdi-image-filter-center-focus:before { + content: "\e81c"; +} + +.mdi-image-filter-drama:before { + content: "\e81d"; +} + +.mdi-image-filter-frames:before { + content: "\e81e"; +} + +.mdi-image-filter-hdr:before { + content: "\e81f"; +} + +.mdi-image-filter-none:before { + content: "\e820"; +} + +.mdi-image-filter-tilt-shift:before { + content: "\e821"; +} + +.mdi-image-filter-vintage:before { + content: "\e822"; +} + +.mdi-image-filter:before { + content: "\e823"; +} + +.mdi-image-flare:before { + content: "\e824"; +} + +.mdi-image-flash-auto:before { + content: "\e825"; +} + +.mdi-image-flash-off:before { + content: "\e826"; +} + +.mdi-image-flash-on:before { + content: "\e827"; +} + +.mdi-image-flip:before { + content: "\e828"; +} + +.mdi-image-gradient:before { + content: "\e829"; +} + +.mdi-image-grain:before { + content: "\e82a"; +} + +.mdi-image-grid-off:before { + content: "\e82b"; +} + +.mdi-image-grid-on:before { + content: "\e82c"; +} + +.mdi-image-hdr-off:before { + content: "\e82d"; +} + +.mdi-image-hdr-on:before { + content: "\e82e"; +} + +.mdi-image-hdr-strong:before { + content: "\e82f"; +} + +.mdi-image-hdr-weak:before { + content: "\e830"; +} + +.mdi-image-healing:before { + content: "\e831"; +} + +.mdi-image-image-aspect-ratio:before { + content: "\e832"; +} + +.mdi-image-image:before { + content: "\e833"; +} + +.mdi-image-iso:before { + content: "\e834"; +} + +.mdi-image-landscape:before { + content: "\e835"; +} + +.mdi-image-leak-add:before { + content: "\e836"; +} + +.mdi-image-leak-remove:before { + content: "\e837"; +} + +.mdi-image-lens:before { + content: "\e838"; +} + +.mdi-image-looks-3:before { + content: "\e839"; +} + +.mdi-image-looks-4:before { + content: "\e83a"; +} + +.mdi-image-looks-5:before { + content: "\e83b"; +} + +.mdi-image-looks-6:before { + content: "\e83c"; +} + +.mdi-image-looks-one:before { + content: "\e83d"; +} + +.mdi-image-looks-two:before { + content: "\e83e"; +} + +.mdi-image-looks:before { + content: "\e83f"; +} + +.mdi-image-loupe:before { + content: "\e840"; +} + +.mdi-image-movie-creation:before { + content: "\e841"; +} + +.mdi-image-nature-people:before { + content: "\e842"; +} + +.mdi-image-nature:before { + content: "\e843"; +} + +.mdi-image-navigate-before:before { + content: "\e844"; +} + +.mdi-image-navigate-next:before { + content: "\e845"; +} + +.mdi-image-palette:before { + content: "\e846"; +} + +.mdi-image-panorama-fisheye:before { + content: "\e847"; +} + +.mdi-image-panorama-horizontal:before { + content: "\e848"; +} + +.mdi-image-panorama-vertical:before { + content: "\e849"; +} + +.mdi-image-panorama-wide-angle:before { + content: "\e84a"; +} + +.mdi-image-panorama:before { + content: "\e84b"; +} + +.mdi-image-photo-album:before { + content: "\e84c"; +} + +.mdi-image-photo-camera:before { + content: "\e84d"; +} + +.mdi-image-photo-library:before { + content: "\e84e"; +} + +.mdi-image-photo:before { + content: "\e84f"; +} + +.mdi-image-portrait:before { + content: "\e850"; +} + +.mdi-image-remove-red-eye:before { + content: "\e851"; +} + +.mdi-image-rotate-left:before { + content: "\e852"; +} + +.mdi-image-rotate-right:before { + content: "\e853"; +} + +.mdi-image-slideshow:before { + content: "\e854"; +} + +.mdi-image-straighten:before { + content: "\e855"; +} + +.mdi-image-style:before { + content: "\e856"; +} + +.mdi-image-switch-camera:before { + content: "\e857"; +} + +.mdi-image-switch-video:before { + content: "\e858"; +} + +.mdi-image-tag-faces:before { + content: "\e859"; +} + +.mdi-image-texture:before { + content: "\e85a"; +} + +.mdi-image-timelapse:before { + content: "\e85b"; +} + +.mdi-image-timer-3:before { + content: "\e85c"; +} + +.mdi-image-timer-10:before { + content: "\e85d"; +} + +.mdi-image-timer-auto:before { + content: "\e85e"; +} + +.mdi-image-timer-off:before { + content: "\e85f"; +} + +.mdi-image-timer:before { + content: "\e860"; +} + +.mdi-image-tonality:before { + content: "\e861"; +} + +.mdi-image-transform:before { + content: "\e862"; +} + +.mdi-image-tune:before { + content: "\e863"; +} + +.mdi-image-wb-auto:before { + content: "\e864"; +} + +.mdi-image-wb-cloudy:before { + content: "\e865"; +} + +.mdi-image-wb-incandescent:before { + content: "\e866"; +} + +.mdi-image-wb-irradescent:before { + content: "\e867"; +} + +.mdi-image-wb-sunny:before { + content: "\e868"; +} + +.mdi-maps-beenhere:before { + content: "\e869"; +} + +.mdi-maps-directions-bike:before { + content: "\e86a"; +} + +.mdi-maps-directions-bus:before { + content: "\e86b"; +} + +.mdi-maps-directions-car:before { + content: "\e86c"; +} + +.mdi-maps-directions-ferry:before { + content: "\e86d"; +} + +.mdi-maps-directions-subway:before { + content: "\e86e"; +} + +.mdi-maps-directions-train:before { + content: "\e86f"; +} + +.mdi-maps-directions-transit:before { + content: "\e870"; +} + +.mdi-maps-directions-walk:before { + content: "\e871"; +} + +.mdi-maps-directions:before { + content: "\e872"; +} + +.mdi-maps-flight:before { + content: "\e873"; +} + +.mdi-maps-hotel:before { + content: "\e874"; +} + +.mdi-maps-layers-clear:before { + content: "\e875"; +} + +.mdi-maps-layers:before { + content: "\e876"; +} + +.mdi-maps-local-airport:before { + content: "\e877"; +} + +.mdi-maps-local-atm:before { + content: "\e878"; +} + +.mdi-maps-local-attraction:before { + content: "\e879"; +} + +.mdi-maps-local-bar:before { + content: "\e87a"; +} + +.mdi-maps-local-cafe:before { + content: "\e87b"; +} + +.mdi-maps-local-car-wash:before { + content: "\e87c"; +} + +.mdi-maps-local-convenience-store:before { + content: "\e87d"; +} + +.mdi-maps-local-drink:before { + content: "\e87e"; +} + +.mdi-maps-local-florist:before { + content: "\e87f"; +} + +.mdi-maps-local-gas-station:before { + content: "\e880"; +} + +.mdi-maps-local-grocery-store:before { + content: "\e881"; +} + +.mdi-maps-local-hospital:before { + content: "\e882"; +} + +.mdi-maps-local-hotel:before { + content: "\e883"; +} + +.mdi-maps-local-laundry-service:before { + content: "\e884"; +} + +.mdi-maps-local-library:before { + content: "\e885"; +} + +.mdi-maps-local-mall:before { + content: "\e886"; +} + +.mdi-maps-local-movies:before { + content: "\e887"; +} + +.mdi-maps-local-offer:before { + content: "\e888"; +} + +.mdi-maps-local-parking:before { + content: "\e889"; +} + +.mdi-maps-local-pharmacy:before { + content: "\e88a"; +} + +.mdi-maps-local-phone:before { + content: "\e88b"; +} + +.mdi-maps-local-pizza:before { + content: "\e88c"; +} + +.mdi-maps-local-play:before { + content: "\e88d"; +} + +.mdi-maps-local-post-office:before { + content: "\e88e"; +} + +.mdi-maps-local-print-shop:before { + content: "\e88f"; +} + +.mdi-maps-local-restaurant:before { + content: "\e890"; +} + +.mdi-maps-local-see:before { + content: "\e891"; +} + +.mdi-maps-local-shipping:before { + content: "\e892"; +} + +.mdi-maps-local-taxi:before { + content: "\e893"; +} + +.mdi-maps-location-history:before { + content: "\e894"; +} + +.mdi-maps-map:before { + content: "\e895"; +} + +.mdi-maps-my-location:before { + content: "\e896"; +} + +.mdi-maps-navigation:before { + content: "\e897"; +} + +.mdi-maps-pin-drop:before { + content: "\e898"; +} + +.mdi-maps-place:before { + content: "\e899"; +} + +.mdi-maps-rate-review:before { + content: "\e89a"; +} + +.mdi-maps-restaurant-menu:before { + content: "\e89b"; +} + +.mdi-maps-satellite:before { + content: "\e89c"; +} + +.mdi-maps-store-mall-directory:before { + content: "\e89d"; +} + +.mdi-maps-terrain:before { + content: "\e89e"; +} + +.mdi-maps-traffic:before { + content: "\e89f"; +} + +.mdi-navigation-apps:before { + content: "\e8a0"; +} + +.mdi-navigation-arrow-back:before { + content: "\e8a1"; +} + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e8a2"; +} + +.mdi-navigation-arrow-drop-down:before { + content: "\e8a3"; +} + +.mdi-navigation-arrow-drop-up:before { + content: "\e8a4"; +} + +.mdi-navigation-arrow-forward:before { + content: "\e8a5"; +} + +.mdi-navigation-cancel:before { + content: "\e8a6"; +} + +.mdi-navigation-check:before { + content: "\e8a7"; +} + +.mdi-navigation-chevron-left:before { + content: "\e8a8"; +} + +.mdi-navigation-chevron-right:before { + content: "\e8a9"; +} + +.mdi-navigation-close:before { + content: "\e8aa"; +} + +.mdi-navigation-expand-less:before { + content: "\e8ab"; +} + +.mdi-navigation-expand-more:before { + content: "\e8ac"; +} + +.mdi-navigation-fullscreen-exit:before { + content: "\e8ad"; +} + +.mdi-navigation-fullscreen:before { + content: "\e8ae"; +} + +.mdi-navigation-menu:before { + content: "\e8af"; +} + +.mdi-navigation-more-horiz:before { + content: "\e8b0"; +} + +.mdi-navigation-more-vert:before { + content: "\e8b1"; +} + +.mdi-navigation-refresh:before { + content: "\e8b2"; +} + +.mdi-navigation-unfold-less:before { + content: "\e8b3"; +} + +.mdi-navigation-unfold-more:before { + content: "\e8b4"; +} + +.mdi-notification-adb:before { + content: "\e8b5"; +} + +.mdi-notification-bluetooth-audio:before { + content: "\e8b6"; +} + +.mdi-notification-disc-full:before { + content: "\e8b7"; +} + +.mdi-notification-dnd-forwardslash:before { + content: "\e8b8"; +} + +.mdi-notification-do-not-disturb:before { + content: "\e8b9"; +} + +.mdi-notification-drive-eta:before { + content: "\e8ba"; +} + +.mdi-notification-event-available:before { + content: "\e8bb"; +} + +.mdi-notification-event-busy:before { + content: "\e8bc"; +} + +.mdi-notification-event-note:before { + content: "\e8bd"; +} + +.mdi-notification-folder-special:before { + content: "\e8be"; +} + +.mdi-notification-mms:before { + content: "\e8bf"; +} + +.mdi-notification-more:before { + content: "\e8c0"; +} + +.mdi-notification-network-locked:before { + content: "\e8c1"; +} + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8c2"; +} + +.mdi-notification-phone-forwarded:before { + content: "\e8c3"; +} + +.mdi-notification-phone-in-talk:before { + content: "\e8c4"; +} + +.mdi-notification-phone-locked:before { + content: "\e8c5"; +} + +.mdi-notification-phone-missed:before { + content: "\e8c6"; +} + +.mdi-notification-phone-paused:before { + content: "\e8c7"; +} + +.mdi-notification-play-download:before { + content: "\e8c8"; +} + +.mdi-notification-play-install:before { + content: "\e8c9"; +} + +.mdi-notification-sd-card:before { + content: "\e8ca"; +} + +.mdi-notification-sim-card-alert:before { + content: "\e8cb"; +} + +.mdi-notification-sms-failed:before { + content: "\e8cc"; +} + +.mdi-notification-sms:before { + content: "\e8cd"; +} + +.mdi-notification-sync-disabled:before { + content: "\e8ce"; +} + +.mdi-notification-sync-problem:before { + content: "\e8cf"; +} + +.mdi-notification-sync:before { + content: "\e8d0"; +} + +.mdi-notification-system-update:before { + content: "\e8d1"; +} + +.mdi-notification-tap-and-play:before { + content: "\e8d2"; +} + +.mdi-notification-time-to-leave:before { + content: "\e8d3"; +} + +.mdi-notification-vibration:before { + content: "\e8d4"; +} + +.mdi-notification-voice-chat:before { + content: "\e8d5"; +} + +.mdi-notification-vpn-lock:before { + content: "\e8d6"; +} + +.mdi-social-cake:before { + content: "\e8d7"; +} + +.mdi-social-domain:before { + content: "\e8d8"; +} + +.mdi-social-group-add:before { + content: "\e8d9"; +} + +.mdi-social-group:before { + content: "\e8da"; +} + +.mdi-social-location-city:before { + content: "\e8db"; +} + +.mdi-social-mood:before { + content: "\e8dc"; +} + +.mdi-social-notifications-none:before { + content: "\e8dd"; +} + +.mdi-social-notifications-off:before { + content: "\e8de"; +} + +.mdi-social-notifications-on:before { + content: "\e8df"; +} + +.mdi-social-notifications-paused:before { + content: "\e8e0"; +} + +.mdi-social-notifications:before { + content: "\e8e1"; +} + +.mdi-social-pages:before { + content: "\e8e2"; +} + +.mdi-social-party-mode:before { + content: "\e8e3"; +} + +.mdi-social-people-outline:before { + content: "\e8e4"; +} + +.mdi-social-people:before { + content: "\e8e5"; +} + +.mdi-social-person-add:before { + content: "\e8e6"; +} + +.mdi-social-person-outline:before { + content: "\e8e7"; +} + +.mdi-social-person:before { + content: "\e8e8"; +} + +.mdi-social-plus-one:before { + content: "\e8e9"; +} + +.mdi-social-poll:before { + content: "\e8ea"; +} + +.mdi-social-public:before { + content: "\e8eb"; +} + +.mdi-social-school:before { + content: "\e8ec"; +} + +.mdi-social-share:before { + content: "\e8ed"; +} + +.mdi-social-whatshot:before { + content: "\e8ee"; +} + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8ef"; +} + +.mdi-toggle-check-box:before { + content: "\e8f0"; +} + +.mdi-toggle-radio-button-off:before { + content: "\e8f1"; +} + +.mdi-toggle-radio-button-on:before { + content: "\e8f2"; +} + +.mdi-toggle-star-half:before { + content: "\e8f3"; +} + +.mdi-toggle-star-outline:before { + content: "\e8f4"; +} + +.mdi-toggle-star:before { + content: "\e8f5"; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_materialbox.scss b/system/admin/static/editor/sass/components/_materialbox.scss new file mode 100644 index 0000000..9c20176 --- /dev/null +++ b/system/admin/static/editor/sass/components/_materialbox.scss @@ -0,0 +1,41 @@ +.materialboxed { + cursor: zoom-in; + position: relative; + @include transition(opacity .4s); + + &:hover { + &:not(.active) { + opacity: .8; + } + will-change: left, top, width, height; + } +} + +.materialboxed.active { + cursor: zoom-out; +} + +#materialbox-overlay { + position:fixed; + top:0; + left:0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 999; + + will-change: opacity; +} +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_mixins.scss b/system/admin/static/editor/sass/components/_mixins.scss new file mode 100644 index 0000000..4c3d373 --- /dev/null +++ b/system/admin/static/editor/sass/components/_mixins.scss @@ -0,0 +1,5 @@ +@mixin box-shadow-2($args1, $args2) { + -webkit-box-shadow: $args1, $args2; + -moz-box-shadow: $args1, $args2; + box-shadow: $args1, $args2; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_modal.scss b/system/admin/static/editor/sass/components/_modal.scss new file mode 100644 index 0000000..0a6dcfb --- /dev/null +++ b/system/admin/static/editor/sass/components/_modal.scss @@ -0,0 +1,90 @@ +.modal { + @extend .z-depth-4; + + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + + border-radius: 2px; + will-change: top, opacity; + + @media #{$medium-and-down} { + width: 80%; + } + + h1,h2,h3,h4 { + margin-top: 0; + } + + .modal-content { + padding: 24px; + } + .modal-close { + cursor: pointer; + } + + .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; + + .btn, .btn-flat { + float: right; + margin: 6px 0; + } + } +} +.lean-overlay { + position: fixed; + z-index:999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + + will-change: opacity; +} + +// Modal with fixed action footer +.modal.modal-fixed-footer { + padding: 0; + height: 70%; + + .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; + } + + .modal-footer { + border-top: 1px solid rgba(0,0,0,.1); + position: absolute; + bottom: 0; + } +} + +// Modal Bottom Sheet Style +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; +} diff --git a/system/admin/static/editor/sass/components/_navbar.scss b/system/admin/static/editor/sass/components/_navbar.scss new file mode 100644 index 0000000..65cd277 --- /dev/null +++ b/system/admin/static/editor/sass/components/_navbar.scss @@ -0,0 +1,144 @@ +nav { + color: $navbar-font-color; + @extend .z-depth-1; + background-color: $primary-color; + width: 100%; + height: $navbar-height-mobile; + line-height: $navbar-height-mobile; + + a { color: $navbar-font-color; } + + .nav-wrapper { + position: relative; + height: 100%; + + i { + display: block; + font-size: 2rem; + } + } + + @media #{$large-and-up} { + a.button-collapse { display: none; } + } + + + // Collapse button + .button-collapse { + float: left; + position: relative; + z-index: 1; + height: $navbar-height-mobile; + + i { + font-size: 2.7rem; + height: $navbar-height-mobile; + line-height: $navbar-height-mobile; + } + } + + + // Logo + .brand-logo { + position: absolute; + color: $navbar-font-color; + display: inline-block; + font-size: $navbar-brand-font-size; + padding: 0; + white-space: nowrap; + + &.center { + left: 50%; + @include transform(translateX(-50%)); + } + + @media #{$medium-and-down} { + left: 50%; + @include transform(translateX(-50%)); + } + + &.right { + right: 0.5rem; + padding: 0; + } + } + + + // Navbar Links + ul { + margin: 0; + + li { + @include transition(background-color .3s); + float: left; + padding: 0; + + &:hover, &.active { + background-color: rgba(0,0,0,.1); + } + } + a { + font-size: 1rem; + color: $navbar-font-color; + display: block; + padding: 0 15px; + } + + &.left { + float: left; + } + } + + // Navbar Search Form + .input-field { + margin: 0; + + input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; + + &:focus, &[type=text]:valid, &[type=password]:valid, + &[type=email]:valid, &[type=url]:valid, &[type=date]:valid { + border: none; + box-shadow: none; + } + } + label { + top: 0; + left: 0; + + i { + color: rgba(255,255,255,.7); + @include transition(color .3s); + } + &.active i { color: $navbar-font-color; } + &.active { + @include transform(translateY(0)); + } + } + + } + +} + +// Fixed Navbar +.navbar-fixed { + position: relative; + height: $navbar-height-mobile; + z-index: 998; + + nav { + position: fixed; + } +} +@media #{$medium-and-up} { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: $navbar-height; + line-height: $navbar-height; + } + .navbar-fixed { + height: $navbar-height; + } +} diff --git a/system/admin/static/editor/sass/components/_normalize.scss b/system/admin/static/editor/sass/components/_normalize.scss new file mode 100644 index 0000000..ab626c4 --- /dev/null +++ b/system/admin/static/editor/sass/components/_normalize.scss @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +/* 1 */ html input[type="button"], +button, +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/system/admin/static/editor/sass/components/_prefixer.scss b/system/admin/static/editor/sass/components/_prefixer.scss new file mode 100644 index 0000000..f483eaf --- /dev/null +++ b/system/admin/static/editor/sass/components/_prefixer.scss @@ -0,0 +1,376 @@ +//--------------------------------------------------- +// Sass Prefixer +// ------------------------------------------------- +// TABLE OF CONTENTS +// (*) denotes a syntax-sugar helper +// ------------------------------------------------- +// +// animation($args) +// animation-delay($delay) +// animation-direction($direction) +// animation-duration($duration) +// animation-fill-mode($mode) +// animation-iteration-count($count) +// animation-name($name) +// animation-play-state($state) +// animation-timing-function($function) +// background-size($args) +// inner-shadow($args) * +// box-sizing($args) +// border-box() * +// content-box() * +// columns($args) +// column-count($count) +// column-gap($gap) +// column-rule($args) +// column-width($width) +// flexbox() +// flex($args) +// order($args) +// align($args) +// justify-content($args) +// gradient($default,$start,$stop) * +// linear-gradient-top($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])* +// linear-gradient-left($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])* +// transform($args) +// transform-origin($args) +// transform-style($style) +// rotate($deg) +// scale($factor) +// translate($x,$y) +// translate3d($x,$y,$z) +// translateHardware($x,$y) * +// text-shadow($args) +// transition($args) +// transition-delay($delay) +// transition-duration($duration) +// transition-property($property) +// transition-timing-function($function) + + +// Animation + +@mixin animation($args) { + -webkit-animation: $args; + -moz-animation: $args; + -ms-animation: $args; + -o-animation: $args; + animation: $args; +} +@mixin animation-delay($delay) { + -webkit-animation-delay: $delay; + -moz-animation-delay: $delay; + -ms-animation-delay: $delay; + -o-animation-delay: $delay; + animation-delay: $delay; +} +@mixin animation-direction($direction) { + -webkit-animation-direction: $direction; + -moz-animation-direction: $direction; + -ms-animation-direction: $direction; + -o-animation-direction: $direction; +} +@mixin animation-duration($duration) { + -webkit-animation-duration: $duration; + -moz-animation-duration: $duration; + -ms-animation-duration: $duration; + -o-animation-duration: $duration; +} +@mixin animation-fill-mode($mode) { + -webkit-animation-fill-mode: $mode; + -moz-animation-fill-mode: $mode; + -ms-animation-fill-mode: $mode; + -o-animation-fill-mode: $mode; + animation-fill-mode: $mode; +} +@mixin animation-iteration-count($count) { + -webkit-animation-iteration-count: $count; + -moz-animation-iteration-count: $count; + -ms-animation-iteration-count: $count; + -o-animation-iteration-count: $count; + animation-iteration-count: $count; +} +@mixin animation-name($name) { + -webkit-animation-name: $name; + -moz-animation-name: $name; + -ms-animation-name: $name; + -o-animation-name: $name; + animation-name: $name; +} +@mixin animation-play-state($state) { + -webkit-animation-play-state: $state; + -moz-animation-play-state: $state; + -ms-animation-play-state: $state; + -o-animation-play-state: $state; + animation-play-state: $state; +} +@mixin animation-timing-function($function) { + -webkit-animation-timing-function: $function; + -moz-animation-timing-function: $function; + -ms-animation-timing-function: $function; + -o-animation-timing-function: $function; + animation-timing-function: $function; +} + +// Keyframes +@mixin keyframes($animation-name) { + @-webkit-keyframes #{$animation-name} { + @content; + } + @-moz-keyframes #{$animation-name} { + @content; + } + @keyframes #{$animation-name} { + @content; + } +} + +// Backface-visibility + +@mixin backface-visibility($args) { + -webkit-backface-visibility: $args; + -moz-backface-visibility: $args; + -ms-backface-visibility: $args; + backface-visibility: $args; +} + + +// Background Size + +@mixin background-size($args) { + -webkit-background-size: $args; + background-size: $args; +} + +// Box Sizing + +@mixin box-sizing($args) { + -webkit-box-sizing: $args; + -moz-box-sizing: $args; + box-sizing: $args; +} +@mixin border-box(){ + @include box-sizing(border-box); +} +@mixin content-box(){ + @include box-sizing(content-box); +} + + +// Columns + +@mixin columns($args) { + -webkit-columns: $args; + -moz-columns: $args; + columns: $args; +} +@mixin column-count($count) { + -webkit-column-count: $count; + -moz-column-count: $count; + column-count: $count; +} +@mixin column-gap($gap) { + -webkit-column-gap: $gap; + -moz-column-gap: $gap; + column-gap: $gap; +} +@mixin column-width($width) { + -webkit-column-width: $width; + -moz-column-width: $width; + column-width: $width; +} +@mixin column-rule($args) { + -webkit-column-rule: $args; + -moz-column-rule: $args; + column-rule: $args; +} + +// Filter +@mixin filter($args) { + -webkit-filter: $args; + -moz-filter: $args; + -o-filter: $args; + -ms-filter: $args; +} + +// Flexbox +@mixin flexbox() { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + @mixin flex($values) { + -webkit-box-flex: $values; + -moz-box-flex: $values; + -webkit-flex: $values; + -ms-flex: $values; + flex: $values; + } + @mixin order($val) { + -webkit-box-ordinal-group: $val; + -moz-box-ordinal-group: $val; + -ms-flex-order: $val; + -webkit-order: $val; + order: $val; + } + @mixin align($align) { + -webkit-flex-align: $align; + -ms-flex-align: $align; + -webkit-align-items: $align; + align-items: $align; + } + @mixin justify-content($val) { + -webkit-justify-content: $val; + justify-content: $val; + } +// Gradients + +@mixin gradient($default: #F5F5F5, $start: #EEE, $stop: #FFF) { + @include linear-gradient-top($default,$start,0%,$stop,100%); +} +@mixin linear-gradient-top($default,$color1,$stop1,$color2,$stop2) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2)); + background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2); +} +@mixin linear-gradient-top2($default,$color1,$stop1,$color2,$stop2,$color3,$stop3) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3)); + background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); +} +@mixin linear-gradient-top3($default,$color1,$stop1,$color2,$stop2,$color3,$stop3,$color4,$stop4) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3), color-stop($stop4 $color4)); + background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); +} +@mixin linear-gradient-left($default,$color1,$stop1,$color2,$stop2) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2)); + background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2); +} +@mixin linear-gradient-left2($default,$color1,$stop1,$color2,$stop2,$color3,$stop3) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3)); + background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); +} +@mixin linear-gradient-left3($default,$color1,$stop1,$color2,$stop2,$color3,$stop3,$color4,$stop4) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3), color-stop($stop4 $color4)); + background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); +} + +// Text Shadow + +@mixin text-shadow($args) { + text-shadow: $args; +} + + +// Transforms + +@mixin transform($args) { + -webkit-transform: $args; + -moz-transform: $args; + -ms-transform: $args; + -o-transform: $args; + transform: $args; +} +@mixin transform-origin($args) { + -webkit-transform-origin: $args; + -moz-transform-origin: $args; + -ms-transform-origin: $args; + -o-transform-origin: $args; + transform-origin: $args; +} +@mixin transform-style($style) { + -webkit-transform-style: $style; + -moz-transform-style: $style; + -ms-transform-style: $style; + -o-transform-style: $style; + transform-style: $style; +} +@mixin rotate($deg:45deg){ + @include transform(rotate($deg)); +} +@mixin scale($factor:.5){ + @include transform(scale($factor)); +} +@mixin translate($x,$y){ + @include transform(translate($x,$y)); +} +@mixin translate3d($x,$y,$z) { + @include transform(translate3d($x,$y,$z)); +} +@mixin translateHardware($x,$y) { + @include translate($x,$y); + -webkit-transform: translate3d($x,$y,0); + -moz-transform: translate3d($x,$y,0); + -o-transform: translate3d($x,$y,0); + -ms-transform: translate3d($x,$y,0); + transform: translate3d($x,$y,0); +} + + +// Transitions + +@mixin transition($args:200ms) { + -webkit-transition: $args; + -moz-transition: $args; + -o-transition: $args; + -ms-transition: $args; + transition: $args; +} +@mixin transition-delay($delay:0) { + -webkit-transition-delay: $delay; + -moz-transition-delay: $delay; + -o-transition-delay: $delay; + -ms-transition-delay: $delay; + transition-delay: $delay; +} +@mixin transition-duration($duration:200ms) { + -webkit-transition-duration: $duration; + -moz-transition-duration: $duration; + -o-transition-duration: $duration; + -ms-transition-duration: $duration; + transition-duration: $duration; +} +@mixin transition-property($property:all) { + -webkit-transition-property: $property; + -moz-transition-property: $property; + -o-transition-property: $property; + -ms-transition-property: $property; + transition-property: $property; +} +@mixin transition-timing-function($function:ease) { + -webkit-transition-timing-function: $function; + -moz-transition-timing-function: $function; + -o-transition-timing-function: $function; + -ms-transition-timing-function: $function; + transition-timing-function: $function; +} diff --git a/system/admin/static/editor/sass/components/_preloader.scss b/system/admin/static/editor/sass/components/_preloader.scss new file mode 100644 index 0000000..ab5c783 --- /dev/null +++ b/system/admin/static/editor/sass/components/_preloader.scss @@ -0,0 +1,332 @@ +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ + +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ + +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ + + +.preloader-wrapper { + display: inline-block; + position: relative; + width: 48px; + height: 48px; + + &.small { + width: 36px; + height: 36px; + } + + &.big { + width: 64px; + height: 64px; + } + + &.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; + } +} + +@-webkit-keyframes container-rotate { + to { -webkit-transform: rotate(360deg) } +} + +@keyframes container-rotate { + to { transform: rotate(360deg) } +} + +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; +} + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; +} + +.spinner-red, +.spinner-red-only { + border-color: #db4437; +} + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; +} + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; +} + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */ + 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */ + 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */ + 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */ + 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */ + 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */ + 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */ + to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */ +} + +@keyframes fill-unfill-rotate { + 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */ + 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */ + 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */ + 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */ + 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */ + 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */ + 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */ + to { transform: rotate(1080deg); } /* 4 * ARCSIZE */ +} + +@-webkit-keyframes blue-fade-in-out { + from { opacity: 1; } + 25% { opacity: 1; } + 26% { opacity: 0; } + 89% { opacity: 0; } + 90% { opacity: 1; } + 100% { opacity: 1; } +} + +@keyframes blue-fade-in-out { + from { opacity: 1; } + 25% { opacity: 1; } + 26% { opacity: 0; } + 89% { opacity: 0; } + 90% { opacity: 1; } + 100% { opacity: 1; } +} + +@-webkit-keyframes red-fade-in-out { + from { opacity: 0; } + 15% { opacity: 0; } + 25% { opacity: 1; } + 50% { opacity: 1; } + 51% { opacity: 0; } +} + +@keyframes red-fade-in-out { + from { opacity: 0; } + 15% { opacity: 0; } + 25% { opacity: 1; } + 50% { opacity: 1; } + 51% { opacity: 0; } +} + +@-webkit-keyframes yellow-fade-in-out { + from { opacity: 0; } + 40% { opacity: 0; } + 50% { opacity: 1; } + 75% { opacity: 1; } + 76% { opacity: 0; } +} + +@keyframes yellow-fade-in-out { + from { opacity: 0; } + 40% { opacity: 0; } + 50% { opacity: 1; } + 75% { opacity: 1; } + 76% { opacity: 0; } +} + +@-webkit-keyframes green-fade-in-out { + from { opacity: 0; } + 65% { opacity: 0; } + 75% { opacity: 1; } + 90% { opacity: 1; } + 100% { opacity: 0; } +} + +@keyframes green-fade-in-out { + from { opacity: 0; } + 65% { opacity: 0; } + 75% { opacity: 1; } + 90% { opacity: 1; } + 100% { opacity: 0; } +} + +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.gap-patch .circle { + width: 1000%; + left: -450%; +} + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; + + .circle { + width: 200%; + height: 100%; + border-width: 3px; /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; + } + + &.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); + } + &.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); + } +} + + + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +@-webkit-keyframes left-spin { + from { -webkit-transform: rotate(130deg); } + 50% { -webkit-transform: rotate(-5deg); } + to { -webkit-transform: rotate(130deg); } +} + +@keyframes left-spin { + from { transform: rotate(130deg); } + 50% { transform: rotate(-5deg); } + to { transform: rotate(130deg); } +} + +@-webkit-keyframes right-spin { + from { -webkit-transform: rotate(-130deg); } + 50% { -webkit-transform: rotate(5deg); } + to { -webkit-transform: rotate(-130deg); } +} + +@keyframes right-spin { + from { transform: rotate(-130deg); } + 50% { transform: rotate(5deg); } + to { transform: rotate(-130deg); } +} + +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); +} + +@-webkit-keyframes fade-out { + from { opacity: 1; } + to { opacity: 0; } +} + +@keyframes fade-out { + from { opacity: 1; } + to { opacity: 0; } +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_roboto.scss b/system/admin/static/editor/sass/components/_roboto.scss new file mode 100644 index 0000000..8bfdbd3 --- /dev/null +++ b/system/admin/static/editor/sass/components/_roboto.scss @@ -0,0 +1,38 @@ +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype"); + font-weight: 200; +} +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Light.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Light.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Light.ttf") format("truetype"); + font-weight: 300; +} + +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Regular.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Regular.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Regular.ttf") format("truetype"); + font-weight: 400; +} + +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Medium.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Medium.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Medium.ttf") format("truetype"); + font-weight: 500; +} + +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Bold.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Bold.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Bold.ttf") format("truetype"); + font-weight: 700; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_sideNav.scss b/system/admin/static/editor/sass/components/_sideNav.scss new file mode 100644 index 0000000..98794a1 --- /dev/null +++ b/system/admin/static/editor/sass/components/_sideNav.scss @@ -0,0 +1,111 @@ +.side-nav { + position: fixed; + width: 240px; + left: -105%; + top: 0; + margin: 0; + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); //Temporary Firefox Fix + padding-bottom: 60px; + background-color: $sidenav-bg-color; + z-index: 999; + overflow-y: auto; + + @extend .z-depth-1; + will-change: left; + + // Right Align + &.right-aligned { + will-change: right; + right: -105%; + left: auto; + } + + .collapsible{ + margin: 0; + } + + + li { + float: none; + padding: 0 $sidenav-padding-right; + &:hover, &.active { background-color: #ddd; } + } + a { + color: #444; + display: block; + font-size: 1rem; + height: 64px; + line-height: 64px; + padding: 0 $sidenav-padding-right; + } +} + + +// Touch interaction +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; +} + + +// Hidden side-nav for all sizes +.side-nav.fixed { + a { + display: block; + padding: 0 $sidenav-padding-right; + color: #444; + } +} + + +// Fixed side-nav shown +.side-nav.fixed { + left: 0; + position: fixed; + + // Right Align + &.right-aligned { + right: 0; + left: auto; + } +} + +// Fixed sideNav hide on smaller +@media #{$medium-and-down} { + .side-nav.fixed { + left: -105%; + + &.right-aligned { + right: -105%; + left: auto; + } + } +} + + +.side-nav .collapsible-body li.active, +.side-nav.fixed .collapsible-body li.active { + background-color: $primary-color; + a { + color: $sidenav-bg-color; + } +} + + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + + height: 120vh; + background-color: rgba(0,0,0,.5); + z-index: 997; + + will-change: opacity; +} diff --git a/system/admin/static/editor/sass/components/_slider.scss b/system/admin/static/editor/sass/components/_slider.scss new file mode 100644 index 0000000..3d2071a --- /dev/null +++ b/system/admin/static/editor/sass/components/_slider.scss @@ -0,0 +1,92 @@ +.slider { + position: relative; + height: 400px; + width: 100%; + + // Fullscreen slider + &.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + ul.slides { + height: 100%; + } + + ul.indicators { + z-index: 2; + bottom: 30px; + } + } + + .slides { + background-color: $slider-bg-color; + margin: 0; + height: 400px; + + li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; + + img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; + } + + .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; + + p { color: $slider-bg-color-light; } + } + + &.active { + z-index: 2; + } + } + } + + + .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; + + .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: $slider-bg-color-light; + + @include transition(background-color .3s); + border-radius: 50%; + + &.active { + background-color: $slider-indicator-color; + } + } + } + +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_table_of_contents.scss b/system/admin/static/editor/sass/components/_table_of_contents.scss new file mode 100644 index 0000000..2872bdb --- /dev/null +++ b/system/admin/static/editor/sass/components/_table_of_contents.scss @@ -0,0 +1,33 @@ +/*************** + Nav List +***************/ +.table-of-contents { + &.fixed { + position: fixed; + } + + li { + padding: 2px 0; + } + a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 20px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; + + &:hover { + color: lighten(#757575, 20%); + padding-left: 19px; + border-left: 1px solid lighten(color("materialize-red", "base"),10%); + } + &.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid lighten(color("materialize-red", "base"),10%); + } + } +} diff --git a/system/admin/static/editor/sass/components/_tabs.scss b/system/admin/static/editor/sass/components/_tabs.scss new file mode 100644 index 0000000..dcf29e1 --- /dev/null +++ b/system/admin/static/editor/sass/components/_tabs.scss @@ -0,0 +1,47 @@ +.tabs { + position: relative; + height: 48px; + background-color: $tabs-bg-color; + margin: 0 auto; + width: 100%; + white-space: nowrap; + + .tab { + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; + + a { + color: $tabs-text-color; + display: block; + width: 100%; + height: 100%; + @include transition( color .28s ease); + &:hover { + color: lighten($tabs-text-color, 20%); + } + } + + &.disabled a { + color: lighten($tabs-text-color, 20%); + cursor: default; + } + } + .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: $tabs-underline-color; + will-change: left, right; + } +} + +.tabs .tab { padding: 0; } + diff --git a/system/admin/static/editor/sass/components/_toast.scss b/system/admin/static/editor/sass/components/_toast.scss new file mode 100644 index 0000000..87bd7dd --- /dev/null +++ b/system/admin/static/editor/sass/components/_toast.scss @@ -0,0 +1,63 @@ +#toast-container { + display:block; + position: fixed; + z-index: 1001; + + @media #{$small-and-down} { + min-width: 100%; + bottom: 0%; + } + @media #{$medium-only} { + min-width: 30%; + left: 5%; + bottom: 7%; + } + @media #{$large-and-up} { + min-width: 8%; + top: 10%; + right: 7%; + } +} + +.toast { + @extend .z-depth-1; + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width:100%; + height: $toast-height; + line-height: $toast-height; + background-color: $toast-color; + padding: 0 25px; + font-size: 1.1rem; + font-weight: 300; + color: $toast-text-color; + + @include flexbox(); + @include align(center); + @include justify-content(space-between); + + .btn, .btn-flat { + margin: 0; + margin-left: 3rem; + } + + &.rounded{ + border-radius: 24px; + } + + @media #{$small-and-down} { + width:100%; + border-radius: 0; + } + @media #{$medium-only} { + float: left; + } + @media #{$large-and-up} { + float: right; + } + +} diff --git a/system/admin/static/editor/sass/components/_tooltip.scss b/system/admin/static/editor/sass/components/_tooltip.scss new file mode 100644 index 0000000..374ace9 --- /dev/null +++ b/system/admin/static/editor/sass/components/_tooltip.scss @@ -0,0 +1,34 @@ +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 1rem; + // max-width: 350px; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left:0; + top:0; + + will-change: top, left; +} + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 14px 14px; + background-color: #323232; + z-index: -1; + @include transform-origin( 50% 10%); + + will-change: transform, opacity; +} diff --git a/system/admin/static/editor/sass/components/_typography.scss b/system/admin/static/editor/sass/components/_typography.scss new file mode 100644 index 0000000..3aec273 --- /dev/null +++ b/system/admin/static/editor/sass/components/_typography.scss @@ -0,0 +1,58 @@ +a { + text-decoration: none; +} + +html{ + line-height: 1.5; + + @media only screen and (min-width: 0) { + font-size: 14px; + } + + @media only screen and (min-width: $medium-screen) { + font-size: 14.5px; + } + + @media only screen and (min-width: $large-screen) { + font-size: 15px; + } + + font-family: "Roboto", sans-serif; + font-weight: normal; + color: $off-black; +} +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.1; +} + +// Header Styles +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } +h1 { font-size: $h1-fontsize; line-height: 110%; margin: ($h1-fontsize / 2) 0 ($h1-fontsize / 2.5) 0;} +h2 { font-size: $h2-fontsize; line-height: 110%; margin: ($h2-fontsize / 2) 0 ($h2-fontsize / 2.5) 0;} +h3 { font-size: $h3-fontsize; line-height: 110%; margin: ($h3-fontsize / 2) 0 ($h3-fontsize / 2.5) 0;} +h4 { font-size: $h4-fontsize; line-height: 110%; margin: ($h4-fontsize / 2) 0 ($h4-fontsize / 2.5) 0;} +h5 { font-size: $h5-fontsize; line-height: 110%; margin: ($h5-fontsize / 2) 0 ($h5-fontsize / 2.5) 0;} +h6 { font-size: $h6-fontsize; line-height: 110%; margin: ($h6-fontsize / 2) 0 ($h6-fontsize / 2.5) 0;} + +// Text Styles +em { font-style: italic; } +strong { font-weight: 500; } +small { font-size: 75%; } +.light { font-weight: 300; } +.thin { font-weight: 200; } + +.flow-text{ + font-weight: 300; + $i: 0; + @while $i <= $intervals { + @media only screen and (min-width : 360 + ($i * $interval-size)) { + font-size: 1.2rem * (1 + (.02 * $i)); + } + $i: $i + 1; + } + // Handle below 360px screen + @media only screen and (max-width: 360px) { + font-size: 1.2rem; + } +} diff --git a/system/admin/static/editor/sass/components/_variables.scss b/system/admin/static/editor/sass/components/_variables.scss new file mode 100644 index 0000000..833d49f --- /dev/null +++ b/system/admin/static/editor/sass/components/_variables.scss @@ -0,0 +1,152 @@ +/*** Colors ***/ +$primary-color: color("materialize-red", "lighten-2") !default; +$primary-color-light: lighten($primary-color, 15%) !default; +$primary-color-dark: darken($primary-color, 15%) !default; + +$secondary-color: color("teal", "lighten-1") !default; +$success-color: color("green", "base") !default; +$error-color: color("red", "base") !default; +$link-color: color("light-blue", "darken-1") !default; + +/*** Badges ***/ +$badge-bg-color: $secondary-color !default; + +/*** Buttons ***/ +$button-bg-color-disabled: #DFDFDF !default; +$button-color: $secondary-color !default; +$button-color-disabled: #9F9F9F !default; +$button-color-flat: #343434 !default; +$button-color-raised: #fff !default; +$button-floating-size: 37px !default; +$button-height: 36px !default; +$button-font-size-shared: 1.3rem !default; +$button-large-icon-font-size: 1.6rem !default; +$button-line-height: 36px !default; + +/*** Cards ***/ +$card-padding: 20px !default; +$card-bg-color: #fff !default; +$card-link-color: color("orange", "accent-2") !default; +$card-link-color-light: lighten($card-link-color, 20%) !default; + +/*** Collapsible ***/ +$collapsible-height: 3rem !default; +$collapsible-header-color: #fff !default; +$collapsible-border-color: #ddd !default; + +/*** Dropdown ***/ +$dropdown-bg-color: #fff !default; +$dropdown-hover-bg-color: #eee !default; +$dropdown-color: $secondary-color !default; + +/*** Fonts ***/ +$roboto-font-path: "../font/roboto/" !default; +$icons-font-path: "../font/material-design-icons/" !default; + +/*** Forms ***/ +// Text Inputs + Textarea +$input-border-color: color("grey", "base") !default; +$input-bg-color: #fff !default; +$input-error-color: $error-color !default; +$input-success-color: $success-color !default; +$input-focus-color: $secondary-color !default; +$label-font-size: .8rem !default; +$input-disabled-color: rgba(0,0,0, .26) !default; +$input-disabled-solid-color: #BDBDBD !default; + +// Radio Buttons +$radio-fill-color: $secondary-color !default; +$radio-empty-color: #5a5a5a !default; + +// Switches +$switch-bg-color: $secondary-color !default; +$switch-checked-lever-bg: desaturate(lighten($secondary-color, 25%), 25%) !default; +$switch-unchecked-bg: #F1F1F1 !default; +$switch-unchecked-lever-bg: #818181 !default; + +// Date Picker +$datepicker-weekday-bg: darken($secondary_color, 7%) !default; +$datepicker-date-bg: $secondary_color !default; +$datepicker-year: rgba(255, 255, 255, .4) !default; +$datepicker-focus: rgba(0,0,0, .05) !default; +$datepicker-selected: $secondary-color !default; +$datepicker-selected-outfocus: desaturate(lighten($secondary-color, 35%), 15%) !default; + + +/*** Global ***/ +// Media Query Ranges +$small-screen-up: 601px !default; +$medium-screen-up: 993px !default; +$large-screen-up: 1201px !default; +$small-screen: 600px !default; +$medium-screen: 992px !default; +$large-screen: 1200px !default; + +$medium-and-up: "only screen and (min-width : #{$small-screen-up})" !default; +$large-and-up: "only screen and (min-width : #{$medium-screen-up})" !default; +$small-and-down: "only screen and (max-width : #{$small-screen})" !default; +$medium-and-down: "only screen and (max-width : #{$medium-screen})" !default; +$medium-only: "only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})" !default; + +// Grid Variables +$num-cols: 12 !default; +$gutter-width: 1.5rem !default; +$element-top-margin: $gutter-width/3 !default; +$element-bottom-margin: ($gutter-width*2)/3 !default; + +/*** Navbar ***/ +$navbar-height: 64px !default; +$navbar-height-mobile: 56px !default; +$navbar-font-color: #fff !default; +$navbar-brand-font-size: 2.1rem !default; + +/*** SideNav ***/ +$sidenav-bg-color: #fff !default; +$sidenav-padding-right: 15px !default; + +/*** Photo Slider ***/ +$slider-bg-color: color('grey', 'base') !default; +$slider-bg-color-light: color('grey', 'lighten-2') !default; +$slider-indicator-color: color('green', 'base') !default; + +/*** Tabs ***/ +$tabs-underline-color: $primary-color-light !default; +$tabs-text-color: $primary-color !default; +$tabs-bg-color: #fff !default; + +/*** Tables ***/ +$table-border-color: #d0d0d0 !default; +$table-striped-color: #f2f2f2 !default; + +/*** Toasts ***/ +$toast-height: 48px !default; +$toast-color: #323232 !default; +$toast-text-color: #fff !default; + +/*** Typography ***/ +$off-black: rgba(0, 0, 0, 0.87) !default; +// Header Styles +$h1-fontsize: 4.2rem !default; +$h2-fontsize: 3.56rem !default; +$h3-fontsize: 2.92rem !default; +$h4-fontsize: 2.28rem !default; +$h5-fontsize: 1.64rem !default; +$h6-fontsize: 1rem !default; + +// Footer +$footer-bg-color: $primary-color !default; + +// Flowtext +$range : $large-screen - $small-screen !default; +$intervals: 20 !default; +$interval-size: $range / $intervals !default; + +/*** Collections ***/ +$collection-border-color: #e0e0e0 !default; +$collection-bg-color: #fff !default; +$collection-active-bg-color: $secondary-color !default; +$collection-active-color: lighten($secondary-color, 55%) !default; +$collection-hover-bg-color: #ddd !default; + +/* Progress Bar */ +$progress-bar-color: $secondary-color !default; diff --git a/system/admin/static/editor/sass/components/_waves.scss b/system/admin/static/editor/sass/components/_waves.scss new file mode 100644 index 0000000..7a8e8c0 --- /dev/null +++ b/system/admin/static/editor/sass/components/_waves.scss @@ -0,0 +1,167 @@ + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + + +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + // white-space: nowrap; + // outline: 0; + + vertical-align: middle; + // cursor: pointer; + // border: none; + // outline: none; + // color: inherit; + // background-color: rgba(0, 0, 0, 0); + // font-size: 1em; + // line-height:1em; + // text-align: center; + // text-decoration: none; + z-index: 1; + will-change: opacity, transform; + @include transition(all .3s ease-out); + + .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top:-10px; + margin-left:-10px; + opacity: 0; + + background: rgba(0,0,0,0.2); + // $gradient: rgba(0,0,0,0.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,rgba(255,255,255,0) 70%; + // background: -webkit-radial-gradient($gradient); + // background: -o-radial-gradient($gradient); + // background: -moz-radial-gradient($gradient); + // background: radial-gradient($gradient); + @include transition(all 0.7s ease-out); + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + @include transform(scale(0)); + pointer-events: none; + } + + // Waves Colors + &.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); + } + + &.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, .70); + } + &.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, .70); + } + &.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, .70); + } + &.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.70); + } + &.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.70); + } + &.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.70); + } + +} + +.waves-notransition { + @include transition(none #{"!important"}); +} + +.waves-circle { + @include transform(translateZ(0)); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); +} + +// .waves-button, +// .waves-button:hover, +// .waves-button:visited, +// .waves-button-input { +// white-space: nowrap; +// vertical-align: middle; +// cursor: pointer; +// border: none; +// outline: none; +// color: inherit; +// background-color: rgba(0, 0, 0, 0); +// font-size: 1em; +// line-height:1em; +// text-align: center; +// text-decoration: none; +// z-index: 1; +// } + +// .waves-button { +// padding: 0.85em 1.1em; +// border-radius: 0.2em; +// } + +// .waves-button-input { +// margin: 0; +// padding: 0.85em 1.1em; +// } + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; + + // &.waves-button { + // padding: 0; + // } + + .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; + } +} + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} + +// .waves-float { + // -webkit-mask-image: none; + // @include box-shadow(0px 1px 1.5px 1px rgba(0, 0, 0, 0.12)); + + // &:active { + // @include box-shadow(0px 8px 20px 1px rgba(0, 0, 0, 0.30)); +// } +// } + +.waves-block { + display: block; +} + +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/date_picker/_default.date.scss b/system/admin/static/editor/sass/components/date_picker/_default.date.scss new file mode 100644 index 0000000..1cd0f93 --- /dev/null +++ b/system/admin/static/editor/sass/components/date_picker/_default.date.scss @@ -0,0 +1,435 @@ +/* ========================================================================== + $BASE-DATE-PICKER + ========================================================================== */ +/** + * The picker box. + */ +.picker__box { + padding: 0 1em; +} +/** + * The header containing the month and year stuff. + */ +.picker__header { + text-align: center; + position: relative; + margin-top: .75em; +} +/** + * The month and year labels. + */ +.picker__month, +.picker__year { +// font-weight: 500; + display: inline-block; + margin-left: .25em; + margin-right: .25em; +} +/** + * The month and year selectors. + */ +.picker__select--month, +.picker__select--year { + + height: 2em; + padding: 0; + margin-left: .25em; + margin-right: .25em; +} + +// Modified +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; +} +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 25%; +} +.picker__select--month:focus, +.picker__select--year:focus { + border-color: $datepicker-focus; +} +/** + * The month navigation buttons. + */ +.picker__nav--prev, +.picker__nav--next { + position: absolute; + padding: .5em 1.25em; + width: 1em; + height: 1em; + box-sizing: content-box; + top: -0.25em; +} +//@media (min-width: 24.5em) { +// .picker__nav--prev, +// .picker__nav--next { +// top: -0.33em; +// } +//} +.picker__nav--prev { + left: -1em; + padding-right: 1.25em; +} +//@media (min-width: 24.5em) { +// .picker__nav--prev { +// padding-right: 1.5em; +// } +//} +.picker__nav--next { + right: -1em; + padding-left: 1.25em; +} +//@media (min-width: 24.5em) { +// .picker__nav--next { +// padding-left: 1.5em; +// } +//} + +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: none; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; +} +/** + * The calendar table of dates + */ +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: 1rem; + width: 100%; + margin-top: .75em; + margin-bottom: .5em; +} + + + +.picker__table th, .picker__table td { + text-align: center; +} + + + + + + +.picker__table td { + margin: 0; + padding: 0; +} +/** + * The weekday labels + */ +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999999; + font-weight: 500; + /* Increase the spacing a tad */ +} +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: .5em; + } +} +/** + * The days on the calendar + */ + +.picker__day--today { + position: relative; + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; + +} + +//.picker__day--today:before { +// content: " "; +// position: absolute; +// top: 2px; +// right: 2px; +// width: 0; +// height: 0; +// border-top: 0.5em solid #0059bc; +// border-left: .5em solid transparent; +//} +.picker__day--disabled:before { + border-top-color: #aaaaaa; +} + + +.picker__day--infocus:hover{ + cursor: pointer; + color: #000; + font-weight: 500; +} + +.picker__day--outfocus { + display: none; + padding: .75rem 0; + color: #fff; + +} +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; +// background: #b1dcfb; + font-weight: 500; +} + + +.picker__day--highlighted { +// border-color: #0089ec; +} +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + cursor: pointer; +// color: #000000; +// background: #b1dcfb; +// font-weight: 500; +} +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + + +// Circle background + border-radius: 50%; + @include transform(scale(.75)); + background: #0089ec; + color: #ffffff; +} +.picker__day--disabled, +.picker__day--disabled:hover, +.picker--focused .picker__day--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; +} +/** + * The footer containing the "today", "clear", and "close" buttons. + */ +.picker__footer { + text-align: center; + display: flex; + align-items: center; + justify-content: space-between; +} +.picker__button--today, +.picker__button--clear, +.picker__button--close { + border: 1px solid #ffffff; + background: #ffffff; + font-size: .8em; + padding: .66em 0; + font-weight: bold; + width: 33%; + display: inline-block; + vertical-align: bottom; +} +.picker__button--today:hover, +.picker__button--clear:hover, +.picker__button--close:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; +} +.picker__button--today:focus, +.picker__button--clear:focus, +.picker__button--close:focus { + background: #b1dcfb; + border-color: $datepicker-focus; + outline: none; +} +.picker__button--today:before, +.picker__button--clear:before, +.picker__button--close:before { + position: relative; + display: inline-block; + height: 0; +} +.picker__button--today:before, +.picker__button--clear:before { + content: " "; + margin-right: .45em; +} +.picker__button--today:before { + top: -0.05em; + width: 0; + border-top: 0.66em solid #0059bc; + border-left: .66em solid transparent; +} +.picker__button--clear:before { + top: -0.25em; + width: .66em; + border-top: 3px solid #ee2200; +} +.picker__button--close:before { + content: "\D7"; + top: -0.1em; + vertical-align: top; + font-size: 1.1em; + margin-right: .35em; + color: #777777; +} +.picker__button--today[disabled], +.picker__button--today[disabled]:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} +.picker__button--today[disabled]:before { + border-top-color: #aaaaaa; +} + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__box { + border-radius: 2px; + overflow: hidden; +} + +.picker__date-display { + text-align: center; + background-color: $datepicker-date-bg; + color: #fff; + padding-bottom: 15px; + font-weight: 300; +} + +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: $datepicker-selected-outfocus; +} + +.picker__weekday-display { + background-color: $datepicker-weekday-bg; + padding: 10px; + font-weight: 200; + letter-spacing: .5; + font-size: 1rem; + margin-bottom: 15px; +} + +.picker__month-display { + text-transform: uppercase; + font-size: 2rem; +} +.picker__day-display { + + font-size: 4.5rem; + font-weight: 400; +} +.picker__year-display { + font-size: 1.8rem; + color: $datepicker-year; +} + +.picker__box { + padding: 0; +} +.picker__calendar-container { + padding: 0 1rem; + + thead { + border: none; + } +} + +// Calendar +.picker__table { + margin-top: 0; + margin-bottom: .5em; +} + +.picker__day--infocus { + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; +} + +//Today style +.picker__day.picker__day--today { + color: $datepicker-selected; +} + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; +} + +// Table Header +.picker__weekday { + font-size: .9rem; +} + + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + // Circle background + border-radius: 50%; + @include transform(scale(.9)); + background-color: $datepicker-selected; + &.picker__day--outfocus { + background-color: $datepicker-selected-outfocus; + } + color: #ffffff; +} + +.picker__footer { + text-align: right; + padding: 5px 10px; +} + +// Materialize modified +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 1rem; + color: $datepicker-selected; +} + +//month nav buttons +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: 0.75em solid #676767; + width: 0; + height: 0; + display: block; + margin: 0 auto; +} +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #676767; +} +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: $datepicker-selected-outfocus; +} diff --git a/system/admin/static/editor/sass/components/date_picker/_default.scss b/system/admin/static/editor/sass/components/date_picker/_default.scss new file mode 100644 index 0000000..d96395f --- /dev/null +++ b/system/admin/static/editor/sass/components/date_picker/_default.scss @@ -0,0 +1,201 @@ +/* ========================================================================== + $BASE-PICKER + ========================================================================== */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000000; + position: absolute; + z-index: 10000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +/** + * The picker input element. + */ +.picker__input { + cursor: default; +} +/** + * When the picker is opened, the input element is "activated". + */ +.picker__input.picker__input--active { + border-color: #0089ec; +} +/** + * The holder is the only "scrollable" top-level container element. + */ +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +/** + * Make the holder and frame fullscreen. + */ +.picker__holder, +.picker__frame { + bottom: 0; + left: 0; + right: 0; + top: 100%; +} +/** + * The holder should overlay the entire screen. + */ +.picker__holder { + position: fixed; + -webkit-transition: background 0.15s ease-out, top 0s 0.15s; + -moz-transition: background 0.15s ease-out, top 0s 0.15s; + transition: background 0.15s ease-out, top 0s 0.15s; + -webkit-backface-visibility: hidden; +} +/** + * The frame that bounds the box contents of the picker. + */ +.picker__frame { + position: absolute; + margin: 0 auto; + min-width: 256px; + +// picker width + width: 300px; + max-height: 350px; + + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transition: all 0.15s ease-out; + -moz-transition: all 0.15s ease-out; + transition: all 0.15s ease-out; +} +@media (min-height: 28.875em) { + .picker__frame { + overflow: visible; + top: auto; + bottom: -100%; + max-height: 80%; + } +} +@media (min-height: 40.125em) { + .picker__frame { + margin-bottom: 7.5%; + } +} +/** + * The wrapper sets the stage to vertically align the box contents. + */ +.picker__wrap { + display: table; + width: 100%; + height: 100%; +} +@media (min-height: 28.875em) { + .picker__wrap { + display: block; + } +} +/** + * The box contains all the picker contents. + */ +.picker__box { + background: #ffffff; + display: table-cell; + vertical-align: middle; +} +//@media (min-height: 26.5em) { +// .picker__box { +//// font-size: 1.25em; +// } +//} +@media (min-height: 28.875em) { + .picker__box { + display: block; + +// picker header font-size +// font-size: 1rem; + + border: 1px solid #777777; + border-top-color: #898989; + border-bottom-width: 0; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + } +} +//@media (min-height: 40.125em) { +// .picker__box { +// font-size: 1.1rem; +// border-bottom-width: 1px; +// -webkit-border-radius: 5px; +// -moz-border-radius: 5px; +// border-radius: 5px; +// } +//} +/** + * When the picker opens... + */ +.picker--opened .picker__holder { + top: 0; + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; + zoom: 1; + background: rgba(0, 0, 0, 0.32); + -webkit-transition: background 0.15s ease-out; + -moz-transition: background 0.15s ease-out; + transition: background 0.15s ease-out; +} +.picker--opened .picker__frame { + top: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; +} +@media (min-height: 35.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: 20%auto; + } +} +/** + * For `large` screens, transform into an inline picker. + */ + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ + +.picker__input.picker__input--active { + border-color: color("blue", "lighten-5"); +} + +.picker__frame { + margin: 0 auto; + max-width: 325px; +} + +@media (min-height: 38.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; + } +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/date_picker/_default.time.scss b/system/admin/static/editor/sass/components/date_picker/_default.time.scss new file mode 100644 index 0000000..0b159c8 --- /dev/null +++ b/system/admin/static/editor/sass/components/date_picker/_default.time.scss @@ -0,0 +1,125 @@ +/* ========================================================================== + $BASE-TIME-PICKER + ========================================================================== */ +/** + * The list of times. + */ +.picker__list { + list-style: none; + padding: 0.75em 0 4.2em; + margin: 0; +} +/** + * The times on the clock. + */ +.picker__list-item { + border-bottom: 1px solid #dddddd; + border-top: 1px solid #dddddd; + margin-bottom: -1px; + position: relative; + background: #ffffff; + padding: .75em 1.25em; +} +@media (min-height: 46.75em) { + .picker__list-item { + padding: .5em 1em; + } +} +/* Hovered time */ +.picker__list-item:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; +} +/* Highlighted and hovered/focused time */ +.picker__list-item--highlighted { + border-color: #0089ec; + z-index: 10; +} +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + cursor: pointer; + color: #000000; + background: #b1dcfb; +} +/* Selected and hovered/focused time */ +.picker__list-item--selected, +.picker__list-item--selected:hover, +.picker--focused .picker__list-item--selected { + background: #0089ec; + color: #ffffff; + z-index: 10; +} +/* Disabled time */ +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; + border-color: #dddddd; + z-index: auto; +} +/** + * The clear button + */ +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: none; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666; +} +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000000; + background: #b1dcfb; + background: #ee2200; + border-color: #ee2200; + cursor: pointer; + color: #ffffff; + outline: none; +} +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: bold; +} +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; +} + +/* ========================================================================== + $DEFAULT-TIME-PICKER + ========================================================================== */ +/** + * The frame the bounds the time picker. + */ +.picker--time .picker__frame { + min-width: 256px; + max-width: 320px; +} +/** + * The picker box. + */ +.picker--time .picker__box { + font-size: 1em; + background: #f2f2f2; + padding: 0; +} +@media (min-height: 40.125em) { + .picker--time .picker__box { + margin-bottom: 5em; + } +} diff --git a/system/admin/static/editor/sass/materialNote.scss b/system/admin/static/editor/sass/materialNote.scss new file mode 100644 index 0000000..5faca9e --- /dev/null +++ b/system/admin/static/editor/sass/materialNote.scss @@ -0,0 +1,734 @@ +@import "components/color"; +@import "components/variables"; + +/* variables +=================================================================================*/ +$toolbarColor: color("grey", "lighten-2") !default; +$toolbarTextColor: color("grey", "darken-3") !default; + +$borderColor: color("grey", "base") !default; + +$firstButtonColor: color("grey", "lighten-2") !default; +$firstButtonHoverColor: color("grey", "base") !default; +$secondButtonColor: color("blue", "darken-4") !default; +$secondButtonHoverColor: color("blue", "base") !default; +$thirdButtonColor: color("red", "darken-4") !default; +$thirdButtonHoverColor: color("blue", "base") !default; + +$firstFocusColor: color("blue", "base") !default; +$secondFocusColor: color("grey", "base") !default; + +$selectionColor: color("grey", "darken-1") !default; + +$helpBackgroundColor: color("grey", "lighten-2") !default; + +// base unit for table dimension picker +$gridUnit: 26px; + + +.editorDialogs .modal, .note-editor .modal { + background-color: lighten($toolbarColor, 100%); + color: $toolbarTextColor; + z-index: 1057 !important; + backface-visibility: hidden; + + .input-field input:not([readonly]), .input-field input.datepicker { + border-color: $toolbarTextColor !important; + } + .input-field input:focus:not([readonly]), .input-field input.datepicker:focus, textarea.materialize-textarea:focus:not([readonly]) { + box-shadow: 0 1px 0 0 $firstFocusColor !important; + border-color: $firstFocusColor !important; + } + label, .input-field input:not([readonly]) + label, .input-field input.datepicker + label, .input-field .prefix, .note-editor + label { + color: $toolbarTextColor !important; + } + .input-field input:focus:not([readonly]) + label, .input-field input.datepicker:focus + label, .input-field .prefix.active, textarea.materialize-textarea:focus:not([readonly]) + label { + color: $firstFocusColor !important; + } + + .btn { + background-color: $secondButtonColor; + color: lighten($toolbarTextColor, 100%) !important; + } + .btn:hover { + background-color: lighten($secondButtonColor, 10%) !important; + } + + .btn.disabled { + background-color: darken($secondButtonColor, 15%) !important; + } + + .modal-footer { + background-color: darken($toolbarColor, 10%); + + .btnClose { + margin-right: 15px; + background-color: $thirdButtonColor; + } + + .btnClose:hover { + background-color: lighten($thirdButtonColor, 10%) !important; + } + } + + .canvasContainerEmpty { + border: solid 5px $firstFocusColor; + } +} + +//scrollbars +.note-editor .note-editable, .editorDialogs .modal-content, .note-editor .note-color-palette, .note-editor .note-codable, .modal.modal-fixed-footer .modal-content { + &::-webkit-scrollbar { + width: 17px !important; + } + &::-webkit-scrollbar-track { + background-color: $toolbarColor !important; + } + &::-webkit-scrollbar-thumb { + background-color: lighten($toolbarColor, 20%) !important; + } + &::-webkit-scrollbar-thumb:hover { + background-color: lighten($toolbarColor, 30%) !important; + } +} + +.note-editor { + position: relative; + border: { + left: 1px solid $toolbarColor; + bottom: 1px solid $toolbarColor; + right: 1px solid $toolbarColor; + } + + .img-circle { + border-radius: 50%; + } + + .img-rounded { + border-radius: 5%; + } + + .img-thumbnail { + border: solid 2px $toolbarColor; + height: 200px; + } + + .img-bordered { + border: solid 5px $toolbarColor; + } + + .btn:hover { + background-color: lighten($firstButtonColor, 10%) !important; + } + + .btn.active { + background-color: $firstFocusColor; + } + + .note-editable { + ul li { + list-style-type: square !important; + display: list-item; + list-style-position: inside; + } + } + + .note-dialog { + & > div { + display: none + } + .form-group { + margin-right: 0; + margin-left: 0 + } + .note-modal-form { + margin: 0 + } + .note-image-dialog .note-dropzone { + min-height: 100px; + margin-bottom: 10px; + font-size: 30px; + line-height: 4; + color: lightgray; + text-align: center; + border: 4px dashed lightgray + } + } + + .transparent { + opacity: 0; + } + + .note-resizebar { + background-color: $toolbarColor; + width: 100%; + height: 13px; + cursor: ns-resize; + padding-top: 1px; + + .note-icon-bar { + width: 20px; + margin: 2px auto; + border-top: 2px solid lighten($toolbarColor, 20%); + } + } + + .note-toolbar { + position: relative; + color: $toolbarTextColor; + background-color: $toolbarColor; + margin: 0; + z-index: 1052; + + ul { + padding: 0; + } + + .btn.disabled, button.disabled { + display: none; + } + + .dropdown { + cursor: pointer; + } + + .note-current-fontname { + min-width: 134px; + display: inline-block; + text-align: left; + } + } + + .note-handle { + .note-control-selection { + position: absolute; + display: none; + border: 2px solid $firstButtonColor; + + .note-control-selection-bg { + width: 100%; + height: 100%; + z-index: 3; + background-color: transparentize($selectionColor, 0.7); + } + + & > div { + position: absolute + } + .note-control-handle { + width: 7px; + height: 7px; + border: 1px solid black; + } + .note-control-holder { + width: 7px; + height: 7px; + border: 1px solid black; + } + .note-control-sizing { + width: 15px; + height: 15px; + background-color: $firstButtonColor; + z-index: 5; + cursor: se-resize; + } + .note-control-nw { + top: -5px; + left: -5px; + border-right: 0; + border-bottom: 0; + } + .note-control-ne { + top: -5px; + right: -5px; + border-bottom: 0; + border-left: none; + } + .note-control-sw { + bottom: -5px; + left: -5px; + border-top: 0; + border-right: 0; + } + .note-control-se { + right: -5px; + bottom: -5px; + } + .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 17px; + font-size: 15px; + color: $toolbarTextColor; + background-color: $firstButtonColor; + z-index: 5; + } + } + } +} + +.note-dialog .note-help-dialog { + color: $toolbarColor; + + h4 { + color: $toolbarTextColor; + } + + thead { + background-color: $firstFocusColor; + } + + tbody { + background-color: $helpBackgroundColor; + } +} + +.note-editor, .popover { + .btn-group { + display: inline-block; + margin-right: 10px; + position: relative; + + ul { + padding: 0; + } + + .closeLeft { + padding-right: 0 !important; + margin-right: 0 !important; + + i { + margin-right: 0 !important; + } + } + + i.left { + margin-right: 5px; + } + } + + .note-toolbar .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: $firstButtonColor; + } + + .btnSecond { + background-color: $secondButtonColor !important; + } + + .btnThird { + background-color: $thirdButtonColor !important; + } + + note-toolbar button, button, .note-toolbar .btn { + background-color: $firstButtonColor; + border: none; + height: 36px; + text-transform: uppercase; + color: $toolbarTextColor !important; + } + + [type="checkbox"]:checked + label:before, [type="checkbox"]:checked + label:before { + border-right-color: $secondButtonColor !important; + border-bottom-color: $secondButtonColor !important; + } + + .note-palette-title { + padding: 0 !important; + } + + .colorName { + display: inline-block; + color: $toolbarTextColor; + + @media #{$small-and-down} { + display: none; + } + } + + .note-color-palette { + line-height: 10px; + border: solid 3px $toolbarColor; + padding: 0 !important; + overflow-x: scroll; + overflow-y: hidden; + + .note-color-row { + padding: 0 !important; + min-width: 300px; + } + + button.note-color-btn { + width: 20px; + height: 20px; + padding: 0; + margin: 0; + } + + .note-color-btn:hover { + &:after { + position: absolute; + width: 30px; + height: 30px; + content: ""; + background-color: inherit; + margin-top: -15px; + margin-left: -15px; + } + } + } + + .note-dimension-picker { + overflow: hidden; + } + + .largeDropdown { + width: 290px; + } + + .dropdown-menu { + z-index: 1033; + + &.note-check { + min-width: 80px; + } + + label { + color: $toolbarTextColor !important; + } + } + + ul.dropdown-menu { + position: absolute; + top: 20px; + background-color: lighten($toolbarColor, 10%); + border: { + left: 3px solid $toolbarColor; + bottom: 3px solid $toolbarColor; + right: 3px solid $toolbarColor; + } + + &#colors { + width: 342px; + + .indicator { + width: 50%; + left: 0; + } + } + + .colorTable { + padding: 3px 0; + } + + .tabs { + background-color: $toolbarColor; + + &:hover { + background-color: $toolbarColor; + } + + .tab a, .tab a:hover { + color: $secondFocusColor; + } + + .indicator { + background-color: $secondFocusColor; + } + } + + li { + list-style-type: none; + padding: 0 !important; + + div { + padding: 3px 15px; + cursor: pointer; + } + } + } +} + +.note-popover .popover { + position: absolute; + max-width: none; + color: $toolbarTextColor; + + .arrow { + width: 0; + height: 0; + border-style: solid; + border-width: 0 10px 10px 10px; + border-color: transparent transparent $firstButtonColor transparent; + } + + .popover-content { + background-color: $firstButtonColor; + + & > a { + margin-left: 12px; + } + + a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle + } + + .arrow { + left: 20px + } + + .btn-group { + display: inline-block; + + .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: $firstButtonColor; + color: $toolbarTextColor !important; + } + } + } +} + +.note-popover .popover .popover-content .note-para .dropdown-menu, .note-toolbar .note-para .dropdown-menu { + min-width: 172px; + padding: 5px +} +.note-popover .popover .popover-content .note-para .dropdown-menu > div:first-child, .note-toolbar .note-para .dropdown-menu > div:first-child { + margin-right: 5px +} + + + + + + + +// the following is unchanged from original summernote css +.note-editor .note-dropzone { + position: absolute; + z-index: 100; + display: none; + color: #87cefa; + background-color: white; + border: 2px dashed #87cefa; + opacity: .95; + pointer-event: none +} +.note-editor .note-dropzone .note-dropzone-message { + display: table-cell; + font-size: 28px; + font-weight: bold; + text-align: center; + vertical-align: middle +} +.note-editor .note-dropzone.hover { + color: #098ddf; + border: 2px dashed #098ddf +} +.note-editor.dragover .note-dropzone { + display: table +} + +.note-editor.fullscreen { + position: fixed; + top: 0; + left: 0; + z-index: 2021; + width: 100% +} +.note-editor.fullscreen .note-editable { + background-color: white +} +.note-editor.fullscreen .note-resizebar { + display: none +} +.note-editor.codeview .note-editable { + display: none +} +.note-editor.codeview .note-codable { + display: block +} +.note-editor .note-statusbar { + background-color: #f5f5f5 +} +.note-editor .note-editable[contenteditable=true]:empty:not(:focus):before { + color: #a9a9a9; + content: attr(data-placeholder) +} +.note-editor .note-editable { + padding: 10px; + overflow: auto; + outline: 0 +} +.note-editor .note-editable[contenteditable="false"] { + background-color: #e5e5e5 +} +.note-editor .note-codable { + display: none; + width: 100%; + padding: 10px; + margin-bottom: 0; + font-family: Menlo, Monaco, monospace, sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + resize: none +} +.note-air-editor { + outline: 0 +} + +.note-popover .popover .popover-content, +.note-toolbar { + padding: 0; + margin: 0 +} +.note-popover .popover .popover-content > .btn-group, +.note-toolbar > .btn-group { + margin-top: 0; + margin-right: 5px; + margin-left: 0 +} +.note-popover .popover .popover-content .btn-group .note-table, +.note-toolbar .btn-group .note-table { + min-width: 0; + padding: 5px +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker, +.note-toolbar .btn-group .note-table .note-dimension-picker { + font-size: 18px +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher { + position: absolute!important; + z-index: 3; + width: $gridUnit * 10; + height:$gridUnit * 10; + cursor: pointer +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: $gridUnit * 12; + height: $gridUnit * 5; + background-size: 26px 26px; + background-image:repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), + repeating-linear-gradient(-90deg, transparent, transparent 4px, #fff 4px, #fff 26px); +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: $gridUnit; + height: $gridUnit; + background-size: 26px 26px; + background-image:repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), + repeating-linear-gradient(-90deg, transparent, transparent 4px, $firstFocusColor 4px, $firstFocusColor 26px); +} + +.note-popover .popover .popover-content .note-style h1, +.note-toolbar .note-style h1, +.note-popover .popover .popover-content .note-style h2, +.note-toolbar .note-style h2, +.note-popover .popover .popover-content .note-style h3, +.note-toolbar .note-style h3, +.note-popover .popover .popover-content .note-style h4, +.note-toolbar .note-style h4, +.note-popover .popover .popover-content .note-style h5, +.note-toolbar .note-style h5, +.note-popover .popover .popover-content .note-style h6, +.note-toolbar .note-style h6, +.note-popover .popover .popover-content .note-style blockquote, +.note-toolbar .note-style blockquote { + margin: 0 +} +.note-popover .popover .popover-content .note-color .dropdown-toggle, +.note-toolbar .note-color .dropdown-toggle { + width: 20px; + padding-left: 5px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group, +.note-toolbar .note-color .dropdown-menu .btn-group { + margin: 0 +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group:first-child, +.note-toolbar .note-color .dropdown-menu .btn-group:first-child { + margin: 0 5px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-palette-title, +.note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title { + margin: 2px 7px; + font-size: 12px; + text-align: center; + border-bottom: 1px solid #eee +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset { + padding: 0 3px; + margin: 3px; + font-size: 11px; + cursor: pointer; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-row, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-row { + height: 20px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset:hover, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover { + background: #eee +} +/*.note-popover .popover .popover-content .dropdown-menu, +.note-toolbar .dropdown-menu { + min-width: 90px +}*/ +.note-popover .popover .popover-content .dropdown-menu.right, +.note-toolbar .dropdown-menu.right { + right: 0; + left: auto +} +.note-popover .popover .popover-content .dropdown-menu.right::before, +.note-toolbar .dropdown-menu.right::before { + right: 9px; + left: auto!important +} +.note-popover .popover .popover-content .dropdown-menu.right::after, +.note-toolbar .dropdown-menu.right::after { + right: 10px; + left: auto!important +} +.note-popover .popover .popover-content .dropdown-menu.note-check li a i, +.note-toolbar .dropdown-menu.note-check li a i { + color: deepskyblue; + visibility: hidden +} +.note-popover .popover .popover-content .dropdown-menu.note-check li a.checked i, +.note-toolbar .dropdown-menu.note-check li a.checked i { + visibility: visible +} +.note-popover .popover .popover-content .note-fontsize-10, +.note-toolbar .note-fontsize-10 { + font-size: 10px +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/materialize.scss b/system/admin/static/editor/sass/materialize.scss new file mode 100644 index 0000000..4421631 --- /dev/null +++ b/system/admin/static/editor/sass/materialize.scss @@ -0,0 +1,38 @@ +@charset "UTF-8"; + +// Mixins +@import "components/prefixer"; +@import "components/mixins"; +@import "components/color"; + +// Variables; +@import "components/variables"; + +// Reset +@import "components/normalize"; + +// components +@import "components/global"; +@import "components/icons-material-design"; +@import "components/grid"; +@import "components/navbar"; +@import "components/roboto"; +@import "components/typography"; +@import "components/cards"; +@import "components/toast"; +@import "components/tabs"; +@import "components/tooltip"; +@import "components/buttons"; +@import "components/dropdown"; +@import "components/waves"; +@import "components/modal"; +@import "components/collapsible"; +@import "components/materialbox"; +@import "components/form"; +@import "components/table_of_contents"; +@import "components/sideNav"; +@import "components/preloader"; +@import "components/slider"; +@import "components/date_picker/default.scss"; +@import "components/date_picker/default.date.scss"; +@import "components/date_picker/default.time.scss";
\ No newline at end of file |